@csmart/ngc-smart-core 1.13.13 → 1.13.14

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 (46) hide show
  1. package/README.md +24 -24
  2. package/csmart-ngc-smart-core.d.ts +5 -5
  3. package/esm2020/csmart-ngc-smart-core.mjs +4 -4
  4. package/esm2020/lib/ngc-smart-core.module.mjs +97 -97
  5. package/esm2020/lib/smart-auth/smart-access-control-config.mjs +12 -12
  6. package/esm2020/lib/smart-auth/smart-access-control.directive.mjs +40 -40
  7. package/esm2020/lib/smart-auth/smart-auth.service.mjs +505 -505
  8. package/esm2020/lib/smart-auth/smart-authorization-guard.service.mjs +35 -35
  9. package/esm2020/lib/smart-auth/smart-error.component.mjs +37 -37
  10. package/esm2020/lib/smart-auth/smart-login-staff-resolver.service.mjs +59 -59
  11. package/esm2020/lib/smart-auth/smart-selected-offender-resolver.service.mjs +49 -49
  12. package/esm2020/lib/smart-navbar/smart-navbar-config.mjs +2 -2
  13. package/esm2020/lib/smart-navbar/smart-navbar.component.mjs +167 -166
  14. package/esm2020/lib/smart-navbar/smart-navbar.service.mjs +63 -63
  15. package/esm2020/lib/smart-offender-header/smart-offender-header.component.mjs +151 -151
  16. package/esm2020/lib/smart-offender-header/smart-offender-header.service.mjs +41 -41
  17. package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.mjs +25 -25
  18. package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options.component.mjs +78 -78
  19. package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options.service.mjs +132 -132
  20. package/esm2020/lib/smart-storage/smart-storage-model.mjs +30 -30
  21. package/esm2020/lib/smart-storage/xdm.service.mjs +158 -158
  22. package/esm2020/public-api.mjs +20 -20
  23. package/fesm2015/csmart-ngc-smart-core.mjs +1518 -1517
  24. package/fesm2015/csmart-ngc-smart-core.mjs.map +1 -1
  25. package/fesm2020/csmart-ngc-smart-core.mjs +1504 -1503
  26. package/fesm2020/csmart-ngc-smart-core.mjs.map +1 -1
  27. package/lib/ngc-smart-core.module.d.ts +20 -20
  28. package/lib/smart-auth/smart-access-control-config.d.ts +17 -17
  29. package/lib/smart-auth/smart-access-control.directive.d.ts +14 -14
  30. package/lib/smart-auth/smart-auth.service.d.ts +41 -41
  31. package/lib/smart-auth/smart-authorization-guard.service.d.ts +13 -13
  32. package/lib/smart-auth/smart-error.component.d.ts +17 -17
  33. package/lib/smart-auth/smart-login-staff-resolver.service.d.ts +13 -13
  34. package/lib/smart-auth/smart-selected-offender-resolver.service.d.ts +15 -15
  35. package/lib/smart-navbar/smart-navbar-config.d.ts +7 -7
  36. package/lib/smart-navbar/smart-navbar.component.d.ts +40 -40
  37. package/lib/smart-navbar/smart-navbar.service.d.ts +12 -12
  38. package/lib/smart-offender-header/smart-offender-header.component.d.ts +32 -32
  39. package/lib/smart-offender-header/smart-offender-header.service.d.ts +18 -18
  40. package/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.d.ts +11 -11
  41. package/lib/smart-staff-offender-options/smart-staff-offender-options.component.d.ts +22 -22
  42. package/lib/smart-staff-offender-options/smart-staff-offender-options.service.d.ts +19 -19
  43. package/lib/smart-storage/smart-storage-model.d.ts +58 -58
  44. package/lib/smart-storage/xdm.service.d.ts +42 -42
  45. package/package.json +1 -1
  46. package/public-api.d.ts +16 -16
@@ -1,166 +1,167 @@
1
- import { Component, Input, ViewChild, ViewEncapsulation, } from '@angular/core';
2
- import { MatTabGroup } from '@angular/material/tabs';
3
- import { MsalService } from '@azure/msal-angular';
4
- import { SmartNavbarService } from './smart-navbar.service';
5
- import { XdmService } from '../smart-storage/xdm.service';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "./smart-navbar.service";
8
- import * as i2 from "../smart-storage/xdm.service";
9
- import * as i3 from "@azure/msal-angular";
10
- import * as i4 from "@angular/material/tabs";
11
- import * as i5 from "@angular/material/button";
12
- import * as i6 from "@angular/common";
13
- export class SmartNavbarComponent {
14
- constructor(navbarConfigService, xdmService,
15
- // private zone: NgZone,
16
- authnService) {
17
- this.navbarConfigService = navbarConfigService;
18
- this.xdmService = xdmService;
19
- this.authnService = authnService;
20
- this.appModuleId = 'SMART';
21
- }
22
- ngOnChanges() {
23
- /*
24
- console.log(this.selectedTab);
25
- setTimeout(() => {
26
- this.tabGroup.selectedIndex = this.selectedTab;
27
- }, 1000);
28
- */
29
- }
30
- ngOnInit() {
31
- this.xdmService.getSelectedOffender().then((selectedOffender) => {
32
- this.selectedOffender =
33
- selectedOffender && selectedOffender.offenderId
34
- ? selectedOffender
35
- : null;
36
- });
37
- this.xdmService.getLoginStaff().then((loginStaff) => {
38
- // this.zone.run(() => {
39
- this.loginStaff = loginStaff ? loginStaff : null;
40
- // });
41
- });
42
- this.offenderSubscription = this.xdmService
43
- .getOffenderUpdate()
44
- .subscribe((selectedOffender) => {
45
- // this.zone.run(() => {
46
- this.selectedOffender = selectedOffender;
47
- // });
48
- });
49
- this.staffSubscription = this.xdmService
50
- .getStaffUpdate()
51
- .subscribe((loginStaff) => {
52
- // this.zone.run(() => {
53
- this.loginStaff = loginStaff;
54
- // });
55
- });
56
- this.navbarConfigService
57
- .getNavbarConfigs(this.serviceApiUrl)
58
- .subscribe((configs) => {
59
- this.navbarConfigs = configs.sort((a, b) => {
60
- if (a.displayOrder < b.displayOrder) {
61
- return -1;
62
- }
63
- else if (a.displayOrder > b.displayOrder) {
64
- return 1;
65
- }
66
- return 0;
67
- });
68
- });
69
- // this.isAuthenticated = this.authnService.getAccount() ? true : false;
70
- }
71
- ngOnDestroy() {
72
- this.offenderSubscription.unsubscribe();
73
- this.staffSubscription.unsubscribe();
74
- }
75
- logout() {
76
- this.xdmService.clearAll();
77
- this.authnService.logout();
78
- }
79
- get isAuthenticated() {
80
- return this.authnService.instance.getAllAccounts().length > 0;
81
- }
82
- getAppModuleUrl(config) {
83
- return config && this.selectedOffender && config.appModuleId === 'PPMAS'
84
- ? `${config.url}?skipAppMetadata=true&OffenderId=${this.selectedOffender.offenderId}`
85
- : config.url;
86
- }
87
- hasAppModulePermission(appModuleId) {
88
- if (this.loginStaff &&
89
- this.loginStaff.permissions &&
90
- this.loginStaff.permissions.length > 0) {
91
- return (this.loginStaff.permissions.findIndex((p) => p.appModuleId === appModuleId) > -1);
92
- }
93
- return false;
94
- }
95
- get hasExternalUserRole() {
96
- if (this.loginStaff &&
97
- this.loginStaff.roles &&
98
- this.loginStaff.roles.length > 0) {
99
- return this.loginStaff.roles.findIndex(this.isExternalRole) > -1;
100
- }
101
- return false;
102
- }
103
- checkDVIPPermission(config) {
104
- return ((config.appModuleId !== 'DVIP') || (config.appModuleId === "DVIP" && this.hasDVIPRole));
105
- }
106
- get hasDVIPRole() {
107
- if (this.loginStaff &&
108
- this.loginStaff.roles &&
109
- this.loginStaff.roles.length > 0) {
110
- return this.loginStaff.roles.findIndex(this.isDVIPRole) > -1;
111
- }
112
- return false;
113
- }
114
- isDVIPRole(role) {
115
- if (role.roleId == 'TSD' || role.roleId == 'TAD' || role.roleId == 'STSD' || role.roleId == 'BC') {
116
- return true;
117
- }
118
- return false;
119
- }
120
- checkVictimPermission(config) {
121
- return ((config.appModuleId !== 'VICTIM') || (config.appModuleId === "VICTIM" && this.hasVictimRole));
122
- }
123
- get hasVictimRole() {
124
- if (this.loginStaff &&
125
- this.loginStaff.roles &&
126
- this.loginStaff.roles.length > 0) {
127
- return this.loginStaff.roles.findIndex(this.isVictimRole) > -1;
128
- }
129
- return false;
130
- }
131
- isVictimRole(role) {
132
- if (role.roleId == 'BC' || role.roleId == 'VSP') {
133
- return true;
134
- }
135
- return false;
136
- }
137
- isExternalRole(role) {
138
- switch (role.roleId) {
139
- case 'EUDTL':
140
- case 'EUDUSM':
141
- case 'EUJDG':
142
- case 'EUMPD':
143
- case 'EUSOTV':
144
- case 'EUUSA2':
145
- case 'EUUSAO':
146
- case 'EUUSPC':
147
- return true;
148
- default:
149
- return false;
150
- }
151
- }
152
- }
153
- /** @nocollapse */ /** @nocollapse */ SmartNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarComponent, deps: [{ token: i1.SmartNavbarService }, { token: i2.XdmService }, { token: i3.MsalService }], target: i0.ɵɵFactoryTarget.Component });
154
- /** @nocollapse */ /** @nocollapse */ SmartNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: SmartNavbarComponent, selector: "app-smart-navbar", inputs: { serviceApiUrl: "serviceApiUrl", appModuleId: "appModuleId" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && \r\n (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n checkVictimPermission(config) &&\r\n checkDVIPPermission(config) &&\r\n isAuthenticated &&\r\n loginStaff \r\n \"\r\n label=\"config.name\"\r\n >\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a\r\n >\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"], components: [{ type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarComponent, decorators: [{
156
- type: Component,
157
- args: [{ selector: 'app-smart-navbar', encapsulation: ViewEncapsulation.None, template: "<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && \r\n (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n checkVictimPermission(config) &&\r\n checkDVIPPermission(config) &&\r\n isAuthenticated &&\r\n loginStaff \r\n \"\r\n label=\"config.name\"\r\n >\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a\r\n >\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"] }]
158
- }], ctorParameters: function () { return [{ type: i1.SmartNavbarService }, { type: i2.XdmService }, { type: i3.MsalService }]; }, propDecorators: { serviceApiUrl: [{
159
- type: Input
160
- }], appModuleId: [{
161
- type: Input
162
- }], tabGroup: [{
163
- type: ViewChild,
164
- args: ['tabs']
165
- }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NzbWFydC9uZ2Mtc21hcnQtY29yZS9zcmMvbGliL3NtYXJ0LW5hdmJhci9zbWFydC1uYXZiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtbmF2YmFyL3NtYXJ0LW5hdmJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUlULEtBQUssRUFFTCxTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7OztBQWMxRCxNQUFNLE9BQU8sb0JBQW9CO0lBWS9CLFlBQ1UsbUJBQXVDLEVBQ3ZDLFVBQXNCO0lBQzlCLHdCQUF3QjtJQUNoQixZQUF5QjtRQUh6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFFdEIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFkMUIsZ0JBQVcsR0FBRyxPQUFPLENBQUM7SUFlNUIsQ0FBQztJQUVKLFdBQVc7UUFDVDs7Ozs7VUFLRTtJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLGdCQUFnQjtnQkFDbkIs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b0JBQW9COzJJQUFwQixvQkFBb0IsdVBDN0JqQyx5N0VBMkRBOzJGRDlCYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUk7NEpBRzVCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDYSxRQUFRO3NCQUExQixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBJbnB1dCxcclxuICBOZ1pvbmUsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGlzRGV2TW9kZSxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcclxuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcclxuaW1wb3J0IHsgU21hcnROYXZiYXJDb25maWcgfSBmcm9tICcuL3NtYXJ0LW5hdmJhci1jb25maWcnO1xyXG5pbXBvcnQgeyBTbWFydE5hdmJhclNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LW5hdmJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWGRtU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2UveGRtLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFNlbGVjdGVkT2ZmZW5kZXIsXHJcbiAgTG9naW5TdGFmZixcclxuICBSb2xlLFxyXG59IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2Uvc21hcnQtc3RvcmFnZS1tb2RlbCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc21hcnQtbmF2YmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtbmF2YmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1uYXZiYXIuY29tcG9uZW50LmNzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydE5hdmJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHNlcnZpY2VBcGlVcmw6IHN0cmluZztcclxuICBASW5wdXQoKSBhcHBNb2R1bGVJZCA9ICdTTUFSVCc7XHJcbiAgQFZpZXdDaGlsZCgndGFicycpIHRhYkdyb3VwOiBNYXRUYWJHcm91cDtcclxuICBzZWxlY3RlZE9mZmVuZGVyOiBTZWxlY3RlZE9mZmVuZGVyO1xyXG4gIGxvZ2luU3RhZmY6IExvZ2luU3RhZmY7XHJcbiAgb2ZmZW5kZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBzdGFmZlN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIC8vIGlzQXV0aGVudGljYXRlZCA9IGZhbHNlO1xyXG5cclxuICBuYXZiYXJDb25maWdzOiBTbWFydE5hdmJhckNvbmZpZ1tdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmF2YmFyQ29uZmlnU2VydmljZTogU21hcnROYXZiYXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB4ZG1TZXJ2aWNlOiBYZG1TZXJ2aWNlLFxyXG4gICAgLy8gcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIGF1dGhuU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIC8qXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkVGFiKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSB0aGlzLnNlbGVjdGVkVGFiO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgICAqL1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0U2VsZWN0ZWRPZmZlbmRlcigpLnRoZW4oKHNlbGVjdGVkT2ZmZW5kZXIpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID1cclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyICYmIHNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZFxyXG4gICAgICAgICAgPyBzZWxlY3RlZE9mZmVuZGVyXHJcbiAgICAgICAgICA6IG51bGw7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0TG9naW5TdGFmZigpLnRoZW4oKGxvZ2luU3RhZmYpID0+IHtcclxuICAgICAgLy8gdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9naW5TdGFmZiA9IGxvZ2luU3RhZmYgPyBsb2dpblN0YWZmIDogbnVsbDtcclxuICAgICAgLy8gfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9mZmVuZGVyU3Vic2NyaXB0aW9uID0gdGhpcy54ZG1TZXJ2aWNlXHJcbiAgICAgIC5nZXRPZmZlbmRlclVwZGF0ZSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkT2ZmZW5kZXIpID0+IHtcclxuICAgICAgICAvLyB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBzZWxlY3RlZE9mZmVuZGVyO1xyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnN0YWZmU3Vic2NyaXB0aW9uID0gdGhpcy54ZG1TZXJ2aWNlXHJcbiAgICAgIC5nZXRTdGFmZlVwZGF0ZSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGxvZ2luU3RhZmYpID0+IHtcclxuICAgICAgICAvLyB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvZ2luU3RhZmYgPSBsb2dpblN0YWZmO1xyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLm5hdmJhckNvbmZpZ1NlcnZpY2VcclxuICAgICAgLmdldE5hdmJhckNvbmZpZ3ModGhpcy5zZXJ2aWNlQXBpVXJsKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb25maWdzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5uYXZiYXJDb25maWdzID0gY29uZmlncy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAoYS5kaXNwbGF5T3JkZXIgPCBiLmRpc3BsYXlPcmRlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGEuZGlzcGxheU9yZGVyID4gYi5kaXNwbGF5T3JkZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gdGhpcy5pc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLmF1dGhuU2VydmljZS5nZXRBY2NvdW50KCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMub2ZmZW5kZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc3RhZmZTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgIHRoaXMuYXV0aG5TZXJ2aWNlLmxvZ291dCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmF1dGhuU2VydmljZS5pbnN0YW5jZS5nZXRBbGxBY2NvdW50cygpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QXBwTW9kdWxlVXJsKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIHtcclxuICAgIHJldHVybiBjb25maWcgJiYgdGhpcy5zZWxlY3RlZE9mZmVuZGVyICYmIGNvbmZpZy5hcHBNb2R1bGVJZCA9PT0gJ1BQTUFTJ1xyXG4gICAgICA/IGAke2NvbmZpZy51cmx9P3NraXBBcHBNZXRhZGF0YT10cnVlJk9mZmVuZGVySWQ9JHt0aGlzLnNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZH1gXHJcbiAgICAgIDogY29uZmlnLnVybDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYXNBcHBNb2R1bGVQZXJtaXNzaW9uKGFwcE1vZHVsZUlkKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZiAmJlxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYucGVybWlzc2lvbnMgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zLmxlbmd0aCA+IDBcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMubG9naW5TdGFmZi5wZXJtaXNzaW9ucy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAocCkgPT4gcC5hcHBNb2R1bGVJZCA9PT0gYXBwTW9kdWxlSWQsXHJcbiAgICAgICAgKSA+IC0xXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNFeHRlcm5hbFVzZXJSb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc0V4dGVybmFsUm9sZSkgPiAtMTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja0RWSVBQZXJtaXNzaW9uKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIDogYm9vbGVhbntcclxuICAgIHJldHVybiAoKGNvbmZpZy5hcHBNb2R1bGVJZCAhPT0gJ0RWSVAnKSB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIkRWSVBcIiAmJiB0aGlzLmhhc0RWSVBSb2xlKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhc0RWSVBSb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc0RWSVBSb2xlKSA+IC0xO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RWSVBSb2xlKHJvbGU6IFJvbGUpe1xyXG4gICAgaWYocm9sZS5yb2xlSWQgPT0gJ1RTRCcgfHwgcm9sZS5yb2xlSWQgPT0gJ1RBRCcgfHwgcm9sZS5yb2xlSWQgPT0gJ1NUU0QnIHx8IHJvbGUucm9sZUlkID09ICdCQycpe1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrVmljdGltUGVybWlzc2lvbihjb25maWc6IFNtYXJ0TmF2YmFyQ29uZmlnKSA6IGJvb2xlYW57XHJcbiAgICByZXR1cm4gKChjb25maWcuYXBwTW9kdWxlSWQgIT09ICdWSUNUSU0nKSB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIlZJQ1RJTVwiICYmIHRoaXMuaGFzVmljdGltUm9sZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNWaWN0aW1Sb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc1ZpY3RpbVJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVmljdGltUm9sZShyb2xlOiBSb2xlKXtcclxuICAgIGlmKHJvbGUucm9sZUlkID09ICdCQycgfHwgcm9sZS5yb2xlSWQgPT0gJ1ZTUCcpe1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0V4dGVybmFsUm9sZShyb2xlOiBSb2xlKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGUucm9sZUlkKSB7XHJcbiAgICAgIGNhc2UgJ0VVRFRMJzpcclxuICAgICAgY2FzZSAnRVVEVVNNJzpcclxuICAgICAgY2FzZSAnRVVKREcnOlxyXG4gICAgICBjYXNlICdFVU1QRCc6XHJcbiAgICAgIGNhc2UgJ0VVU09UVic6XHJcbiAgICAgIGNhc2UgJ0VVVVNBMic6XHJcbiAgICAgIGNhc2UgJ0VVVVNBTyc6XHJcbiAgICAgIGNhc2UgJ0VVVVNQQyc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gRVVEVExcclxuLy8gRVVEVVNNXHJcbi8vIEVVSkRHXHJcblxyXG4vLyBFVU1QRFxyXG4vLyBFVVNPVFZcclxuLy8gRVVVU0EyXHJcblxyXG4vLyBFVVVTQU9cclxuLy8gRVVVU1BDXHJcbiIsIjwhLS1cclxuPGEgY2xhc3M9XCJzbWFydC1uYXZiYXItdG9nZ2xlIG9wZW5cIiBocmVmPVwiI25hdlwiPlxyXG4gIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5tZW51PC9pPlxyXG48L2E+XHJcblxyXG48bmF2IGlkPVwibmF2XCIgcm9sZT1cIm5hdmlnYXRpb25cIiBjbGFzcz1cInNtYXJ0LW5hdmJhci1jb250YWluZXJcIj5cclxuICA8YSBjbGFzcz1cInNtYXJ0LW5hdmJhci10b2dnbGUgY2xvc2VcIiBocmVmPVwiI1wiPlxyXG4gICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmNsb3NlPC9pPlxyXG4gIDwvYT5cclxuXHJcbiAgPHNwYW4gKm5nRm9yPVwibGV0IGNvbmZpZyBvZiBuYXZiYXJDb25maWdzXCI+XHJcbiAgICA8YSBtYXQtYnV0dG9uIGNsYXNzPVwic21hcnQtbmF2YmFyLWl0ZW1cIiBcclxuICAgICAgKm5nSWY9XCIoY29uZmlnLm9mZmVuZGVyU3BlY2lmaWNGbGFnID09PSBmYWxzZSB8fCBzZWxlY3RlZE9mZmVuZGVyKSAmJiBpc0F1dGhlbnRpY2F0ZWQgJiYgbG9naW5TdGFmZlwiIGhyZWY9XCJ7e2NvbmZpZy51cmx9fVwiPnt7Y29uZmlnLm5hbWV9fTwvYT5cclxuICA8L3NwYW4+XHJcblxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInNtYXJ0LW5hdmJhci1pdGVtXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVUaGVtZVwiPlNldCBUaGVtZTwvYnV0dG9uPlxyXG4gIDxtYXQtbWVudSAjbWVudVRoZW1lPVwibWF0TWVudVwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvblNldFRoZW1lKCdibHVlLXRoZW1lJylcIj5CbHVlPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2V0VGhlbWUoJ3JlZC10aGVtZScpXCI+UmVkPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2V0VGhlbWUoJ2dyZWVuLXRoZW1lJylcIj5HcmVlbjwvYnV0dG9uPlxyXG4gIDwvbWF0LW1lbnU+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwic21hcnQtbmF2YmFyLWl0ZW0gc21hcnQtbmF2YmFyLWxhc3QtaXRlbVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcclxuICAgICpuZ0lmPVwiaXNBdXRoZW50aWNhdGVkICYmIGxvZ2luU3RhZmZcIj57e2xvZ2luU3RhZmYuZmlyc3ROYW1lICsgJyAnICsgbG9naW5TdGFmZi5sYXN0TmFtZX19PC9idXR0b24+XHJcbiAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtPlByb2ZpbGU8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwibG9nb3V0KClcIj5TaWduIE91dDwvYnV0dG9uPlxyXG4gIDwvbWF0LW1lbnU+XHJcbjwvbmF2PlxyXG4tLT5cclxuXHJcbjwhLS0gPG5hdiBtYXQtdGFiLW5hdi1iYXI+XHJcbiAgPGEgbWF0LXRhYi1saW5rIG1hdC1mbGF0LWJ1dHRvbiAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIG5hdmJhckNvbmZpZ3NcIiBbYWN0aXZlXT1cImFwcE1vZHVsZUlkID09IGNvbmZpZy5hcHBNb2R1bGVJZFwiIGhyZWY9XCJ7e2NvbmZpZy51cmx9fVwiPnt7Y29uZmlnLm5hbWV9fTwvYT5cclxuPC9uYXY+IC0tPlxyXG5cclxuPG1hdC10YWItZ3JvdXAgY2xhc3M9XCJuYXYtdGFiLWdyb3VwXCIgW3NlbGVjdGVkSW5kZXhdPVwibnVsbFwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbmZpZyBvZiBuYXZiYXJDb25maWdzXCI+XHJcbiAgICA8bWF0LXRhYlxyXG4gICAgICAqbmdJZj1cIlxyXG4gICAgICAgICgoaGFzRXh0ZXJuYWxVc2VyUm9sZSAmJiBoYXNBcHBNb2R1bGVQZXJtaXNzaW9uKGNvbmZpZy5hcHBNb2R1bGVJZCkpIHx8XHJcbiAgICAgICAgKCFoYXNFeHRlcm5hbFVzZXJSb2xlICYmIFxyXG4gICAgICAgIChjb25maWcub2ZmZW5kZXJTcGVjaWZpY0ZsYWcgPT09IGZhbHNlIHx8IHNlbGVjdGVkT2ZmZW5kZXIpKSkgJiZcclxuICAgICAgICBjaGVja1ZpY3RpbVBlcm1pc3Npb24oY29uZmlnKSAmJlxyXG4gICAgICAgIGNoZWNrRFZJUFBlcm1pc3Npb24oY29uZmlnKSAmJlxyXG4gICAgICAgIGlzQXV0aGVudGljYXRlZCAmJlxyXG4gICAgICAgIGxvZ2luU3RhZmYgXHJcbiAgICAgIFwiXHJcbiAgICAgIGxhYmVsPVwiY29uZmlnLm5hbWVcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cclxuICAgICAgICA8YVxyXG4gICAgICAgICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdtYWluLW1lbnUtYWN0aXZlJzogYXBwTW9kdWxlSWQgPT0gY29uZmlnLmFwcE1vZHVsZUlkIH1cIlxyXG4gICAgICAgICAgW2hyZWZdPVwiZ2V0QXBwTW9kdWxlVXJsKGNvbmZpZylcIlxyXG4gICAgICAgICAgPnt7IGNvbmZpZy5uYW1lIH19PC9hXHJcbiAgICAgICAgPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9tYXQtdGFiPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L21hdC10YWItZ3JvdXA+XHJcbiJdfQ==
1
+ import { Component, Input, ViewChild, ViewEncapsulation, } from '@angular/core';
2
+ import { MatTabGroup } from '@angular/material/tabs';
3
+ import { MsalService } from '@azure/msal-angular';
4
+ import { SmartNavbarService } from './smart-navbar.service';
5
+ import { XdmService } from '../smart-storage/xdm.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./smart-navbar.service";
8
+ import * as i2 from "../smart-storage/xdm.service";
9
+ import * as i3 from "@azure/msal-angular";
10
+ import * as i4 from "@angular/material/tabs";
11
+ import * as i5 from "@angular/material/button";
12
+ import * as i6 from "@angular/common";
13
+ export class SmartNavbarComponent {
14
+ constructor(navbarConfigService, xdmService,
15
+ // private zone: NgZone,
16
+ authnService) {
17
+ this.navbarConfigService = navbarConfigService;
18
+ this.xdmService = xdmService;
19
+ this.authnService = authnService;
20
+ this.appModuleId = 'SMART';
21
+ }
22
+ ngOnChanges() {
23
+ /*
24
+ console.log(this.selectedTab);
25
+ setTimeout(() => {
26
+ this.tabGroup.selectedIndex = this.selectedTab;
27
+ }, 1000);
28
+ */
29
+ }
30
+ ngOnInit() {
31
+ this.xdmService.getSelectedOffender().then((selectedOffender) => {
32
+ this.selectedOffender =
33
+ selectedOffender && selectedOffender.offenderId
34
+ ? selectedOffender
35
+ : null;
36
+ });
37
+ this.xdmService.getLoginStaff().then((loginStaff) => {
38
+ // this.zone.run(() => {
39
+ this.loginStaff = loginStaff ? loginStaff : null;
40
+ // });
41
+ });
42
+ this.offenderSubscription = this.xdmService
43
+ .getOffenderUpdate()
44
+ .subscribe((selectedOffender) => {
45
+ // this.zone.run(() => {
46
+ this.selectedOffender = selectedOffender;
47
+ // });
48
+ });
49
+ this.staffSubscription = this.xdmService
50
+ .getStaffUpdate()
51
+ .subscribe((loginStaff) => {
52
+ // this.zone.run(() => {
53
+ this.loginStaff = loginStaff;
54
+ // });
55
+ });
56
+ this.navbarConfigService
57
+ .getNavbarConfigs(this.serviceApiUrl)
58
+ .subscribe((configs) => {
59
+ this.navbarConfigs = configs.sort((a, b) => {
60
+ if (a.displayOrder < b.displayOrder) {
61
+ return -1;
62
+ }
63
+ else if (a.displayOrder > b.displayOrder) {
64
+ return 1;
65
+ }
66
+ return 0;
67
+ });
68
+ });
69
+ // this.isAuthenticated = this.authnService.getAccount() ? true : false;
70
+ }
71
+ ngOnDestroy() {
72
+ this.offenderSubscription.unsubscribe();
73
+ this.staffSubscription.unsubscribe();
74
+ }
75
+ logout() {
76
+ this.xdmService.clearAll();
77
+ this.authnService.logout();
78
+ }
79
+ get isAuthenticated() {
80
+ return this.authnService.instance.getAllAccounts().length > 0;
81
+ }
82
+ getAppModuleUrl(config) {
83
+ return config && this.selectedOffender && config.appModuleId === 'PPMAS'
84
+ // ? `${config.url}?skipAppMetadata=true&OffenderId=${this.selectedOffender.offenderId}`
85
+ ? `${config.url}&OffenderId=${this.selectedOffender.offenderId}`
86
+ : config.url;
87
+ }
88
+ hasAppModulePermission(appModuleId) {
89
+ if (this.loginStaff &&
90
+ this.loginStaff.permissions &&
91
+ this.loginStaff.permissions.length > 0) {
92
+ return (this.loginStaff.permissions.findIndex((p) => p.appModuleId === appModuleId) > -1);
93
+ }
94
+ return false;
95
+ }
96
+ get hasExternalUserRole() {
97
+ if (this.loginStaff &&
98
+ this.loginStaff.roles &&
99
+ this.loginStaff.roles.length > 0) {
100
+ return this.loginStaff.roles.findIndex(this.isExternalRole) > -1;
101
+ }
102
+ return false;
103
+ }
104
+ checkDVIPPermission(config) {
105
+ return ((config.appModuleId !== 'DVIP') || (config.appModuleId === "DVIP" && this.hasDVIPRole));
106
+ }
107
+ get hasDVIPRole() {
108
+ if (this.loginStaff &&
109
+ this.loginStaff.roles &&
110
+ this.loginStaff.roles.length > 0) {
111
+ return this.loginStaff.roles.findIndex(this.isDVIPRole) > -1;
112
+ }
113
+ return false;
114
+ }
115
+ isDVIPRole(role) {
116
+ if (role.roleId == 'TSD' || role.roleId == 'TAD' || role.roleId == 'STSD' || role.roleId == 'BC') {
117
+ return true;
118
+ }
119
+ return false;
120
+ }
121
+ checkVictimPermission(config) {
122
+ return ((config.appModuleId !== 'VICTIM') || (config.appModuleId === "VICTIM" && this.hasVictimRole));
123
+ }
124
+ get hasVictimRole() {
125
+ if (this.loginStaff &&
126
+ this.loginStaff.roles &&
127
+ this.loginStaff.roles.length > 0) {
128
+ return this.loginStaff.roles.findIndex(this.isVictimRole) > -1;
129
+ }
130
+ return false;
131
+ }
132
+ isVictimRole(role) {
133
+ if (role.roleId == 'BC' || role.roleId == 'VSP') {
134
+ return true;
135
+ }
136
+ return false;
137
+ }
138
+ isExternalRole(role) {
139
+ switch (role.roleId) {
140
+ case 'EUDTL':
141
+ case 'EUDUSM':
142
+ case 'EUJDG':
143
+ case 'EUMPD':
144
+ case 'EUSOTV':
145
+ case 'EUUSA2':
146
+ case 'EUUSAO':
147
+ case 'EUUSPC':
148
+ return true;
149
+ default:
150
+ return false;
151
+ }
152
+ }
153
+ }
154
+ /** @nocollapse */ /** @nocollapse */ SmartNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarComponent, deps: [{ token: i1.SmartNavbarService }, { token: i2.XdmService }, { token: i3.MsalService }], target: i0.ɵɵFactoryTarget.Component });
155
+ /** @nocollapse */ /** @nocollapse */ SmartNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: SmartNavbarComponent, selector: "app-smart-navbar", inputs: { serviceApiUrl: "serviceApiUrl", appModuleId: "appModuleId" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\n <i class=\"material-icons\">menu</i>\n</a>\n\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\n <a class=\"smart-navbar-toggle close\" href=\"#\">\n <i class=\"material-icons\">close</i>\n </a>\n\n <span *ngFor=\"let config of navbarConfigs\">\n <a mat-button class=\"smart-navbar-item\" \n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\n </span>\n\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\n <mat-menu #menuTheme=\"matMenu\">\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\n </mat-menu>\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\n </mat-menu>\n</nav>\n-->\n\n<!-- <nav mat-tab-nav-bar>\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\n</nav> -->\n\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\n <ng-container *ngFor=\"let config of navbarConfigs\">\n <mat-tab\n *ngIf=\"\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\n (!hasExternalUserRole && \n (config.offenderSpecificFlag === false || selectedOffender))) &&\n checkVictimPermission(config) &&\n checkDVIPPermission(config) &&\n isAuthenticated &&\n loginStaff \n \"\n label=\"config.name\"\n >\n <ng-template mat-tab-label>\n <a\n mat-flat-button\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\n [href]=\"getAppModuleUrl(config)\"\n >{{ config.name }}</a\n >\n </ng-template>\n </mat-tab>\n </ng-container>\n</mat-tab-group>\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"], components: [{ type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarComponent, decorators: [{
157
+ type: Component,
158
+ args: [{ selector: 'app-smart-navbar', encapsulation: ViewEncapsulation.None, template: "<!--\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\n <i class=\"material-icons\">menu</i>\n</a>\n\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\n <a class=\"smart-navbar-toggle close\" href=\"#\">\n <i class=\"material-icons\">close</i>\n </a>\n\n <span *ngFor=\"let config of navbarConfigs\">\n <a mat-button class=\"smart-navbar-item\" \n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\n </span>\n\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\n <mat-menu #menuTheme=\"matMenu\">\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\n </mat-menu>\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\n </mat-menu>\n</nav>\n-->\n\n<!-- <nav mat-tab-nav-bar>\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\n</nav> -->\n\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\n <ng-container *ngFor=\"let config of navbarConfigs\">\n <mat-tab\n *ngIf=\"\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\n (!hasExternalUserRole && \n (config.offenderSpecificFlag === false || selectedOffender))) &&\n checkVictimPermission(config) &&\n checkDVIPPermission(config) &&\n isAuthenticated &&\n loginStaff \n \"\n label=\"config.name\"\n >\n <ng-template mat-tab-label>\n <a\n mat-flat-button\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\n [href]=\"getAppModuleUrl(config)\"\n >{{ config.name }}</a\n >\n </ng-template>\n </mat-tab>\n </ng-container>\n</mat-tab-group>\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"] }]
159
+ }], ctorParameters: function () { return [{ type: i1.SmartNavbarService }, { type: i2.XdmService }, { type: i3.MsalService }]; }, propDecorators: { serviceApiUrl: [{
160
+ type: Input
161
+ }], appModuleId: [{
162
+ type: Input
163
+ }], tabGroup: [{
164
+ type: ViewChild,
165
+ args: ['tabs']
166
+ }] } });
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NzbWFydC9uZ2Mtc21hcnQtY29yZS9zcmMvbGliL3NtYXJ0LW5hdmJhci9zbWFydC1uYXZiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtbmF2YmFyL3NtYXJ0LW5hdmJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUlULEtBQUssRUFFTCxTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7OztBQWMxRCxNQUFNLE9BQU8sb0JBQW9CO0lBWS9CLFlBQ1UsbUJBQXVDLEVBQ3ZDLFVBQXNCO0lBQzlCLHdCQUF3QjtJQUNoQixZQUF5QjtRQUh6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFFdEIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFkMUIsZ0JBQVcsR0FBRyxPQUFPLENBQUM7SUFlNUIsQ0FBQztJQUVKLFdBQVc7UUFDVDs7Ozs7VUFLRTtJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLGdCQUFnQjtnQkFDbkIs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QUM7O3VKQXBMVSxvQkFBb0I7MklBQXBCLG9CQUFvQix1UEM3QmpDLG0wRUEyREE7MkZEOUJhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSTs0SkFHNUIsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNhLFFBQVE7c0JBQTFCLFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgVmlld0NoaWxkLFxuICBpc0Rldk1vZGUsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gJ0BhenVyZS9tc2FsLWFuZ3VsYXInO1xuaW1wb3J0IHsgU21hcnROYXZiYXJDb25maWcgfSBmcm9tICcuL3NtYXJ0LW5hdmJhci1jb25maWcnO1xuaW1wb3J0IHsgU21hcnROYXZiYXJTZXJ2aWNlIH0gZnJvbSAnLi9zbWFydC1uYXZiYXIuc2VydmljZSc7XG5pbXBvcnQgeyBYZG1TZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtc3RvcmFnZS94ZG0uc2VydmljZSc7XG5pbXBvcnQge1xuICBTZWxlY3RlZE9mZmVuZGVyLFxuICBMb2dpblN0YWZmLFxuICBSb2xlLFxufSBmcm9tICcuLi9zbWFydC1zdG9yYWdlL3NtYXJ0LXN0b3JhZ2UtbW9kZWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zbWFydC1uYXZiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtbmF2YmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtbmF2YmFyLmNvbXBvbmVudC5jc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU21hcnROYXZiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgc2VydmljZUFwaVVybDogc3RyaW5nO1xuICBASW5wdXQoKSBhcHBNb2R1bGVJZCA9ICdTTUFSVCc7XG4gIEBWaWV3Q2hpbGQoJ3RhYnMnKSB0YWJHcm91cDogTWF0VGFiR3JvdXA7XG4gIHNlbGVjdGVkT2ZmZW5kZXI6IFNlbGVjdGVkT2ZmZW5kZXI7XG4gIGxvZ2luU3RhZmY6IExvZ2luU3RhZmY7XG4gIG9mZmVuZGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHN0YWZmU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIC8vIGlzQXV0aGVudGljYXRlZCA9IGZhbHNlO1xuXG4gIG5hdmJhckNvbmZpZ3M6IFNtYXJ0TmF2YmFyQ29uZmlnW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuYXZiYXJDb25maWdTZXJ2aWNlOiBTbWFydE5hdmJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB4ZG1TZXJ2aWNlOiBYZG1TZXJ2aWNlLFxuICAgIC8vIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgYXV0aG5TZXJ2aWNlOiBNc2FsU2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8qXG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZFRhYik7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSB0aGlzLnNlbGVjdGVkVGFiO1xuICAgIH0sIDEwMDApO1xuICAgICovXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0U2VsZWN0ZWRPZmZlbmRlcigpLnRoZW4oKHNlbGVjdGVkT2ZmZW5kZXIpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciA9XG4gICAgICAgIHNlbGVjdGVkT2ZmZW5kZXIgJiYgc2VsZWN0ZWRPZmZlbmRlci5vZmZlbmRlcklkXG4gICAgICAgICAgPyBzZWxlY3RlZE9mZmVuZGVyXG4gICAgICAgICAgOiBudWxsO1xuICAgIH0pO1xuXG4gICAgdGhpcy54ZG1TZXJ2aWNlLmdldExvZ2luU3RhZmYoKS50aGVuKChsb2dpblN0YWZmKSA9PiB7XG4gICAgICAvLyB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMubG9naW5TdGFmZiA9IGxvZ2luU3RhZmYgPyBsb2dpblN0YWZmIDogbnVsbDtcbiAgICAgIC8vIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vZmZlbmRlclN1YnNjcmlwdGlvbiA9IHRoaXMueGRtU2VydmljZVxuICAgICAgLmdldE9mZmVuZGVyVXBkYXRlKClcbiAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkT2ZmZW5kZXIpID0+IHtcbiAgICAgICAgLy8gdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciA9IHNlbGVjdGVkT2ZmZW5kZXI7XG4gICAgICAgIC8vIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN0YWZmU3Vic2NyaXB0aW9uID0gdGhpcy54ZG1TZXJ2aWNlXG4gICAgICAuZ2V0U3RhZmZVcGRhdGUoKVxuICAgICAgLnN1YnNjcmliZSgobG9naW5TdGFmZikgPT4ge1xuICAgICAgICAvLyB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2dpblN0YWZmID0gbG9naW5TdGFmZjtcbiAgICAgICAgLy8gfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMubmF2YmFyQ29uZmlnU2VydmljZVxuICAgICAgLmdldE5hdmJhckNvbmZpZ3ModGhpcy5zZXJ2aWNlQXBpVXJsKVxuICAgICAgLnN1YnNjcmliZSgoY29uZmlncykgPT4ge1xuICAgICAgICB0aGlzLm5hdmJhckNvbmZpZ3MgPSBjb25maWdzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICBpZiAoYS5kaXNwbGF5T3JkZXIgPCBiLmRpc3BsYXlPcmRlcikge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYS5kaXNwbGF5T3JkZXIgPiBiLmRpc3BsYXlPcmRlcikge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgLy8gdGhpcy5pc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLmF1dGhuU2VydmljZS5nZXRBY2NvdW50KCkgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9mZmVuZGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdGFmZlN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGxvZ291dCgpOiB2b2lkIHtcbiAgICB0aGlzLnhkbVNlcnZpY2UuY2xlYXJBbGwoKTtcbiAgICB0aGlzLmF1dGhuU2VydmljZS5sb2dvdXQoKTtcbiAgfVxuXG4gIGdldCBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aG5TZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKCkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBcHBNb2R1bGVVcmwoY29uZmlnOiBTbWFydE5hdmJhckNvbmZpZykge1xuICAgIHJldHVybiBjb25maWcgJiYgdGhpcy5zZWxlY3RlZE9mZmVuZGVyICYmIGNvbmZpZy5hcHBNb2R1bGVJZCA9PT0gJ1BQTUFTJ1xuICAgIC8vICA/IGAke2NvbmZpZy51cmx9P3NraXBBcHBNZXRhZGF0YT10cnVlJk9mZmVuZGVySWQ9JHt0aGlzLnNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZH1gXG4gICAgICA/IGAke2NvbmZpZy51cmx9Jk9mZmVuZGVySWQ9JHt0aGlzLnNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZH1gXG4gICAgICA6IGNvbmZpZy51cmw7XG4gIH1cblxuICBwdWJsaWMgaGFzQXBwTW9kdWxlUGVybWlzc2lvbihhcHBNb2R1bGVJZCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubG9naW5TdGFmZiAmJlxuICAgICAgdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zICYmXG4gICAgICB0aGlzLmxvZ2luU3RhZmYucGVybWlzc2lvbnMubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zLmZpbmRJbmRleChcbiAgICAgICAgICAocCkgPT4gcC5hcHBNb2R1bGVJZCA9PT0gYXBwTW9kdWxlSWQsXG4gICAgICAgICkgPiAtMVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0V4dGVybmFsVXNlclJvbGUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5sb2dpblN0YWZmICYmXG4gICAgICB0aGlzLmxvZ2luU3RhZmYucm9sZXMgJiZcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2dpblN0YWZmLnJvbGVzLmZpbmRJbmRleCh0aGlzLmlzRXh0ZXJuYWxSb2xlKSA+IC0xO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tEVklQUGVybWlzc2lvbihjb25maWc6IFNtYXJ0TmF2YmFyQ29uZmlnKSA6IGJvb2xlYW57XG4gICAgcmV0dXJuICgoY29uZmlnLmFwcE1vZHVsZUlkICE9PSAnRFZJUCcpIHx8IChjb25maWcuYXBwTW9kdWxlSWQgPT09IFwiRFZJUFwiICYmIHRoaXMuaGFzRFZJUFJvbGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzRFZJUFJvbGUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5sb2dpblN0YWZmICYmXG4gICAgICB0aGlzLmxvZ2luU3RhZmYucm9sZXMgJiZcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2dpblN0YWZmLnJvbGVzLmZpbmRJbmRleCh0aGlzLmlzRFZJUFJvbGUpID4gLTE7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEVklQUm9sZShyb2xlOiBSb2xlKXtcbiAgICBpZihyb2xlLnJvbGVJZCA9PSAnVFNEJyB8fCByb2xlLnJvbGVJZCA9PSAnVEFEJyB8fCByb2xlLnJvbGVJZCA9PSAnU1RTRCcgfHwgcm9sZS5yb2xlSWQgPT0gJ0JDJyl7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tWaWN0aW1QZXJtaXNzaW9uKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIDogYm9vbGVhbntcbiAgICByZXR1cm4gKChjb25maWcuYXBwTW9kdWxlSWQgIT09ICdWSUNUSU0nKSB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIlZJQ1RJTVwiICYmIHRoaXMuaGFzVmljdGltUm9sZSkpO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNWaWN0aW1Sb2xlKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubG9naW5TdGFmZiAmJlxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXG4gICAgICB0aGlzLmxvZ2luU3RhZmYucm9sZXMubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc1ZpY3RpbVJvbGUpID4gLTE7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNWaWN0aW1Sb2xlKHJvbGU6IFJvbGUpe1xuICAgIGlmKHJvbGUucm9sZUlkID09ICdCQycgfHwgcm9sZS5yb2xlSWQgPT0gJ1ZTUCcpe1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0V4dGVybmFsUm9sZShyb2xlOiBSb2xlKSB7XG4gICAgc3dpdGNoIChyb2xlLnJvbGVJZCkge1xuICAgICAgY2FzZSAnRVVEVEwnOlxuICAgICAgY2FzZSAnRVVEVVNNJzpcbiAgICAgIGNhc2UgJ0VVSkRHJzpcbiAgICAgIGNhc2UgJ0VVTVBEJzpcbiAgICAgIGNhc2UgJ0VVU09UVic6XG4gICAgICBjYXNlICdFVVVTQTInOlxuICAgICAgY2FzZSAnRVVVU0FPJzpcbiAgICAgIGNhc2UgJ0VVVVNQQyc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vLyBFVURUTFxuLy8gRVVEVVNNXG4vLyBFVUpER1xuXG4vLyBFVU1QRFxuLy8gRVVTT1RWXG4vLyBFVVVTQTJcblxuLy8gRVVVU0FPXG4vLyBFVVVTUENcbiIsIjwhLS1cbjxhIGNsYXNzPVwic21hcnQtbmF2YmFyLXRvZ2dsZSBvcGVuXCIgaHJlZj1cIiNuYXZcIj5cbiAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPm1lbnU8L2k+XG48L2E+XG5cbjxuYXYgaWQ9XCJuYXZcIiByb2xlPVwibmF2aWdhdGlvblwiIGNsYXNzPVwic21hcnQtbmF2YmFyLWNvbnRhaW5lclwiPlxuICA8YSBjbGFzcz1cInNtYXJ0LW5hdmJhci10b2dnbGUgY2xvc2VcIiBocmVmPVwiI1wiPlxuICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5jbG9zZTwvaT5cbiAgPC9hPlxuXG4gIDxzcGFuICpuZ0Zvcj1cImxldCBjb25maWcgb2YgbmF2YmFyQ29uZmlnc1wiPlxuICAgIDxhIG1hdC1idXR0b24gY2xhc3M9XCJzbWFydC1uYXZiYXItaXRlbVwiIFxuICAgICAgKm5nSWY9XCIoY29uZmlnLm9mZmVuZGVyU3BlY2lmaWNGbGFnID09PSBmYWxzZSB8fCBzZWxlY3RlZE9mZmVuZGVyKSAmJiBpc0F1dGhlbnRpY2F0ZWQgJiYgbG9naW5TdGFmZlwiIGhyZWY9XCJ7e2NvbmZpZy51cmx9fVwiPnt7Y29uZmlnLm5hbWV9fTwvYT5cbiAgPC9zcGFuPlxuXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInNtYXJ0LW5hdmJhci1pdGVtXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVUaGVtZVwiPlNldCBUaGVtZTwvYnV0dG9uPlxuICA8bWF0LW1lbnUgI21lbnVUaGVtZT1cIm1hdE1lbnVcIj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2V0VGhlbWUoJ2JsdWUtdGhlbWUnKVwiPkJsdWU8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2V0VGhlbWUoJ3JlZC10aGVtZScpXCI+UmVkPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvblNldFRoZW1lKCdncmVlbi10aGVtZScpXCI+R3JlZW48L2J1dHRvbj5cbiAgPC9tYXQtbWVudT5cbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwic21hcnQtbmF2YmFyLWl0ZW0gc21hcnQtbmF2YmFyLWxhc3QtaXRlbVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgICAqbmdJZj1cImlzQXV0aGVudGljYXRlZCAmJiBsb2dpblN0YWZmXCI+e3tsb2dpblN0YWZmLmZpcnN0TmFtZSArICcgJyArIGxvZ2luU3RhZmYubGFzdE5hbWV9fTwvYnV0dG9uPlxuICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtPlByb2ZpbGU8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImxvZ291dCgpXCI+U2lnbiBPdXQ8L2J1dHRvbj5cbiAgPC9tYXQtbWVudT5cbjwvbmF2PlxuLS0+XG5cbjwhLS0gPG5hdiBtYXQtdGFiLW5hdi1iYXI+XG4gIDxhIG1hdC10YWItbGluayBtYXQtZmxhdC1idXR0b24gKm5nRm9yPVwibGV0IGNvbmZpZyBvZiBuYXZiYXJDb25maWdzXCIgW2FjdGl2ZV09XCJhcHBNb2R1bGVJZCA9PSBjb25maWcuYXBwTW9kdWxlSWRcIiBocmVmPVwie3tjb25maWcudXJsfX1cIj57e2NvbmZpZy5uYW1lfX08L2E+XG48L25hdj4gLS0+XG5cbjxtYXQtdGFiLWdyb3VwIGNsYXNzPVwibmF2LXRhYi1ncm91cFwiIFtzZWxlY3RlZEluZGV4XT1cIm51bGxcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIG5hdmJhckNvbmZpZ3NcIj5cbiAgICA8bWF0LXRhYlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgKChoYXNFeHRlcm5hbFVzZXJSb2xlICYmIGhhc0FwcE1vZHVsZVBlcm1pc3Npb24oY29uZmlnLmFwcE1vZHVsZUlkKSkgfHxcbiAgICAgICAgKCFoYXNFeHRlcm5hbFVzZXJSb2xlICYmIFxuICAgICAgICAoY29uZmlnLm9mZmVuZGVyU3BlY2lmaWNGbGFnID09PSBmYWxzZSB8fCBzZWxlY3RlZE9mZmVuZGVyKSkpICYmXG4gICAgICAgIGNoZWNrVmljdGltUGVybWlzc2lvbihjb25maWcpICYmXG4gICAgICAgIGNoZWNrRFZJUFBlcm1pc3Npb24oY29uZmlnKSAmJlxuICAgICAgICBpc0F1dGhlbnRpY2F0ZWQgJiZcbiAgICAgICAgbG9naW5TdGFmZiBcbiAgICAgIFwiXG4gICAgICBsYWJlbD1cImNvbmZpZy5uYW1lXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgPGFcbiAgICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdtYWluLW1lbnUtYWN0aXZlJzogYXBwTW9kdWxlSWQgPT0gY29uZmlnLmFwcE1vZHVsZUlkIH1cIlxuICAgICAgICAgIFtocmVmXT1cImdldEFwcE1vZHVsZVVybChjb25maWcpXCJcbiAgICAgICAgICA+e3sgY29uZmlnLm5hbWUgfX08L2FcbiAgICAgICAgPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L21hdC10YWI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9tYXQtdGFiLWdyb3VwPlxuIl19
@@ -1,63 +1,63 @@
1
- import { Injectable, isDevMode } from '@angular/core';
2
- import { HttpClient } from '@angular/common/http';
3
- import { map } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common/http";
6
- export class SmartNavbarService {
7
- constructor(http) {
8
- this.http = http;
9
- }
10
- /*
11
- public getNavbarConfigs(): SmartNavbarConfig[] {
12
- this.configs = [
13
- {appModuleId: 'SMART', name: 'SMART', url: 'http://localhost:4200', offenderSpecific: false, displayOrder: 1 },
14
- {appModuleId: 'OFFENDER', name: 'Offender', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 2 },
15
- {appModuleId: 'SPRVSN', name: 'Supervision', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 3 },
16
- ];
17
-
18
- return this.configs;
19
- }
20
- */
21
- /*
22
- public getNavbarConfigs(serviceApiUrl: string): Observable<SmartNavbarConfig[]> {
23
- return this.http.get<SmartNavbarConfig[]>(serviceApiUrl + '/AppModules');
24
- }
25
- */
26
- getNavbarConfigs(serviceApiUrl) {
27
- const queryString = `
28
- {
29
- findAppModules {
30
- data {
31
- appModuleId
32
- name
33
- url
34
- offenderSpecificFlag
35
- displayOrder
36
- }
37
- }
38
- }`;
39
- /*
40
- const httpHeaders = new HttpHeaders({
41
- 'Content-Type': 'application/json',
42
- 'Cache-Control': 'no-cache'
43
- });
44
- const options = {
45
- headers: httpHeaders
46
- };
47
- */
48
- return this.http
49
- .post(serviceApiUrl, { query: queryString })
50
- .pipe(map(({ data }) => {
51
- if (isDevMode()) {
52
- console.log(data);
53
- }
54
- return data.findAppModules.data;
55
- }));
56
- }
57
- }
58
- /** @nocollapse */ /** @nocollapse */ SmartNavbarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
59
- /** @nocollapse */ /** @nocollapse */ SmartNavbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarService });
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarService, decorators: [{
61
- type: Injectable
62
- }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmF2YmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jc21hcnQvbmdjLXNtYXJ0LWNvcmUvc3JjL2xpYi9zbWFydC1uYXZiYXIvc21hcnQtbmF2YmFyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBS3JDLE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFHLENBQUM7SUFFeEM7Ozs7Ozs7Ozs7TUFVRTtJQUNGOzs7O01BSUU7SUFFSyxnQkFBZ0IsQ0FDckIsYUFBcUI7UUFFckIsTUFBTSxXQUFXLEdBQUc7Ozs7Ozs7Ozs7O1VBV2QsQ0FBQztRQUVQOzs7Ozs7OztVQVFFO1FBRUYsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLElBQUksQ0FBTSxhQUFhLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUM7YUFDaEQsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNmLElBQUksU0FBUyxFQUFFLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQjtZQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7O3FKQXpEVSxrQkFBa0I7eUpBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgU21hcnROYXZiYXJDb25maWcgfSBmcm9tICcuL3NtYXJ0LW5hdmJhci1jb25maWcnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU21hcnROYXZiYXJTZXJ2aWNlIHtcclxuICBjb25maWdzOiBTbWFydE5hdmJhckNvbmZpZ1tdO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cclxuXHJcbiAgLypcclxuICBwdWJsaWMgZ2V0TmF2YmFyQ29uZmlncygpOiBTbWFydE5hdmJhckNvbmZpZ1tdIHtcclxuICAgICAgdGhpcy5jb25maWdzID0gW1xyXG4gICAgICAgICAge2FwcE1vZHVsZUlkOiAnU01BUlQnLCBuYW1lOiAnU01BUlQnLCB1cmw6ICdodHRwOi8vbG9jYWxob3N0OjQyMDAnLCBvZmZlbmRlclNwZWNpZmljOiBmYWxzZSwgZGlzcGxheU9yZGVyOiAxIH0sXHJcbiAgICAgICAgICB7YXBwTW9kdWxlSWQ6ICdPRkZFTkRFUicsIG5hbWU6ICdPZmZlbmRlcicsIHVybDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMCcsIG9mZmVuZGVyU3BlY2lmaWM6IHRydWUsIGRpc3BsYXlPcmRlcjogMiB9LFxyXG4gICAgICAgICAge2FwcE1vZHVsZUlkOiAnU1BSVlNOJywgbmFtZTogJ1N1cGVydmlzaW9uJywgdXJsOiAnaHR0cDovL2xvY2FsaG9zdDo0MjAwJywgb2ZmZW5kZXJTcGVjaWZpYzogdHJ1ZSwgZGlzcGxheU9yZGVyOiAzIH0sXHJcbiAgICAgIF07XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5jb25maWdzO1xyXG4gIH1cclxuICAqL1xyXG4gIC8qXHJcbiAgcHVibGljIGdldE5hdmJhckNvbmZpZ3Moc2VydmljZUFwaVVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTbWFydE5hdmJhckNvbmZpZ1tdPiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFNtYXJ0TmF2YmFyQ29uZmlnW10+KHNlcnZpY2VBcGlVcmwgKyAnL0FwcE1vZHVsZXMnKTtcclxuICB9XHJcbiAgKi9cclxuXHJcbiAgcHVibGljIGdldE5hdmJhckNvbmZpZ3MoXHJcbiAgICBzZXJ2aWNlQXBpVXJsOiBzdHJpbmcsXHJcbiAgKTogT2JzZXJ2YWJsZTxTbWFydE5hdmJhckNvbmZpZ1tdPiB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGBcclxuICAgICAgICB7XHJcbiAgICAgICAgICBmaW5kQXBwTW9kdWxlcyB7XHJcbiAgICAgICAgICAgIGRhdGEge1xyXG4gICAgICAgICAgICAgIGFwcE1vZHVsZUlkXHJcbiAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICAgIHVybFxyXG4gICAgICAgICAgICAgIG9mZmVuZGVyU3BlY2lmaWNGbGFnXHJcbiAgICAgICAgICAgICAgZGlzcGxheU9yZGVyXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9YDtcclxuXHJcbiAgICAvKlxyXG4gICAgY29uc3QgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnQ2FjaGUtQ29udHJvbCc6ICduby1jYWNoZSdcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGVyczogaHR0cEhlYWRlcnNcclxuICAgIH07XHJcbiAgICAqL1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihzZXJ2aWNlQXBpVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHsgZGF0YSB9KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gZGF0YS5maW5kQXBwTW9kdWxlcy5kYXRhO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
1
+ import { Injectable, isDevMode } from '@angular/core';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { map } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ export class SmartNavbarService {
7
+ constructor(http) {
8
+ this.http = http;
9
+ }
10
+ /*
11
+ public getNavbarConfigs(): SmartNavbarConfig[] {
12
+ this.configs = [
13
+ {appModuleId: 'SMART', name: 'SMART', url: 'http://localhost:4200', offenderSpecific: false, displayOrder: 1 },
14
+ {appModuleId: 'OFFENDER', name: 'Offender', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 2 },
15
+ {appModuleId: 'SPRVSN', name: 'Supervision', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 3 },
16
+ ];
17
+
18
+ return this.configs;
19
+ }
20
+ */
21
+ /*
22
+ public getNavbarConfigs(serviceApiUrl: string): Observable<SmartNavbarConfig[]> {
23
+ return this.http.get<SmartNavbarConfig[]>(serviceApiUrl + '/AppModules');
24
+ }
25
+ */
26
+ getNavbarConfigs(serviceApiUrl) {
27
+ const queryString = `
28
+ {
29
+ findAppModules {
30
+ data {
31
+ appModuleId
32
+ name
33
+ url
34
+ offenderSpecificFlag
35
+ displayOrder
36
+ }
37
+ }
38
+ }`;
39
+ /*
40
+ const httpHeaders = new HttpHeaders({
41
+ 'Content-Type': 'application/json',
42
+ 'Cache-Control': 'no-cache'
43
+ });
44
+ const options = {
45
+ headers: httpHeaders
46
+ };
47
+ */
48
+ return this.http
49
+ .post(serviceApiUrl, { query: queryString })
50
+ .pipe(map(({ data }) => {
51
+ if (isDevMode()) {
52
+ console.log(data);
53
+ }
54
+ return data.findAppModules.data;
55
+ }));
56
+ }
57
+ }
58
+ /** @nocollapse */ /** @nocollapse */ SmartNavbarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
59
+ /** @nocollapse */ /** @nocollapse */ SmartNavbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarService });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarService, decorators: [{
61
+ type: Injectable
62
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmF2YmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jc21hcnQvbmdjLXNtYXJ0LWNvcmUvc3JjL2xpYi9zbWFydC1uYXZiYXIvc21hcnQtbmF2YmFyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBS3JDLE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFHLENBQUM7SUFFeEM7Ozs7Ozs7Ozs7TUFVRTtJQUNGOzs7O01BSUU7SUFFSyxnQkFBZ0IsQ0FDckIsYUFBcUI7UUFFckIsTUFBTSxXQUFXLEdBQUc7Ozs7Ozs7Ozs7O1VBV2QsQ0FBQztRQUVQOzs7Ozs7OztVQVFFO1FBRUYsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLElBQUksQ0FBTSxhQUFhLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUM7YUFDaEQsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNmLElBQUksU0FBUyxFQUFFLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQjtZQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7O3FKQXpEVSxrQkFBa0I7eUpBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTbWFydE5hdmJhckNvbmZpZyB9IGZyb20gJy4vc21hcnQtbmF2YmFyLWNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTbWFydE5hdmJhclNlcnZpY2Uge1xuICBjb25maWdzOiBTbWFydE5hdmJhckNvbmZpZ1tdO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgLypcbiAgcHVibGljIGdldE5hdmJhckNvbmZpZ3MoKTogU21hcnROYXZiYXJDb25maWdbXSB7XG4gICAgICB0aGlzLmNvbmZpZ3MgPSBbXG4gICAgICAgICAge2FwcE1vZHVsZUlkOiAnU01BUlQnLCBuYW1lOiAnU01BUlQnLCB1cmw6ICdodHRwOi8vbG9jYWxob3N0OjQyMDAnLCBvZmZlbmRlclNwZWNpZmljOiBmYWxzZSwgZGlzcGxheU9yZGVyOiAxIH0sXG4gICAgICAgICAge2FwcE1vZHVsZUlkOiAnT0ZGRU5ERVInLCBuYW1lOiAnT2ZmZW5kZXInLCB1cmw6ICdodHRwOi8vbG9jYWxob3N0OjQyMDAnLCBvZmZlbmRlclNwZWNpZmljOiB0cnVlLCBkaXNwbGF5T3JkZXI6IDIgfSxcbiAgICAgICAgICB7YXBwTW9kdWxlSWQ6ICdTUFJWU04nLCBuYW1lOiAnU3VwZXJ2aXNpb24nLCB1cmw6ICdodHRwOi8vbG9jYWxob3N0OjQyMDAnLCBvZmZlbmRlclNwZWNpZmljOiB0cnVlLCBkaXNwbGF5T3JkZXI6IDMgfSxcbiAgICAgIF07XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3M7XG4gIH1cbiAgKi9cbiAgLypcbiAgcHVibGljIGdldE5hdmJhckNvbmZpZ3Moc2VydmljZUFwaVVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTbWFydE5hdmJhckNvbmZpZ1tdPiB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxTbWFydE5hdmJhckNvbmZpZ1tdPihzZXJ2aWNlQXBpVXJsICsgJy9BcHBNb2R1bGVzJyk7XG4gIH1cbiAgKi9cblxuICBwdWJsaWMgZ2V0TmF2YmFyQ29uZmlncyhcbiAgICBzZXJ2aWNlQXBpVXJsOiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8U21hcnROYXZiYXJDb25maWdbXT4ge1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYFxuICAgICAgICB7XG4gICAgICAgICAgZmluZEFwcE1vZHVsZXMge1xuICAgICAgICAgICAgZGF0YSB7XG4gICAgICAgICAgICAgIGFwcE1vZHVsZUlkXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICAgIG9mZmVuZGVyU3BlY2lmaWNGbGFnXG4gICAgICAgICAgICAgIGRpc3BsYXlPcmRlclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfWA7XG5cbiAgICAvKlxuICAgIGNvbnN0IGh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAnQ2FjaGUtQ29udHJvbCc6ICduby1jYWNoZSdcbiAgICB9KTtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogaHR0cEhlYWRlcnNcbiAgICB9O1xuICAgICovXG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxhbnk+KHNlcnZpY2VBcGlVcmwsIHsgcXVlcnk6IHF1ZXJ5U3RyaW5nIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh7IGRhdGEgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBkYXRhLmZpbmRBcHBNb2R1bGVzLmRhdGE7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxufVxuIl19