aril 1.1.92 → 1.1.93

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.
@@ -3,11 +3,15 @@ import { Routes } from '@angular/router';
3
3
  import { AppsDTO, ExtensionConfig, PluginConfig, PluginMenuItem } from './interfaces';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class MicroAppService {
6
- private router;
6
+ private readonly router;
7
+ private readonly keycloak;
8
+ private userRoles;
7
9
  init(httpClient: HttpClient, hostAPI: string): import("rxjs").Observable<AppsDTO>;
8
10
  buildRoutes(options: PluginConfig[]): Routes;
9
11
  setMenuItems(items: PluginMenuItem[]): void;
10
12
  setPlugins(items: Record<string, ExtensionConfig>): void;
13
+ private filterMenuItemsByRole;
14
+ private hasPermission;
11
15
  static ɵfac: i0.ɵɵFactoryDeclaration<MicroAppService, never>;
12
16
  static ɵprov: i0.ɵɵInjectableDeclaration<MicroAppService>;
13
17
  }
@@ -33,6 +33,7 @@ export type PluginConfig = WebComponentWrapperOptions & {
33
33
  id?: string;
34
34
  remoteName: string;
35
35
  shadowDomPassive: boolean;
36
+ permittedRoles?: string[];
36
37
  };
37
38
  export interface MenuItemAction {
38
39
  method?: 'GET' | 'POST';
@@ -48,7 +49,7 @@ export interface PluginMenuItem {
48
49
  [languageCode: string]: string;
49
50
  };
50
51
  items?: PluginMenuItem[];
51
- permittedRole?: string;
52
+ permittedRoles?: string[];
52
53
  action?: MenuItemAction;
53
54
  separator?: boolean;
54
55
  root?: boolean;
@@ -0,0 +1,3 @@
1
+ import { PluginMenuItem } from './interfaces';
2
+ export declare function setRoutePermissions(menuItems: PluginMenuItem[]): void;
3
+ export declare function getRoutePermissions(url: string): string[] | undefined;
@@ -1,22 +1,33 @@
1
1
  import { Injectable, inject, isDevMode } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { WebComponentWrapper, startsWith } from '@angular-architects/module-federation-tools';
4
+ import { KeycloakService } from 'keycloak-angular';
4
5
  import { catchError, of, tap } from 'rxjs';
5
- import { NotFoundComponent } from 'aril/util/custom_pages';
6
+ import { ForbiddenComponent, NotFoundComponent } from 'aril/util/custom_pages';
6
7
  import { AuthGuard } from './auth.guard';
8
+ import { setRoutePermissions } from './route-permissions';
7
9
  import { ShadowDOMWrapperComponent } from './showdowDOMWrapper';
8
10
  import * as i0 from "@angular/core";
9
11
  export class MicroAppService {
10
12
  constructor() {
11
13
  this.router = inject(Router);
14
+ this.keycloak = inject(KeycloakService);
15
+ this.userRoles = [];
12
16
  }
13
17
  init(httpClient, hostAPI) {
18
+ this.userRoles = this.keycloak.getUserRoles();
14
19
  return httpClient
15
20
  .get(isDevMode() ? './assets/local-configs/app.local.json' : hostAPI + '/ui-sidebar-configs')
16
21
  .pipe(tap((apps) => {
22
+ setRoutePermissions(apps.menuItems);
17
23
  const routes = this.buildRoutes([...apps.modules, ...apps.plugins]);
18
- this.router.resetConfig([...this.router.config, ...routes, { path: '**', component: NotFoundComponent }]);
19
- this.setMenuItems(apps.menuItems);
24
+ this.router.resetConfig([
25
+ ...this.router.config,
26
+ ...routes,
27
+ { path: 'forbidden', component: ForbiddenComponent },
28
+ { path: '**', component: NotFoundComponent }
29
+ ]);
30
+ this.setMenuItems(this.filterMenuItemsByRole(apps.menuItems));
20
31
  this.setPlugins(apps.extensions);
21
32
  }), catchError((err) => {
22
33
  console.log('Error Micro Apps Loading', err);
@@ -43,6 +54,28 @@ export class MicroAppService {
43
54
  setPlugins(items) {
44
55
  globalThis.pluginJson = items || {};
45
56
  }
57
+ filterMenuItemsByRole(items) {
58
+ return items.reduce((acc, item) => {
59
+ if (!this.hasPermission(item.permittedRoles)) {
60
+ return acc;
61
+ }
62
+ const filteredItem = { ...item };
63
+ if (filteredItem.items?.length) {
64
+ filteredItem.items = this.filterMenuItemsByRole(filteredItem.items);
65
+ if (!filteredItem.items.length && !filteredItem.routerLink) {
66
+ return acc;
67
+ }
68
+ }
69
+ acc.push(filteredItem);
70
+ return acc;
71
+ }, []);
72
+ }
73
+ hasPermission(permittedRoles) {
74
+ if (!permittedRoles?.length) {
75
+ return true;
76
+ }
77
+ return permittedRoles.some((role) => this.userRoles.includes(role));
78
+ }
46
79
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MicroAppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
47
80
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MicroAppService, providedIn: 'root' }); }
48
81
  }
@@ -50,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
50
83
  type: Injectable,
51
84
  args: [{ providedIn: 'root' }]
52
85
  }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9hcHBzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ04sbUJBQW1CLEVBRW5CLFVBQVUsRUFDVixNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUdoRSxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVTLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0EwQ2hDO0lBeENBLElBQUksQ0FBQyxVQUFzQixFQUFFLE9BQWU7UUFDM0MsT0FBTyxVQUFVO2FBQ2YsR0FBRyxDQUFVLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDO2FBQ3JHLElBQUksQ0FDSixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNaLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUVwRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDYixDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUF1QjtRQUNsQyxNQUFNLE1BQU0sR0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDOUMsT0FBTztnQkFDTixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQ3ZDLFNBQVMsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyx5QkFBeUI7Z0JBQ3JGLElBQUksRUFBRSxPQUFxQztnQkFDM0MsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDO2FBQ3hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUF1QjtRQUM3QixVQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztZQUNuQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUU7WUFDaEcsR0FBRyxLQUFLO1NBQ1IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFzQztRQUMxQyxVQUFXLENBQUMsVUFBVSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDNUMsQ0FBQzs4R0ExQ1csZUFBZTtrSEFBZixlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHtcclxuXHRXZWJDb21wb25lbnRXcmFwcGVyLFxyXG5cdFdlYkNvbXBvbmVudFdyYXBwZXJPcHRpb25zLFxyXG5cdHN0YXJ0c1dpdGhcclxufSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgTm90Rm91bmRDb21wb25lbnQgfSBmcm9tICdhcmlsL3V0aWwvY3VzdG9tX3BhZ2VzJztcclxuXHJcbmltcG9ydCB7IEF1dGhHdWFyZCB9IGZyb20gJy4vYXV0aC5ndWFyZCc7XHJcbmltcG9ydCB7IEFwcHNEVE8sIEV4dGVuc2lvbkNvbmZpZywgUGx1Z2luQ29uZmlnLCBQbHVnaW5NZW51SXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFNoYWRvd0RPTVdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL3Nob3dkb3dET01XcmFwcGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBNaWNyb0FwcFNlcnZpY2Uge1xyXG5cdHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG5cdGluaXQoaHR0cENsaWVudDogSHR0cENsaWVudCwgaG9zdEFQSTogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gaHR0cENsaWVudFxyXG5cdFx0XHQuZ2V0PEFwcHNEVE8+KGlzRGV2TW9kZSgpID8gJy4vYXNzZXRzL2xvY2FsLWNvbmZpZ3MvYXBwLmxvY2FsLmpzb24nIDogaG9zdEFQSSArICcvdWktc2lkZWJhci1jb25maWdzJylcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0dGFwKChhcHBzKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCByb3V0ZXMgPSB0aGlzLmJ1aWxkUm91dGVzKFsuLi5hcHBzLm1vZHVsZXMsIC4uLmFwcHMucGx1Z2luc10pO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMucm91dGVyLnJlc2V0Q29uZmlnKFsuLi50aGlzLnJvdXRlci5jb25maWcsIC4uLnJvdXRlcywgeyBwYXRoOiAnKionLCBjb21wb25lbnQ6IE5vdEZvdW5kQ29tcG9uZW50IH1dKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0TWVudUl0ZW1zKGFwcHMubWVudUl0ZW1zKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0UGx1Z2lucyhhcHBzLmV4dGVuc2lvbnMpO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0Vycm9yIE1pY3JvIEFwcHMgTG9hZGluZycsIGVycik7XHJcblx0XHRcdFx0XHRyZXR1cm4gb2YoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpO1xyXG5cdH1cclxuXHJcblx0YnVpbGRSb3V0ZXMob3B0aW9uczogUGx1Z2luQ29uZmlnW10pOiBSb3V0ZXMge1xyXG5cdFx0Y29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBvcHRpb25zLm1hcCgob3B0aW9ucykgPT4ge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdG1hdGNoZXI6IHN0YXJ0c1dpdGgob3B0aW9ucy5yZW1vdGVOYW1lKSxcclxuXHRcdFx0XHRjb21wb25lbnQ6IG9wdGlvbnMuc2hhZG93RG9tUGFzc2l2ZSA/IFdlYkNvbXBvbmVudFdyYXBwZXIgOiBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50LFxyXG5cdFx0XHRcdGRhdGE6IG9wdGlvbnMgYXMgV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMsXHJcblx0XHRcdFx0Y2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRdXHJcblx0XHRcdH07XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gcm91dGVzO1xyXG5cdH1cclxuXHJcblx0c2V0TWVudUl0ZW1zKGl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdKTogdm9pZCB7XHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5ob3N0TWVudUl0ZW1zLnNldChbXHJcblx0XHRcdHsgcm9vdDogdHJ1ZSwgbGFiZWw6IHsgdHI6ICdBbmFzYXlmYScsIGVuOiAnSG9tZScgfSwgaWNvbjogJ3BpIHBpLWZ3IHBpLWhvbWUnLCByb3V0ZXJMaW5rOiAnLycgfSxcclxuXHRcdFx0Li4uaXRlbXNcclxuXHRcdF0pO1xyXG5cdH1cclxuXHRzZXRQbHVnaW5zKGl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25Db25maWc+KTogdm9pZCB7XHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5wbHVnaW5Kc29uID0gaXRlbXMgfHwge307XHJcblx0fVxyXG59XHJcbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9hcHBzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ04sbUJBQW1CLEVBRW5CLFVBQVUsRUFDVixNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHaEUsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFa0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTVDLGNBQVMsR0FBYSxFQUFFLENBQUM7S0E2RWpDO0lBM0VBLElBQUksQ0FBQyxVQUFzQixFQUFFLE9BQWU7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlDLE9BQU8sVUFBVTthQUNmLEdBQUcsQ0FBVSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENB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QUFVLEVBQUUsQ0FBQztvQkFDNUQsT0FBTyxHQUFHLENBQUM7Z0JBQ1osQ0FBQztZQUNGLENBQUM7WUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxDQUFDO1FBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVPLGFBQWEsQ0FBQyxjQUF5QjtRQUM5QyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDOzhHQWhGVyxlQUFlO2tIQUFmLGVBQWUsY0FERixNQUFNOzsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQge1xyXG5cdFdlYkNvbXBvbmVudFdyYXBwZXIsXHJcblx0V2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMsXHJcblx0c3RhcnRzV2l0aFxyXG59IGZyb20gJ0Bhbmd1bGFyLWFyY2hpdGVjdHMvbW9kdWxlLWZlZGVyYXRpb24tdG9vbHMnO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgRm9yYmlkZGVuQ29tcG9uZW50LCBOb3RGb3VuZENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdXRpbC9jdXN0b21fcGFnZXMnO1xyXG5cclxuaW1wb3J0IHsgQXV0aEd1YXJkIH0gZnJvbSAnLi9hdXRoLmd1YXJkJztcclxuaW1wb3J0IHsgQXBwc0RUTywgRXh0ZW5zaW9uQ29uZmlnLCBQbHVnaW5Db25maWcsIFBsdWdpbk1lbnVJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgc2V0Um91dGVQZXJtaXNzaW9ucyB9IGZyb20gJy4vcm91dGUtcGVybWlzc2lvbnMnO1xyXG5pbXBvcnQgeyBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zaG93ZG93RE9NV3JhcHBlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWljcm9BcHBTZXJ2aWNlIHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWsgPSBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKTtcclxuXHJcblx0cHJpdmF0ZSB1c2VyUm9sZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdGluaXQoaHR0cENsaWVudDogSHR0cENsaWVudCwgaG9zdEFQSTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnVzZXJSb2xlcyA9IHRoaXMua2V5Y2xvYWsuZ2V0VXNlclJvbGVzKCk7XHJcblx0XHRyZXR1cm4gaHR0cENsaWVudFxyXG5cdFx0XHQuZ2V0PEFwcHNEVE8+KGlzRGV2TW9kZSgpID8gJy4vYXNzZXRzL2xvY2FsLWNvbmZpZ3MvYXBwLmxvY2FsLmpzb24nIDogaG9zdEFQSSArICcvdWktc2lkZWJhci1jb25maWdzJylcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0dGFwKChhcHBzKSA9PiB7XHJcblx0XHRcdFx0XHRzZXRSb3V0ZVBlcm1pc3Npb25zKGFwcHMubWVudUl0ZW1zKTtcclxuXHRcdFx0XHRcdGNvbnN0IHJvdXRlcyA9IHRoaXMuYnVpbGRSb3V0ZXMoWy4uLmFwcHMubW9kdWxlcywgLi4uYXBwcy5wbHVnaW5zXSk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5yb3V0ZXIucmVzZXRDb25maWcoW1xyXG5cdFx0XHRcdFx0XHQuLi50aGlzLnJvdXRlci5jb25maWcsXHJcblx0XHRcdFx0XHRcdC4uLnJvdXRlcyxcclxuXHRcdFx0XHRcdFx0eyBwYXRoOiAnZm9yYmlkZGVuJywgY29tcG9uZW50OiBGb3JiaWRkZW5Db21wb25lbnQgfSxcclxuXHRcdFx0XHRcdFx0eyBwYXRoOiAnKionLCBjb21wb25lbnQ6IE5vdEZvdW5kQ29tcG9uZW50IH1cclxuXHRcdFx0XHRcdF0pO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRNZW51SXRlbXModGhpcy5maWx0ZXJNZW51SXRlbXNCeVJvbGUoYXBwcy5tZW51SXRlbXMpKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0UGx1Z2lucyhhcHBzLmV4dGVuc2lvbnMpO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0Vycm9yIE1pY3JvIEFwcHMgTG9hZGluZycsIGVycik7XHJcblx0XHRcdFx0XHRyZXR1cm4gb2YoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpO1xyXG5cdH1cclxuXHJcblx0YnVpbGRSb3V0ZXMob3B0aW9uczogUGx1Z2luQ29uZmlnW10pOiBSb3V0ZXMge1xyXG5cdFx0Y29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBvcHRpb25zLm1hcCgob3B0aW9ucykgPT4ge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdG1hdGNoZXI6IHN0YXJ0c1dpdGgob3B0aW9ucy5yZW1vdGVOYW1lKSxcclxuXHRcdFx0XHRjb21wb25lbnQ6IG9wdGlvbnMuc2hhZG93RG9tUGFzc2l2ZSA/IFdlYkNvbXBvbmVudFdyYXBwZXIgOiBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50LFxyXG5cdFx0XHRcdGRhdGE6IG9wdGlvbnMgYXMgV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMsXHJcblx0XHRcdFx0Y2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRdXHJcblx0XHRcdH07XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gcm91dGVzO1xyXG5cdH1cclxuXHJcblx0c2V0TWVudUl0ZW1zKGl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdKTogdm9pZCB7XHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5ob3N0TWVudUl0ZW1zLnNldChbXHJcblx0XHRcdHsgcm9vdDogdHJ1ZSwgbGFiZWw6IHsgdHI6ICdBbmFzYXlmYScsIGVuOiAnSG9tZScgfSwgaWNvbjogJ3BpIHBpLWZ3IHBpLWhvbWUnLCByb3V0ZXJMaW5rOiAnLycgfSxcclxuXHRcdFx0Li4uaXRlbXNcclxuXHRcdF0pO1xyXG5cdH1cclxuXHRzZXRQbHVnaW5zKGl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25Db25maWc+KTogdm9pZCB7XHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5wbHVnaW5Kc29uID0gaXRlbXMgfHwge307XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpbHRlck1lbnVJdGVtc0J5Um9sZShpdGVtczogUGx1Z2luTWVudUl0ZW1bXSk6IFBsdWdpbk1lbnVJdGVtW10ge1xyXG5cdFx0cmV0dXJuIGl0ZW1zLnJlZHVjZTxQbHVnaW5NZW51SXRlbVtdPigoYWNjLCBpdGVtKSA9PiB7XHJcblx0XHRcdGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKGl0ZW0ucGVybWl0dGVkUm9sZXMpKSB7XHJcblx0XHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgZmlsdGVyZWRJdGVtID0geyAuLi5pdGVtIH07XHJcblxyXG5cdFx0XHRpZiAoZmlsdGVyZWRJdGVtLml0ZW1zPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRmaWx0ZXJlZEl0ZW0uaXRlbXMgPSB0aGlzLmZpbHRlck1lbnVJdGVtc0J5Um9sZShmaWx0ZXJlZEl0ZW0uaXRlbXMpO1xyXG5cclxuXHRcdFx0XHRpZiAoIWZpbHRlcmVkSXRlbS5pdGVtcy5sZW5ndGggJiYgIWZpbHRlcmVkSXRlbS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gYWNjO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0YWNjLnB1c2goZmlsdGVyZWRJdGVtKTtcclxuXHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdH0sIFtdKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaGFzUGVybWlzc2lvbihwZXJtaXR0ZWRSb2xlcz86IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIXBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcGVybWl0dGVkUm9sZXMuc29tZSgocm9sZSkgPT4gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXMocm9sZSkpO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import { Injectable, inject } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { KeycloakAuthGuard, KeycloakService } from 'keycloak-angular';
4
+ import { getRoutePermissions } from './route-permissions';
4
5
  import * as i0 from "@angular/core";
5
6
  export class AuthGuard extends KeycloakAuthGuard {
6
7
  constructor() {
@@ -10,6 +11,13 @@ export class AuthGuard extends KeycloakAuthGuard {
10
11
  if (!this.authenticated) {
11
12
  await this.keycloakAngular.login({ redirectUri: window.location.href });
12
13
  }
14
+ const permittedRoles = getRoutePermissions(state.url);
15
+ if (permittedRoles?.length) {
16
+ const hasRole = permittedRoles.some((role) => this.roles.includes(role));
17
+ if (!hasRole) {
18
+ return this.router.createUrlTree(['/forbidden']);
19
+ }
20
+ }
13
21
  return this.authenticated;
14
22
  }
15
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -19,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
19
27
  type: Injectable,
20
28
  args: [{ providedIn: 'root' }]
21
29
  }], ctorParameters: () => [] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQTBCLE1BQU0sRUFBZ0MsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBR3RFLE1BQU0sT0FBTyxTQUFVLFNBQVEsaUJBQWlCO0lBQy9DO1FBQ0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWUsQ0FDN0IsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNCLENBQUM7OEdBZFcsU0FBUztrSEFBVCxTQUFTLGNBREksTUFBTTs7MkZBQ25CLFNBQVM7a0JBRHJCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBLZXljbG9ha0F1dGhHdWFyZCwgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQXV0aEd1YXJkIGV4dGVuZHMgS2V5Y2xvYWtBdXRoR3VhcmQge1xyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0c3VwZXIoaW5qZWN0KFJvdXRlciksIGluamVjdChLZXljbG9ha1NlcnZpY2UpKTtcclxuXHR9XHJcblxyXG5cdG92ZXJyaWRlIGFzeW5jIGlzQWNjZXNzQWxsb3dlZChcclxuXHRcdHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG5cdFx0c3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcclxuXHQpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XHJcblx0XHRpZiAoIXRoaXMuYXV0aGVudGljYXRlZCkge1xyXG5cdFx0XHRhd2FpdCB0aGlzLmtleWNsb2FrQW5ndWxhci5sb2dpbih7IHJlZGlyZWN0VXJpOiB3aW5kb3cubG9jYXRpb24uaHJlZiB9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5hdXRoZW50aWNhdGVkO1xyXG5cdH1cclxufVxyXG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQTBCLE1BQU0sRUFBZ0MsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRzFELE1BQU0sT0FBTyxTQUFVLFNBQVEsaUJBQWlCO0lBQy9DO1FBQ0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWUsQ0FDN0IsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXRELElBQUksY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNCLENBQUM7OEdBdkJXLFNBQVM7a0hBQVQsU0FBUyxjQURJLE1BQU07OzJGQUNuQixTQUFTO2tCQURyQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtBdXRoR3VhcmQsIEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgZ2V0Um91dGVQZXJtaXNzaW9ucyB9IGZyb20gJy4vcm91dGUtcGVybWlzc2lvbnMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCBleHRlbmRzIEtleWNsb2FrQXV0aEd1YXJkIHtcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHN1cGVyKGluamVjdChSb3V0ZXIpLCBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKSk7XHJcblx0fVxyXG5cclxuXHRvdmVycmlkZSBhc3luYyBpc0FjY2Vzc0FsbG93ZWQoXHJcblx0XHRyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuXHRcdHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcblx0KTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xyXG5cdFx0aWYgKCF0aGlzLmF1dGhlbnRpY2F0ZWQpIHtcclxuXHRcdFx0YXdhaXQgdGhpcy5rZXljbG9ha0FuZ3VsYXIubG9naW4oeyByZWRpcmVjdFVyaTogd2luZG93LmxvY2F0aW9uLmhyZWYgfSk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgcGVybWl0dGVkUm9sZXMgPSBnZXRSb3V0ZVBlcm1pc3Npb25zKHN0YXRlLnVybCk7XHJcblxyXG5cdFx0aWYgKHBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3QgaGFzUm9sZSA9IHBlcm1pdHRlZFJvbGVzLnNvbWUoKHJvbGUpID0+IHRoaXMucm9sZXMuaW5jbHVkZXMocm9sZSkpO1xyXG5cdFx0XHRpZiAoIWhhc1JvbGUpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy9mb3JiaWRkZW4nXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5hdXRoZW50aWNhdGVkO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -18,4 +18,4 @@ export var Apps;
18
18
  Apps["LGC"] = "lgc";
19
19
  Apps["DMS"] = "dms";
20
20
  })(Apps || (Apps = {}));
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQU4sSUFBWSxJQWtCWDtBQWxCRCxXQUFZLElBQUk7SUFDZixxQkFBYSxDQUFBO0lBQ2IsbUJBQVcsQ0FBQTtJQUNYLG1CQUFXLENBQUE7SUFDWCwyQkFBbUIsQ0FBQTtJQUNuQiwyQkFBbUIsQ0FBQTtJQUNuQixxQkFBYSxDQUFBO0lBQ2IsaUJBQVMsQ0FBQTtJQUNULHFCQUFhLENBQUE7SUFDYixtQkFBVyxDQUFBO0lBQ1gsbUJBQVcsQ0FBQTtJQUNYLG1CQUFXLENBQUE7SUFDWCxtQkFBVyxDQUFBO0lBQ1gsbUJBQVcsQ0FBQTtJQUNYLHVDQUErQixDQUFBO0lBQy9CLHlCQUFpQixDQUFBO0lBQ2pCLG1CQUFXLENBQUE7SUFDWCxtQkFBVyxDQUFBO0FBQ1osQ0FBQyxFQWxCVyxJQUFJLEtBQUosSUFBSSxRQWtCZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lbnVJdGVtQ29tbWFuZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuXHJcbmV4cG9ydCBlbnVtIEFwcHMge1xyXG5cdFRIT1IgPSAndGhvcicsXHJcblx0Q1JNID0gJ2NybScsXHJcblx0V0RNID0gJ3dkbScsXHJcblx0QklMTElORyA9ICdiaWxsaW5nJyxcclxuXHRQQVlNRU5UID0gJ3BheW1lbnQnLFxyXG5cdFlFQVAgPSAneWVhcCcsXHJcblx0TVcgPSAnbXcnLFxyXG5cdExFTkEgPSAnbGVuYScsXHJcblx0SEVTID0gJ2hlcycsXHJcblx0Q1RTID0gJ2N0cycsXHJcblx0U0lTID0gJ3NpcycsXHJcblx0TU5HID0gJ21uZycsXHJcblx0TURNID0gJ21kbScsXHJcblx0U1RBVEVfTUFDSElORSA9ICdzdGF0ZS1tYWNoaW5lJyxcclxuXHRSRVBPUlQgPSAncmVwb3J0JyxcclxuXHRMR0MgPSAnbGdjJyxcclxuXHRETVMgPSAnZG1zJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFwcHNEVE8ge1xyXG5cdHZlcnNpb246IG51bWJlcjtcclxuXHRtb2R1bGVzOiBQbHVnaW5Db25maWdbXTtcclxuXHRwbHVnaW5zOiBQbHVnaW5Db25maWdbXTtcclxuXHRleHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25Db25maWc+O1xyXG5cdG1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25Db25maWcge1xyXG5cdG9wdGlvbnM6IFBsdWdpbkNvbmZpZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUGx1Z2luQ29uZmlnID0gV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMgJiB7XHJcblx0aWQ/OiBzdHJpbmc7XHJcblx0cmVtb3RlTmFtZTogc3RyaW5nO1xyXG5cdHNoYWRvd0RvbVBhc3NpdmU6IGJvb2xlYW47XHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVJdGVtQWN0aW9uIHtcclxuXHRtZXRob2Q/OiAnR0VUJyB8ICdQT1NUJztcclxuXHR1cmw6IHN0cmluZztcclxuXHRib2R5PzogYW55O1xyXG5cdHN1Y2Nlc3NSb3V0ZTogc3RyaW5nO1xyXG5cdHN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbk1lbnVJdGVtIHtcclxuXHRyb3V0ZXJMaW5rPzogc3RyaW5nO1xyXG5cdGljb24/OiBzdHJpbmc7XHJcblx0bGFiZWw6IHtcclxuXHRcdFtsYW5ndWFnZUNvZGU6IHN0cmluZ106IHN0cmluZztcclxuXHR9O1xyXG5cdGl0ZW1zPzogUGx1Z2luTWVudUl0ZW1bXTtcclxuXHRwZXJtaXR0ZWRSb2xlPzogc3RyaW5nO1xyXG5cdGFjdGlvbj86IE1lbnVJdGVtQWN0aW9uO1xyXG5cclxuXHQvLyBVSSBmaWVsZHNcclxuXHRzZXBhcmF0b3I/OiBib29sZWFuO1xyXG5cdHJvb3Q/OiBib29sZWFuO1xyXG5cdHBhdGg/OiBzdHJpbmc7XHJcblx0ZGlzYWJsZWQ/OiBib29sZWFuO1xyXG5cdGNvbW1hbmQ/KGV2ZW50OiBNZW51SXRlbUNvbW1hbmRFdmVudCk6IHZvaWQ7XHJcbn1cclxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQU4sSUFBWSxJQWtCWDtBQWxCRCxXQUFZLElBQUk7SUFDZixxQkFBYSxDQUFBO0lBQ2IsbUJBQVcsQ0FBQTtJQUNYLG1CQUFXLENBQUE7SUFDWCwyQkFBbUIsQ0FBQTtJQUNuQiwyQkFBbUIsQ0FBQTtJQUNuQixxQkFBYSxDQUFBO0lBQ2IsaUJBQVMsQ0FBQTtJQUNULHFCQUFhLENBQUE7SUFDYixtQkFBVyxDQUFBO0lBQ1gsbUJBQVcsQ0FBQTtJQUNYLG1CQUFXLENBQUE7SUFDWCxtQkFBVyxDQUFBO0lBQ1gsbUJBQVcsQ0FBQTtJQUNYLHVDQUErQixDQUFBO0lBQy9CLHlCQUFpQixDQUFBO0lBQ2pCLG1CQUFXLENBQUE7SUFDWCxtQkFBVyxDQUFBO0FBQ1osQ0FBQyxFQWxCVyxJQUFJLEtBQUosSUFBSSxRQWtCZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lbnVJdGVtQ29tbWFuZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuXHJcbmV4cG9ydCBlbnVtIEFwcHMge1xyXG5cdFRIT1IgPSAndGhvcicsXHJcblx0Q1JNID0gJ2NybScsXHJcblx0V0RNID0gJ3dkbScsXHJcblx0QklMTElORyA9ICdiaWxsaW5nJyxcclxuXHRQQVlNRU5UID0gJ3BheW1lbnQnLFxyXG5cdFlFQVAgPSAneWVhcCcsXHJcblx0TVcgPSAnbXcnLFxyXG5cdExFTkEgPSAnbGVuYScsXHJcblx0SEVTID0gJ2hlcycsXHJcblx0Q1RTID0gJ2N0cycsXHJcblx0U0lTID0gJ3NpcycsXHJcblx0TU5HID0gJ21uZycsXHJcblx0TURNID0gJ21kbScsXHJcblx0U1RBVEVfTUFDSElORSA9ICdzdGF0ZS1tYWNoaW5lJyxcclxuXHRSRVBPUlQgPSAncmVwb3J0JyxcclxuXHRMR0MgPSAnbGdjJyxcclxuXHRETVMgPSAnZG1zJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFwcHNEVE8ge1xyXG5cdHZlcnNpb246IG51bWJlcjtcclxuXHRtb2R1bGVzOiBQbHVnaW5Db25maWdbXTtcclxuXHRwbHVnaW5zOiBQbHVnaW5Db25maWdbXTtcclxuXHRleHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25Db25maWc+O1xyXG5cdG1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25Db25maWcge1xyXG5cdG9wdGlvbnM6IFBsdWdpbkNvbmZpZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUGx1Z2luQ29uZmlnID0gV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMgJiB7XHJcblx0aWQ/OiBzdHJpbmc7XHJcblx0cmVtb3RlTmFtZTogc3RyaW5nO1xyXG5cdHNoYWRvd0RvbVBhc3NpdmU6IGJvb2xlYW47XHJcblx0cGVybWl0dGVkUm9sZXM/OiBzdHJpbmdbXTtcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVudUl0ZW1BY3Rpb24ge1xyXG5cdG1ldGhvZD86ICdHRVQnIHwgJ1BPU1QnO1xyXG5cdHVybDogc3RyaW5nO1xyXG5cdGJvZHk/OiBhbnk7XHJcblx0c3VjY2Vzc1JvdXRlOiBzdHJpbmc7XHJcblx0c3VjY2Vzc1JvdXRlUmVzcG9uc2VLZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luTWVudUl0ZW0ge1xyXG5cdHJvdXRlckxpbms/OiBzdHJpbmc7XHJcblx0aWNvbj86IHN0cmluZztcclxuXHRsYWJlbDoge1xyXG5cdFx0W2xhbmd1YWdlQ29kZTogc3RyaW5nXTogc3RyaW5nO1xyXG5cdH07XHJcblx0aXRlbXM/OiBQbHVnaW5NZW51SXRlbVtdO1xyXG5cdHBlcm1pdHRlZFJvbGVzPzogc3RyaW5nW107XHJcblx0YWN0aW9uPzogTWVudUl0ZW1BY3Rpb247XHJcblxyXG5cdC8vIFVJIGZpZWxkc1xyXG5cdHNlcGFyYXRvcj86IGJvb2xlYW47XHJcblx0cm9vdD86IGJvb2xlYW47XHJcblx0cGF0aD86IHN0cmluZztcclxuXHRkaXNhYmxlZD86IGJvb2xlYW47XHJcblx0Y29tbWFuZD8oZXZlbnQ6IE1lbnVJdGVtQ29tbWFuZEV2ZW50KTogdm9pZDtcclxufVxyXG4iXX0=
@@ -0,0 +1,21 @@
1
+ const routePermissions = new Map();
2
+ export function setRoutePermissions(menuItems) {
3
+ routePermissions.clear();
4
+ buildPermissionsMap(menuItems);
5
+ }
6
+ export function getRoutePermissions(url) {
7
+ const normalizedUrl = url.split('?')[0].replace(/^\//, '');
8
+ return routePermissions.get(normalizedUrl);
9
+ }
10
+ function buildPermissionsMap(items) {
11
+ for (const item of items) {
12
+ if (item.routerLink && item.permittedRoles?.length) {
13
+ const normalized = item.routerLink.replace(/^\//, '');
14
+ routePermissions.set(normalized, item.permittedRoles);
15
+ }
16
+ if (item.items?.length) {
17
+ buildPermissionsMap(item.items);
18
+ }
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGVybWlzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwcHMvc3JjL3JvdXRlLXBlcm1pc3Npb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUM7QUFFckQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFNBQTJCO0lBQzlELGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBVztJQUM5QyxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsS0FBdUI7SUFDbkQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEQsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNGLENBQUM7QUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGx1Z2luTWVudUl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5cclxuY29uc3Qgcm91dGVQZXJtaXNzaW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXRSb3V0ZVBlcm1pc3Npb25zKG1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXSk6IHZvaWQge1xyXG5cdHJvdXRlUGVybWlzc2lvbnMuY2xlYXIoKTtcclxuXHRidWlsZFBlcm1pc3Npb25zTWFwKG1lbnVJdGVtcyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZVBlcm1pc3Npb25zKHVybDogc3RyaW5nKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xyXG5cdGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSB1cmwuc3BsaXQoJz8nKVswXS5yZXBsYWNlKC9eXFwvLywgJycpO1xyXG4gIHJldHVybiByb3V0ZVBlcm1pc3Npb25zLmdldChub3JtYWxpemVkVXJsKTtcclxufVxyXG5cclxuZnVuY3Rpb24gYnVpbGRQZXJtaXNzaW9uc01hcChpdGVtczogUGx1Z2luTWVudUl0ZW1bXSk6IHZvaWQge1xyXG5cdGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG5cdFx0aWYgKGl0ZW0ucm91dGVyTGluayAmJiBpdGVtLnBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3Qgbm9ybWFsaXplZCA9IGl0ZW0ucm91dGVyTGluay5yZXBsYWNlKC9eXFwvLywgJycpO1xyXG5cdFx0XHRyb3V0ZVBlcm1pc3Npb25zLnNldChub3JtYWxpemVkLCBpdGVtLnBlcm1pdHRlZFJvbGVzKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoaXRlbS5pdGVtcz8ubGVuZ3RoKSB7XHJcblx0XHRcdGJ1aWxkUGVybWlzc2lvbnNNYXAoaXRlbS5pdGVtcyk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -46,7 +46,7 @@ export class ArilLangModalComponent {
46
46
  });
47
47
  }
48
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ArilLangModalComponent, deps: [{ token: i1.DynamicDialogConfig }, { token: i1.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ArilLangModalComponent, isStandalone: true, selector: "aril-lang-modal", ngImport: i0, template: "<div>\r\n\t<aril-field\r\n\t\t[label]=\"translocoService.translate('translationModal.addLanguage')\"\r\n\t\t[cols]=\"{ default: 12 }\"\r\n\t\tclass=\"mb-4 block\">\r\n\t\t<enum-picker\r\n\t\t\t[(ngModel)]=\"selectedLanguages\"\r\n\t\t\t[items]=\"availableLanguages\"\r\n\t\t\t[isMultiple]=\"true\"\r\n\t\t\titemKey=\"code\"\r\n\t\t\titemText=\"name\" />\r\n\t</aril-field>\r\n\r\n\t@for (lang of selectedLanguages; track lang) {\r\n\t\t<div class=\"border-1 border-gray-300 border-round py-2 px-4 mb-2 flex justify-content-between items-center\">\r\n\t\t\t<aril-field labelPos=\"left\" [label]=\"getLabel(lang)\" [cols]=\"{ default: 12 }\" [labelWidth]=\"15\" [valueWidth]=\"85\">\r\n\t\t\t\t<aril-text class=\"value-input\" [(ngModel)]=\"translations[lang]\" />\r\n\t\t\t</aril-field>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<div class=\"mt-4\">\r\n\t\t@if (mandatoryLanguages.length && isSaveDisabled()) {\r\n\t\t\t<div class=\"mb-2\">\r\n\t\t\t\t<p-tag [value]=\"getInfoText()\" severity=\"info\" />\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div class=\"mt-4 flex justify-content-end\">\r\n\t\t<aril-button\r\n\t\t\tcolor=\"danger\"\r\n\t\t\t[outlined]=\"true\"\r\n\t\t\t[label]=\"translocoService.translate('cancel')\"\r\n\t\t\t[raised]=\"false\"\r\n\t\t\ticon=\"TIMES\"\r\n\t\t\t(clickEvent)=\"close()\" />\r\n\t\t<aril-button\r\n\t\t\t[label]=\"translocoService.translate('save')\"\r\n\t\t\tcolor=\"success\"\r\n\t\t\ticon=\"CHECK\"\r\n\t\t\tclass=\"ml-2\"\r\n\t\t\t(clickEvent)=\"save()\"\r\n\t\t\t[disabled]=\"isSaveDisabled()\" />\r\n\t</div>\r\n</div>\r\n", styles: [":host .value-input ::ng-deep input{width:100%}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData", "infoDataOverlayPanel"] }, { kind: "component", type: EnumPickerComponent, selector: "enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]", inputs: ["itemKey", "itemText", "groupName", "parentSelectionKey", "tabindex", "items", "isMultiple", "grouped", "showClearButton", "placeholder", "searchExpr", "acceptCustomValue", "useVirtualScroll", "virtualScrollItemSize", "scrollHeight", "selectedItemsLabel", "appendTo", "style", "styleClass", "tooltip", "tooltipPosition"], outputs: ["onSelectionChanged"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }] }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ArilLangModalComponent, isStandalone: true, selector: "aril-lang-modal", ngImport: i0, template: "<div>\r\n\t<aril-field\r\n\t\t[label]=\"translocoService.translate('translationModal.addLanguage')\"\r\n\t\t[cols]=\"{ default: 12 }\"\r\n\t\tclass=\"mb-4 block\">\r\n\t\t<enum-picker\r\n\t\t\t[(ngModel)]=\"selectedLanguages\"\r\n\t\t\t[items]=\"availableLanguages\"\r\n\t\t\t[isMultiple]=\"true\"\r\n\t\t\titemKey=\"code\"\r\n\t\t\titemText=\"name\" />\r\n\t</aril-field>\r\n\r\n\t@for (lang of selectedLanguages; track lang) {\r\n\t\t<div class=\"border-1 border-gray-300 border-round py-2 px-4 mb-2 flex justify-content-between items-center\">\r\n\t\t\t<aril-field labelPos=\"left\" [label]=\"getLabel(lang)\" [cols]=\"{ default: 12 }\" [labelWidth]=\"15\" [valueWidth]=\"85\">\r\n\t\t\t\t<aril-text class=\"value-input\" [(ngModel)]=\"translations[lang]\" />\r\n\t\t\t</aril-field>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<div class=\"mt-4\">\r\n\t\t@if (mandatoryLanguages.length && isSaveDisabled()) {\r\n\t\t\t<div class=\"mb-2\">\r\n\t\t\t\t<p-tag [value]=\"getInfoText()\" severity=\"info\" />\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div class=\"mt-4 flex justify-content-end\">\r\n\t\t<aril-button\r\n\t\t\tcolor=\"danger\"\r\n\t\t\t[outlined]=\"true\"\r\n\t\t\t[label]=\"translocoService.translate('cancel')\"\r\n\t\t\t[raised]=\"false\"\r\n\t\t\ticon=\"TIMES\"\r\n\t\t\t(clickEvent)=\"close()\" />\r\n\t\t<aril-button\r\n\t\t\t[label]=\"translocoService.translate('save')\"\r\n\t\t\tcolor=\"success\"\r\n\t\t\ticon=\"CHECK\"\r\n\t\t\tclass=\"ml-2\"\r\n\t\t\t(clickEvent)=\"save()\"\r\n\t\t\t[disabled]=\"isSaveDisabled()\" />\r\n\t</div>\r\n</div>\r\n", styles: [":host .value-input ::ng-deep input{width:100%}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData", "infoDataOverlayPanel"] }, { kind: "component", type: EnumPickerComponent, selector: "enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]", inputs: ["itemKey", "itemText", "groupName", "parentSelectionKey", "tabindex", "items", "isMultiple", "grouped", "showClearButton", "placeholder", "searchExpr", "acceptCustomValue", "textClampCharacters", "useVirtualScroll", "virtualScrollItemSize", "scrollHeight", "selectedItemsLabel", "appendTo", "style", "styleClass", "tooltip", "tooltipPosition"], outputs: ["onSelectionChanged"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }] }); }
50
50
  }
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ArilLangModalComponent, decorators: [{
52
52
  type: Component,
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
61
61
  TagModule
62
62
  ], standalone: true, template: "<div>\r\n\t<aril-field\r\n\t\t[label]=\"translocoService.translate('translationModal.addLanguage')\"\r\n\t\t[cols]=\"{ default: 12 }\"\r\n\t\tclass=\"mb-4 block\">\r\n\t\t<enum-picker\r\n\t\t\t[(ngModel)]=\"selectedLanguages\"\r\n\t\t\t[items]=\"availableLanguages\"\r\n\t\t\t[isMultiple]=\"true\"\r\n\t\t\titemKey=\"code\"\r\n\t\t\titemText=\"name\" />\r\n\t</aril-field>\r\n\r\n\t@for (lang of selectedLanguages; track lang) {\r\n\t\t<div class=\"border-1 border-gray-300 border-round py-2 px-4 mb-2 flex justify-content-between items-center\">\r\n\t\t\t<aril-field labelPos=\"left\" [label]=\"getLabel(lang)\" [cols]=\"{ default: 12 }\" [labelWidth]=\"15\" [valueWidth]=\"85\">\r\n\t\t\t\t<aril-text class=\"value-input\" [(ngModel)]=\"translations[lang]\" />\r\n\t\t\t</aril-field>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<div class=\"mt-4\">\r\n\t\t@if (mandatoryLanguages.length && isSaveDisabled()) {\r\n\t\t\t<div class=\"mb-2\">\r\n\t\t\t\t<p-tag [value]=\"getInfoText()\" severity=\"info\" />\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div class=\"mt-4 flex justify-content-end\">\r\n\t\t<aril-button\r\n\t\t\tcolor=\"danger\"\r\n\t\t\t[outlined]=\"true\"\r\n\t\t\t[label]=\"translocoService.translate('cancel')\"\r\n\t\t\t[raised]=\"false\"\r\n\t\t\ticon=\"TIMES\"\r\n\t\t\t(clickEvent)=\"close()\" />\r\n\t\t<aril-button\r\n\t\t\t[label]=\"translocoService.translate('save')\"\r\n\t\t\tcolor=\"success\"\r\n\t\t\ticon=\"CHECK\"\r\n\t\t\tclass=\"ml-2\"\r\n\t\t\t(clickEvent)=\"save()\"\r\n\t\t\t[disabled]=\"isSaveDisabled()\" />\r\n\t</div>\r\n</div>\r\n", styles: [":host .value-input ::ng-deep input{width:100%}\n"] }]
63
63
  }], ctorParameters: () => [{ type: i1.DynamicDialogConfig }, { type: i1.DynamicDialogRef }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdHJhbnNsYXRlLWlucHV0L3NyYy9hcmlsLWxhbmctbW9kYWwvYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdHJhbnNsYXRlLWlucHV0L3NyYy9hcmlsLWxhbmctbW9kYWwvYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFrQnhDLE1BQU0sT0FBTyxzQkFBc0I7SUFPbEMsWUFDUSxNQUEwQyxFQUMxQyxHQUFxQjtRQURyQixXQUFNLEdBQU4sTUFBTSxDQUFvQztRQUMxQyxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQVI3QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxzQkFBaUIsR0FBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyx1QkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDL0IsaUJBQVksR0FBc0IsRUFBRSxDQUFDO1FBQ3JDLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQU1qQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLElBQUksRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEQsOENBQThDO1FBQzlDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqSCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDcEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztJQUN6RSxDQUFDO0lBRUQsY0FBYztRQUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BILENBQUM7SUFFRCxXQUFXO1FBQ1YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLHFDQUFxQyxFQUFFO1lBQzdFLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNqRixDQUFDLENBQUM7SUFDSixDQUFDOzhHQXRDVyxzQkFBc0I7a0dBQXRCLHNCQUFzQiwyRUNsQ25DLDBoREE4Q0EsMEdEekJFLGFBQWEsa0xBQ2IsV0FBVyw4VkFDWCxZQUFZLCtCQUNaLGVBQWUsNk5BQ2YsZUFBZSwrQkFDZixjQUFjLHlMQUNkLG1CQUFtQixvZUFDbkIsU0FBUzs7MkZBTUUsc0JBQXNCO2tCQWhCbEMsU0FBUzsrQkFDQyxpQkFBaUIsV0FDbEI7d0JBQ1IsYUFBYTt3QkFDYixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixTQUFTO3FCQUNULGNBQ1csSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgVGFnTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWcnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuaW1wb3J0IHsgRW51bVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWktYnVzaW5lc3MvZW51bVBpY2tlcic7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgRmllbGRDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2ZpZWxkJztcclxuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvdGV4dCc7XHJcblxyXG5pbXBvcnQgeyBMYW5nTW9kYWxEYXRhLCBUcmFuc2xhdGlvbk9iamVjdCB9IGZyb20gJy4uL2ludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFMTF9MQU5HUyB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXJpbC1sYW5nLW1vZGFsJyxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHRUZXh0Q29tcG9uZW50LFxyXG5cdFx0Rm9ybXNNb2R1bGUsXHJcblx0XHRDb21tb25Nb2R1bGUsXHJcblx0XHRCdXR0b25Db21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRGaWVsZENvbXBvbmVudCxcclxuXHRcdEVudW1QaWNrZXJDb21wb25lbnQsXHJcblx0XHRUYWdNb2R1bGVcclxuXHRdLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0dGVtcGxhdGVVcmw6ICdhcmlsLWxhbmctbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWydhcmlsLWxhbmctbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJpbExhbmdNb2RhbENvbXBvbmVudCB7XHJcblx0dHJhbnNsb2NvU2VydmljZSA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcclxuXHRzZWxlY3RlZExhbmd1YWdlczogc3RyaW5nW10gPSBbJ3RyJywgJ2VuJ107XHJcblx0YXZhaWxhYmxlTGFuZ3VhZ2VzID0gQUxMX0xBTkdTO1xyXG5cdHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3QgPSB7fTtcclxuXHRtYW5kYXRvcnlMYW5ndWFnZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZzxMYW5nTW9kYWxEYXRhPixcclxuXHRcdHB1YmxpYyByZWY6IER5bmFtaWNEaWFsb2dSZWZcclxuXHQpIHtcclxuXHRcdHRoaXMudHJhbnNsYXRpb25zID0geyAuLi50aGlzLmNvbmZpZy5kYXRhPy50cmFuc2xhdGlvbnMgfTtcclxuXHRcdHRoaXMubWFuZGF0b3J5TGFuZ3VhZ2VzID0gdGhpcy5jb25maWcuZGF0YT8ubWFuZGF0b3J5TGFuZ3VhZ2VzIHx8IFtdO1xyXG5cdH1cclxuXHJcblx0c2F2ZSgpIHtcclxuXHRcdGNvbnN0IGFsbG93ZWQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRMYW5ndWFnZXMpO1xyXG5cdFx0Ly8gb25seSBvdXRwdXQgdGhlIGxhbmd1YWdlcyB0aGF0IGFyZSBzZWxlY3RlZFxyXG5cdFx0Y29uc3Qgb3V0cHV0VHJhbnNsYXRpb25zID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHRoaXMudHJhbnNsYXRpb25zKS5maWx0ZXIoKFtrXSkgPT4gYWxsb3dlZC5oYXMoaykpKTtcclxuXHRcdHRoaXMucmVmLmNsb3NlKG91dHB1dFRyYW5zbGF0aW9ucyk7XHJcblx0fVxyXG5cclxuXHRjbG9zZSgpIHtcclxuXHRcdHRoaXMucmVmLmNsb3NlKCk7XHJcblx0fVxyXG5cclxuXHRnZXRMYWJlbChjb2RlOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcy5maW5kKChsYW5nKSA9PiBsYW5nLmNvZGUgPT09IGNvZGUpPy5uYW1lO1xyXG5cdH1cclxuXHJcblx0aXNTYXZlRGlzYWJsZWQoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5tYW5kYXRvcnlMYW5ndWFnZXM/LnNvbWUoKGxhbmcpID0+ICF0aGlzLnNlbGVjdGVkTGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmcpIHx8ICF0aGlzLnRyYW5zbGF0aW9uc1tsYW5nXSk7XHJcblx0fVxyXG5cclxuXHRnZXRJbmZvVGV4dCgpIHtcclxuXHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0cmFuc2xhdGlvbk1vZGFsLm1hbmRhdG9yeUxhbmd1YWdlcycsIHtcclxuXHRcdFx0bGFuZ3VhZ2VzOiB0aGlzLm1hbmRhdG9yeUxhbmd1YWdlcz8ubWFwKChsYW5nKSA9PiB0aGlzLmdldExhYmVsKGxhbmcpKS5qb2luKCcsICcpXHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIiwiPGRpdj5cclxuXHQ8YXJpbC1maWVsZFxyXG5cdFx0W2xhYmVsXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0cmFuc2xhdGlvbk1vZGFsLmFkZExhbmd1YWdlJylcIlxyXG5cdFx0W2NvbHNdPVwieyBkZWZhdWx0OiAxMiB9XCJcclxuXHRcdGNsYXNzPVwibWItNCBibG9ja1wiPlxyXG5cdFx0PGVudW0tcGlja2VyXHJcblx0XHRcdFsobmdNb2RlbCldPVwic2VsZWN0ZWRMYW5ndWFnZXNcIlxyXG5cdFx0XHRbaXRlbXNdPVwiYXZhaWxhYmxlTGFuZ3VhZ2VzXCJcclxuXHRcdFx0W2lzTXVsdGlwbGVdPVwidHJ1ZVwiXHJcblx0XHRcdGl0ZW1LZXk9XCJjb2RlXCJcclxuXHRcdFx0aXRlbVRleHQ9XCJuYW1lXCIgLz5cclxuXHQ8L2FyaWwtZmllbGQ+XHJcblxyXG5cdEBmb3IgKGxhbmcgb2Ygc2VsZWN0ZWRMYW5ndWFnZXM7IHRyYWNrIGxhbmcpIHtcclxuXHRcdDxkaXYgY2xhc3M9XCJib3JkZXItMSBib3JkZXItZ3JheS0zMDAgYm9yZGVyLXJvdW5kIHB5LTIgcHgtNCBtYi0yIGZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcblx0XHRcdDxhcmlsLWZpZWxkIGxhYmVsUG9zPVwibGVmdFwiIFtsYWJlbF09XCJnZXRMYWJlbChsYW5nKVwiIFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiIFtsYWJlbFdpZHRoXT1cIjE1XCIgW3ZhbHVlV2lkdGhdPVwiODVcIj5cclxuXHRcdFx0XHQ8YXJpbC10ZXh0IGNsYXNzPVwidmFsdWUtaW5wdXRcIiBbKG5nTW9kZWwpXT1cInRyYW5zbGF0aW9uc1tsYW5nXVwiIC8+XHJcblx0XHRcdDwvYXJpbC1maWVsZD5cclxuXHRcdDwvZGl2PlxyXG5cdH1cclxuXHJcblx0PGRpdiBjbGFzcz1cIm10LTRcIj5cclxuXHRcdEBpZiAobWFuZGF0b3J5TGFuZ3VhZ2VzLmxlbmd0aCAmJiBpc1NhdmVEaXNhYmxlZCgpKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcblx0XHRcdFx0PHAtdGFnIFt2YWx1ZV09XCJnZXRJbmZvVGV4dCgpXCIgc2V2ZXJpdHk9XCJpbmZvXCIgLz5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJtdC00IGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG5cdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdGNvbG9yPVwiZGFuZ2VyXCJcclxuXHRcdFx0W291dGxpbmVkXT1cInRydWVcIlxyXG5cdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2NhbmNlbCcpXCJcclxuXHRcdFx0W3JhaXNlZF09XCJmYWxzZVwiXHJcblx0XHRcdGljb249XCJUSU1FU1wiXHJcblx0XHRcdChjbGlja0V2ZW50KT1cImNsb3NlKClcIiAvPlxyXG5cdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFtsYWJlbF09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnc2F2ZScpXCJcclxuXHRcdFx0Y29sb3I9XCJzdWNjZXNzXCJcclxuXHRcdFx0aWNvbj1cIkNIRUNLXCJcclxuXHRcdFx0Y2xhc3M9XCJtbC0yXCJcclxuXHRcdFx0KGNsaWNrRXZlbnQpPVwic2F2ZSgpXCJcclxuXHRcdFx0W2Rpc2FibGVkXT1cImlzU2F2ZURpc2FibGVkKClcIiAvPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdHJhbnNsYXRlLWlucHV0L3NyYy9hcmlsLWxhbmctbW9kYWwvYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdHJhbnNsYXRlLWlucHV0L3NyYy9hcmlsLWxhbmctbW9kYWwvYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFrQnhDLE1BQU0sT0FBTyxzQkFBc0I7SUFPbEMsWUFDUSxNQUEwQyxFQUMxQyxHQUFxQjtRQURyQixXQUFNLEdBQU4sTUFBTSxDQUFvQztRQUMxQyxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQVI3QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxzQkFBaUIsR0FBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyx1QkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDL0IsaUJBQVksR0FBc0IsRUFBRSxDQUFDO1FBQ3JDLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQU1qQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLElBQUksRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEQsOENBQThDO1FBQzlDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqSCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDcEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztJQUN6RSxDQUFDO0lBRUQsY0FBYztRQUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BILENBQUM7SUFFRCxXQUFXO1FBQ1YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLHFDQUFxQyxFQUFFO1lBQzdFLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNqRixDQUFDLENBQUM7SUFDSixDQUFDOzhHQXRDVyxzQkFBc0I7a0dBQXRCLHNCQUFzQiwyRUNsQ25DLDBoREE4Q0EsMEdEekJFLGFBQWEsa0xBQ2IsV0FBVyw4VkFDWCxZQUFZLCtCQUNaLGVBQWUsNk5BQ2YsZUFBZSwrQkFDZixjQUFjLHlMQUNkLG1CQUFtQiwyZkFDbkIsU0FBUzs7MkZBTUUsc0JBQXNCO2tCQWhCbEMsU0FBUzsrQkFDQyxpQkFBaUIsV0FDbEI7d0JBQ1IsYUFBYTt3QkFDYixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixTQUFTO3FCQUNULGNBQ1csSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgVGFnTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWcnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuaW1wb3J0IHsgRW51bVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWktYnVzaW5lc3MvZW51bVBpY2tlcic7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgRmllbGRDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2ZpZWxkJztcclxuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvdGV4dCc7XHJcblxyXG5pbXBvcnQgeyBMYW5nTW9kYWxEYXRhLCBUcmFuc2xhdGlvbk9iamVjdCB9IGZyb20gJy4uL2ludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFMTF9MQU5HUyB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXJpbC1sYW5nLW1vZGFsJyxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHRUZXh0Q29tcG9uZW50LFxyXG5cdFx0Rm9ybXNNb2R1bGUsXHJcblx0XHRDb21tb25Nb2R1bGUsXHJcblx0XHRCdXR0b25Db21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRGaWVsZENvbXBvbmVudCxcclxuXHRcdEVudW1QaWNrZXJDb21wb25lbnQsXHJcblx0XHRUYWdNb2R1bGVcclxuXHRdLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0dGVtcGxhdGVVcmw6ICdhcmlsLWxhbmctbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWydhcmlsLWxhbmctbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJpbExhbmdNb2RhbENvbXBvbmVudCB7XHJcblx0dHJhbnNsb2NvU2VydmljZSA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcclxuXHRzZWxlY3RlZExhbmd1YWdlczogc3RyaW5nW10gPSBbJ3RyJywgJ2VuJ107XHJcblx0YXZhaWxhYmxlTGFuZ3VhZ2VzID0gQUxMX0xBTkdTO1xyXG5cdHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3QgPSB7fTtcclxuXHRtYW5kYXRvcnlMYW5ndWFnZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZzxMYW5nTW9kYWxEYXRhPixcclxuXHRcdHB1YmxpYyByZWY6IER5bmFtaWNEaWFsb2dSZWZcclxuXHQpIHtcclxuXHRcdHRoaXMudHJhbnNsYXRpb25zID0geyAuLi50aGlzLmNvbmZpZy5kYXRhPy50cmFuc2xhdGlvbnMgfTtcclxuXHRcdHRoaXMubWFuZGF0b3J5TGFuZ3VhZ2VzID0gdGhpcy5jb25maWcuZGF0YT8ubWFuZGF0b3J5TGFuZ3VhZ2VzIHx8IFtdO1xyXG5cdH1cclxuXHJcblx0c2F2ZSgpIHtcclxuXHRcdGNvbnN0IGFsbG93ZWQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRMYW5ndWFnZXMpO1xyXG5cdFx0Ly8gb25seSBvdXRwdXQgdGhlIGxhbmd1YWdlcyB0aGF0IGFyZSBzZWxlY3RlZFxyXG5cdFx0Y29uc3Qgb3V0cHV0VHJhbnNsYXRpb25zID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHRoaXMudHJhbnNsYXRpb25zKS5maWx0ZXIoKFtrXSkgPT4gYWxsb3dlZC5oYXMoaykpKTtcclxuXHRcdHRoaXMucmVmLmNsb3NlKG91dHB1dFRyYW5zbGF0aW9ucyk7XHJcblx0fVxyXG5cclxuXHRjbG9zZSgpIHtcclxuXHRcdHRoaXMucmVmLmNsb3NlKCk7XHJcblx0fVxyXG5cclxuXHRnZXRMYWJlbChjb2RlOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcy5maW5kKChsYW5nKSA9PiBsYW5nLmNvZGUgPT09IGNvZGUpPy5uYW1lO1xyXG5cdH1cclxuXHJcblx0aXNTYXZlRGlzYWJsZWQoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5tYW5kYXRvcnlMYW5ndWFnZXM/LnNvbWUoKGxhbmcpID0+ICF0aGlzLnNlbGVjdGVkTGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmcpIHx8ICF0aGlzLnRyYW5zbGF0aW9uc1tsYW5nXSk7XHJcblx0fVxyXG5cclxuXHRnZXRJbmZvVGV4dCgpIHtcclxuXHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0cmFuc2xhdGlvbk1vZGFsLm1hbmRhdG9yeUxhbmd1YWdlcycsIHtcclxuXHRcdFx0bGFuZ3VhZ2VzOiB0aGlzLm1hbmRhdG9yeUxhbmd1YWdlcz8ubWFwKChsYW5nKSA9PiB0aGlzLmdldExhYmVsKGxhbmcpKS5qb2luKCcsICcpXHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIiwiPGRpdj5cclxuXHQ8YXJpbC1maWVsZFxyXG5cdFx0W2xhYmVsXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0cmFuc2xhdGlvbk1vZGFsLmFkZExhbmd1YWdlJylcIlxyXG5cdFx0W2NvbHNdPVwieyBkZWZhdWx0OiAxMiB9XCJcclxuXHRcdGNsYXNzPVwibWItNCBibG9ja1wiPlxyXG5cdFx0PGVudW0tcGlja2VyXHJcblx0XHRcdFsobmdNb2RlbCldPVwic2VsZWN0ZWRMYW5ndWFnZXNcIlxyXG5cdFx0XHRbaXRlbXNdPVwiYXZhaWxhYmxlTGFuZ3VhZ2VzXCJcclxuXHRcdFx0W2lzTXVsdGlwbGVdPVwidHJ1ZVwiXHJcblx0XHRcdGl0ZW1LZXk9XCJjb2RlXCJcclxuXHRcdFx0aXRlbVRleHQ9XCJuYW1lXCIgLz5cclxuXHQ8L2FyaWwtZmllbGQ+XHJcblxyXG5cdEBmb3IgKGxhbmcgb2Ygc2VsZWN0ZWRMYW5ndWFnZXM7IHRyYWNrIGxhbmcpIHtcclxuXHRcdDxkaXYgY2xhc3M9XCJib3JkZXItMSBib3JkZXItZ3JheS0zMDAgYm9yZGVyLXJvdW5kIHB5LTIgcHgtNCBtYi0yIGZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcblx0XHRcdDxhcmlsLWZpZWxkIGxhYmVsUG9zPVwibGVmdFwiIFtsYWJlbF09XCJnZXRMYWJlbChsYW5nKVwiIFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiIFtsYWJlbFdpZHRoXT1cIjE1XCIgW3ZhbHVlV2lkdGhdPVwiODVcIj5cclxuXHRcdFx0XHQ8YXJpbC10ZXh0IGNsYXNzPVwidmFsdWUtaW5wdXRcIiBbKG5nTW9kZWwpXT1cInRyYW5zbGF0aW9uc1tsYW5nXVwiIC8+XHJcblx0XHRcdDwvYXJpbC1maWVsZD5cclxuXHRcdDwvZGl2PlxyXG5cdH1cclxuXHJcblx0PGRpdiBjbGFzcz1cIm10LTRcIj5cclxuXHRcdEBpZiAobWFuZGF0b3J5TGFuZ3VhZ2VzLmxlbmd0aCAmJiBpc1NhdmVEaXNhYmxlZCgpKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcblx0XHRcdFx0PHAtdGFnIFt2YWx1ZV09XCJnZXRJbmZvVGV4dCgpXCIgc2V2ZXJpdHk9XCJpbmZvXCIgLz5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJtdC00IGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG5cdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdGNvbG9yPVwiZGFuZ2VyXCJcclxuXHRcdFx0W291dGxpbmVkXT1cInRydWVcIlxyXG5cdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2NhbmNlbCcpXCJcclxuXHRcdFx0W3JhaXNlZF09XCJmYWxzZVwiXHJcblx0XHRcdGljb249XCJUSU1FU1wiXHJcblx0XHRcdChjbGlja0V2ZW50KT1cImNsb3NlKClcIiAvPlxyXG5cdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFtsYWJlbF09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnc2F2ZScpXCJcclxuXHRcdFx0Y29sb3I9XCJzdWNjZXNzXCJcclxuXHRcdFx0aWNvbj1cIkNIRUNLXCJcclxuXHRcdFx0Y2xhc3M9XCJtbC0yXCJcclxuXHRcdFx0KGNsaWNrRXZlbnQpPVwic2F2ZSgpXCJcclxuXHRcdFx0W2Rpc2FibGVkXT1cImlzU2F2ZURpc2FibGVkKClcIiAvPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -9,6 +9,7 @@ import ArrayStore from 'devextreme/data/array_store';
9
9
  import { API_CONFIGS } from 'aril/boot/config/api';
10
10
  import { Apps } from 'aril/boot/config/apps';
11
11
  import { BaseInputComponent, DXInputErrorMessagePipe, InputErrorMessagePipe, ValueAccessorDirective } from 'aril/ui/lib';
12
+ import { TooltipModule } from 'primeng/tooltip';
12
13
  import * as i0 from "@angular/core";
13
14
  import * as i1 from "@angular/common/http";
14
15
  import * as i2 from "@ngneat/transloco";
@@ -16,6 +17,8 @@ import * as i3 from "aril/ui/lib";
16
17
  import * as i4 from "@angular/forms";
17
18
  import * as i5 from "devextreme-angular/ui/select-box";
18
19
  import * as i6 from "primeng/multiselect";
20
+ import * as i7 from "primeng/api";
21
+ import * as i8 from "primeng/tooltip";
19
22
  export class EnumPickerComponent extends BaseInputComponent {
20
23
  constructor(http, translocoService) {
21
24
  super();
@@ -41,6 +44,7 @@ export class EnumPickerComponent extends BaseInputComponent {
41
44
  this.placeholder = input('');
42
45
  this.searchExpr = input('');
43
46
  this.acceptCustomValue = input(false);
47
+ this.textClampCharacters = input(40);
44
48
  /**
45
49
  * Virtual Scroll States
46
50
  */
@@ -165,12 +169,12 @@ export class EnumPickerComponent extends BaseInputComponent {
165
169
  }));
166
170
  }
167
171
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: EnumPickerComponent, deps: [{ token: i1.HttpClient }, { token: i2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
168
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: EnumPickerComponent, isStandalone: true, selector: "enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]", inputs: { itemKey: { classPropertyName: "itemKey", publicName: "itemKey", isSignal: true, isRequired: false, transformFunction: null }, itemText: { classPropertyName: "itemText", publicName: "itemText", isSignal: true, isRequired: false, transformFunction: null }, groupName: { classPropertyName: "groupName", publicName: "groupName", isSignal: true, isRequired: false, transformFunction: null }, parentSelectionKey: { classPropertyName: "parentSelectionKey", publicName: "parentSelectionKey", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, isMultiple: { classPropertyName: "isMultiple", publicName: "isMultiple", isSignal: true, isRequired: false, transformFunction: null }, grouped: { classPropertyName: "grouped", publicName: "grouped", isSignal: true, isRequired: false, transformFunction: null }, showClearButton: { classPropertyName: "showClearButton", publicName: "showClearButton", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchExpr: { classPropertyName: "searchExpr", publicName: "searchExpr", isSignal: true, isRequired: false, transformFunction: null }, acceptCustomValue: { classPropertyName: "acceptCustomValue", publicName: "acceptCustomValue", isSignal: true, isRequired: false, transformFunction: null }, useVirtualScroll: { classPropertyName: "useVirtualScroll", publicName: "useVirtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: true, isRequired: false, transformFunction: null }, selectedItemsLabel: { classPropertyName: "selectedItemsLabel", publicName: "selectedItemsLabel", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelectionChanged: "onSelectionChanged" }, providers: [InputErrorMessagePipe], usesInheritance: true, hostDirectives: [{ directive: i3.ValueAccessorDirective }], ngImport: i0, template: "@if(isMultiple()){\r\n <p-multiSelect\r\n\t[options]=\"selectionItems() || items() || []\"\r\n\t[optionLabel]=\"itemText()\"\r\n\t[optionValue]=\"itemKey()\"\r\n\t[defaultLabel]=\"placeholder()\"\r\n\t[selectedItemsLabel]=\"selectedItemsLabel()\"\r\n\t[style]=\"style()\"\r\n\t[styleClass]=\"styleClass()\"\r\n\t[tooltip]=\"tooltip()\"\r\n\t[tooltipPosition]=\"tooltipPosition()\"\r\n\t[formControl]=\"ngControl.control\"\r\n\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n [maxSelectedLabels]=\"2\"\r\n\t[appendTo]=\"appendTo()\"\r\n [virtualScroll]=\"useVirtualScroll()\"\r\n\t[virtualScrollItemSize]=\"virtualScrollItemSize()\"\r\n\t[scrollHeight]=\"scrollHeight()\"\r\n\t[filter]=\"true\">\r\n</p-multiSelect>\r\n}@else {\r\n <dx-select-box\r\n [dataSource]=\"useVirtualScroll() ? selectBoxDataSource() : (selectionItems() || items() || [])\"\r\n [valueExpr]=\"itemKey()\"\r\n [displayExpr]=\"itemText()\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"searchExpr()\"\r\n [tabIndex]=\"tabindex()\"\r\n [grouped]=\"grouped()\"\r\n [placeholder]=\"placeholder()\"\r\n [showClearButton]=\"showClearButton()\"\r\n [acceptCustomValue]=\"acceptCustomValue()\"\r\n (onCustomItemCreating)=\"onCustomItemCreating($event)\"\r\n [isValid]=\"ngControl?.control?.valid || ngControl?.control?.pristine || ngControl?.control?.disabled || false\"\r\n [validationError]=\"ngControl?.control?.errors | dxInputErrorMessage: ngControl?.control\"\r\n validationMessagePosition=\"top\"\r\n [noDataText]=\"translocoService.translate('messages.noDataToDisplay')\"\r\n [formControl]=\"ngControl.control\"\r\n (ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event.selectedItem);setTitle($event.selectedItem)\"\r\n [inputAttr]=\"{ 'title': selectedItemText }\">\r\n </dx-select-box>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: DxSelectBoxModule }, { kind: "component", type: i5.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "pipe", type: DXInputErrorMessagePipe, name: "dxInputErrorMessage" }, { kind: "ngmodule", type: TranslocoModule }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }] }); }
172
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: EnumPickerComponent, isStandalone: true, selector: "enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]", inputs: { itemKey: { classPropertyName: "itemKey", publicName: "itemKey", isSignal: true, isRequired: false, transformFunction: null }, itemText: { classPropertyName: "itemText", publicName: "itemText", isSignal: true, isRequired: false, transformFunction: null }, groupName: { classPropertyName: "groupName", publicName: "groupName", isSignal: true, isRequired: false, transformFunction: null }, parentSelectionKey: { classPropertyName: "parentSelectionKey", publicName: "parentSelectionKey", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, isMultiple: { classPropertyName: "isMultiple", publicName: "isMultiple", isSignal: true, isRequired: false, transformFunction: null }, grouped: { classPropertyName: "grouped", publicName: "grouped", isSignal: true, isRequired: false, transformFunction: null }, showClearButton: { classPropertyName: "showClearButton", publicName: "showClearButton", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchExpr: { classPropertyName: "searchExpr", publicName: "searchExpr", isSignal: true, isRequired: false, transformFunction: null }, acceptCustomValue: { classPropertyName: "acceptCustomValue", publicName: "acceptCustomValue", isSignal: true, isRequired: false, transformFunction: null }, textClampCharacters: { classPropertyName: "textClampCharacters", publicName: "textClampCharacters", isSignal: true, isRequired: false, transformFunction: null }, useVirtualScroll: { classPropertyName: "useVirtualScroll", publicName: "useVirtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: true, isRequired: false, transformFunction: null }, selectedItemsLabel: { classPropertyName: "selectedItemsLabel", publicName: "selectedItemsLabel", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelectionChanged: "onSelectionChanged" }, providers: [InputErrorMessagePipe], usesInheritance: true, hostDirectives: [{ directive: i3.ValueAccessorDirective }], ngImport: i0, template: "@if (isMultiple()) {\r\n\t<p-multiSelect\r\n\t\t[options]=\"selectionItems() || items() || []\"\r\n\t\t[optionValue]=\"itemKey()\"\r\n\t\t[defaultLabel]=\"placeholder()\"\r\n\t\t[selectedItemsLabel]=\"selectedItemsLabel()\"\r\n\t\t[style]=\"style()\"\r\n\t\t[styleClass]=\"styleClass()\"\r\n\t\t[tooltip]=\"tooltip()\"\r\n\t\t[tooltipPosition]=\"tooltipPosition()\"\r\n\t\t[formControl]=\"ngControl.control\"\r\n\t\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n\t\t[maxSelectedLabels]=\"2\"\r\n\t\t[appendTo]=\"appendTo()\"\r\n\t\t[virtualScroll]=\"useVirtualScroll()\"\r\n\t\t[virtualScrollItemSize]=\"virtualScrollItemSize()\"\r\n\t\t[scrollHeight]=\"scrollHeight()\"\r\n\t\t[filter]=\"true\"\r\n\t\t[panelStyle]=\"{ 'max-width': '400px', 'min-width': 'auto' }\">\r\n\t\t<ng-template let-enum pTemplate=\"item\">\r\n\t\t\t<div [pTooltip]=\"enum[itemText()]?.length > textClampCharacters() ? enum[itemText()] : ''\">\r\n\t\t\t\t@if (enum[itemText()]?.length > textClampCharacters()) {\r\n\t\t\t\t\t{{ enum[itemText()].slice(0, textClampCharacters()) }}...\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t{{ enum[itemText()] }}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</p-multiSelect>\r\n} @else {\r\n\t<dx-select-box\r\n [dataSource]=\"useVirtualScroll() ? selectBoxDataSource() : (selectionItems() || items() || [])\"\r\n\t\t[valueExpr]=\"itemKey()\"\r\n\t\t[displayExpr]=\"itemText()\"\r\n\t\t[searchEnabled]=\"true\"\r\n\t\t[searchExpr]=\"searchExpr()\"\r\n\t\t[tabIndex]=\"tabindex()\"\r\n\t\t[grouped]=\"grouped()\"\r\n\t\t[placeholder]=\"placeholder()\"\r\n\t\t[showClearButton]=\"showClearButton()\"\r\n\t\t[acceptCustomValue]=\"acceptCustomValue()\"\r\n\t\t(onCustomItemCreating)=\"onCustomItemCreating($event)\"\r\n\t\t[isValid]=\"ngControl?.control?.valid || ngControl?.control?.pristine || ngControl?.control?.disabled || false\"\r\n\t\t[validationError]=\"ngControl?.control?.errors | dxInputErrorMessage: ngControl?.control\"\r\n\t\tvalidationMessagePosition=\"top\"\r\n\t\t[noDataText]=\"translocoService.translate('messages.noDataToDisplay')\"\r\n\t\t[formControl]=\"ngControl.control\"\r\n\t\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event.selectedItem);setTitle($event.selectedItem)\"\r\n [inputAttr]=\"{ 'title': selectedItemText }\">\r\n\t</dx-select-box>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: DxSelectBoxModule }, { kind: "component", type: i5.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "pipe", type: DXInputErrorMessagePipe, name: "dxInputErrorMessage" }, { kind: "ngmodule", type: TranslocoModule }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
169
173
  }
170
174
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: EnumPickerComponent, decorators: [{
171
175
  type: Component,
172
- args: [{ standalone: true, selector: 'enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]', imports: [ReactiveFormsModule, DxSelectBoxModule, DXInputErrorMessagePipe, TranslocoModule, MultiSelectModule], providers: [InputErrorMessagePipe], hostDirectives: [ValueAccessorDirective], template: "@if(isMultiple()){\r\n <p-multiSelect\r\n\t[options]=\"selectionItems() || items() || []\"\r\n\t[optionLabel]=\"itemText()\"\r\n\t[optionValue]=\"itemKey()\"\r\n\t[defaultLabel]=\"placeholder()\"\r\n\t[selectedItemsLabel]=\"selectedItemsLabel()\"\r\n\t[style]=\"style()\"\r\n\t[styleClass]=\"styleClass()\"\r\n\t[tooltip]=\"tooltip()\"\r\n\t[tooltipPosition]=\"tooltipPosition()\"\r\n\t[formControl]=\"ngControl.control\"\r\n\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n [maxSelectedLabels]=\"2\"\r\n\t[appendTo]=\"appendTo()\"\r\n [virtualScroll]=\"useVirtualScroll()\"\r\n\t[virtualScrollItemSize]=\"virtualScrollItemSize()\"\r\n\t[scrollHeight]=\"scrollHeight()\"\r\n\t[filter]=\"true\">\r\n</p-multiSelect>\r\n}@else {\r\n <dx-select-box\r\n [dataSource]=\"useVirtualScroll() ? selectBoxDataSource() : (selectionItems() || items() || [])\"\r\n [valueExpr]=\"itemKey()\"\r\n [displayExpr]=\"itemText()\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"searchExpr()\"\r\n [tabIndex]=\"tabindex()\"\r\n [grouped]=\"grouped()\"\r\n [placeholder]=\"placeholder()\"\r\n [showClearButton]=\"showClearButton()\"\r\n [acceptCustomValue]=\"acceptCustomValue()\"\r\n (onCustomItemCreating)=\"onCustomItemCreating($event)\"\r\n [isValid]=\"ngControl?.control?.valid || ngControl?.control?.pristine || ngControl?.control?.disabled || false\"\r\n [validationError]=\"ngControl?.control?.errors | dxInputErrorMessage: ngControl?.control\"\r\n validationMessagePosition=\"top\"\r\n [noDataText]=\"translocoService.translate('messages.noDataToDisplay')\"\r\n [formControl]=\"ngControl.control\"\r\n (ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event.selectedItem);setTitle($event.selectedItem)\"\r\n [inputAttr]=\"{ 'title': selectedItemText }\">\r\n </dx-select-box>\r\n}\r\n" }]
176
+ args: [{ standalone: true, selector: 'enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]', imports: [ReactiveFormsModule, DxSelectBoxModule, DXInputErrorMessagePipe, TranslocoModule, MultiSelectModule, TooltipModule], providers: [InputErrorMessagePipe], hostDirectives: [ValueAccessorDirective], template: "@if (isMultiple()) {\r\n\t<p-multiSelect\r\n\t\t[options]=\"selectionItems() || items() || []\"\r\n\t\t[optionValue]=\"itemKey()\"\r\n\t\t[defaultLabel]=\"placeholder()\"\r\n\t\t[selectedItemsLabel]=\"selectedItemsLabel()\"\r\n\t\t[style]=\"style()\"\r\n\t\t[styleClass]=\"styleClass()\"\r\n\t\t[tooltip]=\"tooltip()\"\r\n\t\t[tooltipPosition]=\"tooltipPosition()\"\r\n\t\t[formControl]=\"ngControl.control\"\r\n\t\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n\t\t[maxSelectedLabels]=\"2\"\r\n\t\t[appendTo]=\"appendTo()\"\r\n\t\t[virtualScroll]=\"useVirtualScroll()\"\r\n\t\t[virtualScrollItemSize]=\"virtualScrollItemSize()\"\r\n\t\t[scrollHeight]=\"scrollHeight()\"\r\n\t\t[filter]=\"true\"\r\n\t\t[panelStyle]=\"{ 'max-width': '400px', 'min-width': 'auto' }\">\r\n\t\t<ng-template let-enum pTemplate=\"item\">\r\n\t\t\t<div [pTooltip]=\"enum[itemText()]?.length > textClampCharacters() ? enum[itemText()] : ''\">\r\n\t\t\t\t@if (enum[itemText()]?.length > textClampCharacters()) {\r\n\t\t\t\t\t{{ enum[itemText()].slice(0, textClampCharacters()) }}...\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t{{ enum[itemText()] }}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</p-multiSelect>\r\n} @else {\r\n\t<dx-select-box\r\n [dataSource]=\"useVirtualScroll() ? selectBoxDataSource() : (selectionItems() || items() || [])\"\r\n\t\t[valueExpr]=\"itemKey()\"\r\n\t\t[displayExpr]=\"itemText()\"\r\n\t\t[searchEnabled]=\"true\"\r\n\t\t[searchExpr]=\"searchExpr()\"\r\n\t\t[tabIndex]=\"tabindex()\"\r\n\t\t[grouped]=\"grouped()\"\r\n\t\t[placeholder]=\"placeholder()\"\r\n\t\t[showClearButton]=\"showClearButton()\"\r\n\t\t[acceptCustomValue]=\"acceptCustomValue()\"\r\n\t\t(onCustomItemCreating)=\"onCustomItemCreating($event)\"\r\n\t\t[isValid]=\"ngControl?.control?.valid || ngControl?.control?.pristine || ngControl?.control?.disabled || false\"\r\n\t\t[validationError]=\"ngControl?.control?.errors | dxInputErrorMessage: ngControl?.control\"\r\n\t\tvalidationMessagePosition=\"top\"\r\n\t\t[noDataText]=\"translocoService.translate('messages.noDataToDisplay')\"\r\n\t\t[formControl]=\"ngControl.control\"\r\n\t\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event.selectedItem);setTitle($event.selectedItem)\"\r\n [inputAttr]=\"{ 'title': selectedItemText }\">\r\n\t</dx-select-box>\r\n}\r\n" }]
173
177
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.TranslocoService }], propDecorators: { onSelectionChanged: [{
174
178
  type: Output
175
179
  }] } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy9lbnVtUGlja2VyL3NyYy9lbnVtLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL2VudW1QaWNrZXIvc3JjL2VudW0tcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFDckQsT0FBTyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQ04sa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLE1BQU0sYUFBYSxDQUFDOzs7Ozs7OztBQVlyQixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsa0JBQWtCO0lBMkMxRCxZQUNrQixJQUFnQixFQUMxQixnQkFBa0M7UUFFekMsS0FBSyxFQUFF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QjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIGVmZmVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTXVsdGlTZWxlY3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgRHhTZWxlY3RCb3hNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvc2VsZWN0LWJveCc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgRGF0YVNvdXJjZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvZGF0YV9zb3VyY2UnO1xyXG5pbXBvcnQgQXJyYXlTdG9yZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvYXJyYXlfc3RvcmUnO1xyXG5cclxuaW1wb3J0IHsgQVBJX0NPTkZJR1MgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQge1xyXG5cdEJhc2VJbnB1dENvbXBvbmVudCxcclxuXHREWElucHV0RXJyb3JNZXNzYWdlUGlwZSxcclxuXHRJbnB1dEVycm9yTWVzc2FnZVBpcGUsXHJcblx0VmFsdWVBY2Nlc3NvckRpcmVjdGl2ZVxyXG59IGZyb20gJ2FyaWwvdWkvbGliJztcclxuXHJcbmltcG9ydCB7IFNlbGVjdEJveEl0ZW0sIFNlbGVjdGlvbkdyb3VwRFRPLCBTZWxlY3Rpb25JdGVtLCBTZWxlY3Rpb25SZXF1ZXN0RFRPIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2VudW0tcGlja2VyW25nTW9kZWxdLCBlbnVtLXBpY2tlcltmb3JtQ29udHJvbF0sIGVudW0tcGlja2VyW2Zvcm1Db250cm9sTmFtZV0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9lbnVtLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcblx0aW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIER4U2VsZWN0Qm94TW9kdWxlLCBEWElucHV0RXJyb3JNZXNzYWdlUGlwZSwgVHJhbnNsb2NvTW9kdWxlLCBNdWx0aVNlbGVjdE1vZHVsZV0sXHJcblx0cHJvdmlkZXJzOiBbSW5wdXRFcnJvck1lc3NhZ2VQaXBlXSxcclxuXHRob3N0RGlyZWN0aXZlczogW1ZhbHVlQWNjZXNzb3JEaXJlY3RpdmVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbnVtUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0Q29tcG9uZW50IHtcclxuXHRzZWxlY3Rpb25JdGVtcyA9IHNpZ25hbDxTZWxlY3RCb3hJdGVtW10gfCBudWxsPihudWxsKTtcclxuXHRzZWxlY3RCb3hEYXRhU291cmNlID0gc2lnbmFsPERhdGFTb3VyY2UgfCBudWxsPihudWxsKTtcclxuXHRwcml2YXRlIG9yaWdpbmFsU2VsZWN0aW9uSXRlbXM6IFNlbGVjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cdC8qKlxyXG5cdCAqIFNpbmdsZSBTZWxlY3QgU3RhdGVzXHJcblx0ICovXHJcblxyXG5cdGl0ZW1LZXkgPSBpbnB1dCgna2V5Jyk7XHJcblx0aXRlbVRleHQgPSBpbnB1dCgndGV4dCcpO1xyXG5cdGdyb3VwTmFtZSA9IGlucHV0KCcnKTtcclxuXHRwYXJlbnRTZWxlY3Rpb25LZXkgPSBpbnB1dChudWxsKTtcclxuXHR0YWJpbmRleCA9IGlucHV0PG51bWJlcj4oMCk7XHJcblx0aXRlbXMgPSBpbnB1dDxTZWxlY3RCb3hJdGVtW10+KCk7XHJcblx0aXNNdWx0aXBsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRzZWxlY3RlZEl0ZW1UZXh0OiBzdHJpbmcgPSAnJztcclxuXHQvKiogKiBAZGVzY3JpcHRpb24gd2hlbiBncm91cGVkID0gdHJ1ZSwgb3B0aW9uIGl0ZW0gc3RydWN0dXJlIHsga2V5OnN0cmluZywgaXRlbXM6W10gfSAqL1xyXG5cdGdyb3VwZWQgPSBpbnB1dChmYWxzZSk7XHJcblx0c2hvd0NsZWFyQnV0dG9uID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0cGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHRzZWFyY2hFeHByID0gaW5wdXQ8c3RyaW5nIHwgc3RyaW5nW10+KCcnKTtcclxuXHRhY2NlcHRDdXN0b21WYWx1ZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcblx0LyoqXHJcblx0ICogVmlydHVhbCBTY3JvbGwgU3RhdGVzXHJcblx0ICovXHJcblx0dXNlVmlydHVhbFNjcm9sbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHR2aXJ0dWFsU2Nyb2xsSXRlbVNpemUgPSBpbnB1dDxudW1iZXI+KDMwKTtcclxuXHRzY3JvbGxIZWlnaHQgPSBpbnB1dDxzdHJpbmc+KCczMDBweCcpO1xyXG5cclxuXHQvKipcclxuXHQgKiBNdWx0aSBTZWxlY3QgU3RhdGVzXHJcblx0ICovXHJcblxyXG5cdHNlbGVjdGVkSXRlbXNMYWJlbCA9IGlucHV0PHN0cmluZz4oJ3swfSAgZGXEn2VyIHNlw6dpbGRpJyk7IC8vIGRlZmF1bHQgdmFsdWUgLT4gKHswfSBpdGVtcyBzZWxlY3RlZFxyXG5cdGFwcGVuZFRvID0gaW5wdXQ8c3RyaW5nPignYm9keScpO1xyXG5cdHN0eWxlID0gaW5wdXQ8b2JqZWN0Pih7fSk7XHJcblx0c3R5bGVDbGFzcyA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cdHRvb2x0aXAgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHR0b29sdGlwUG9zaXRpb24gPSBpbnB1dDxhbnk+KCd0b3AnKTtcclxuXHJcblx0QE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0Qm94SXRlbT4oKTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXHJcblx0XHRwdWJsaWMgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZVxyXG5cdCkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmdyb3VwTmFtZSgpIHx8IHRoaXMucGFyZW50U2VsZWN0aW9uS2V5KCkpIHRoaXMuZ2V0U2VsZWN0aW9uSXRlbXMoKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMudHJhbnNsb2NvU2VydmljZS5sYW5nQ2hhbmdlcyQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0aW9uSXRlbXMoKSAmJiAodGhpcy5zZWxlY3Rpb25JdGVtcygpIGFzIFNlbGVjdEJveEl0ZW1bXSk/Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZVNlbGVjdGlvbkl0ZW1zVGV4dCgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHNldFRpdGxlKGV2ZW50PzogYW55KSB7XHJcblx0XHRpZiAoZXZlbnQgJiYgZXZlbnRbdGhpcy5pdGVtVGV4dCgpXS5sZW5ndGggPiAyNSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbVRleHQgPSBldmVudCA/IGV2ZW50W3RoaXMuaXRlbVRleHQoKV0gOiAnJztcclxuXHRcdH1cclxuXHRcdHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoZXZlbnQpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgZ2V0U2VsZWN0aW9uSXRlbXMoKSB7XHJcblx0XHRjb25zdCBwYXlsb2FkOiBQYXJ0aWFsPFNlbGVjdGlvblJlcXVlc3REVE8+ID0ge1xyXG5cdFx0XHRncm91cE5hbWU6IHRoaXMuZ3JvdXBOYW1lKClcclxuXHRcdH07XHJcblxyXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5wYXJlbnRTZWxlY3Rpb25LZXkoKSkpIHtcclxuXHRcdFx0cGF5bG9hZC5wYXJlbnRTZWxlY3Rpb25LZXlzID0gdGhpcy5wYXJlbnRTZWxlY3Rpb25LZXkoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHBheWxvYWQucGFyZW50U2VsZWN0aW9uS2V5ID0gdGhpcy5wYXJlbnRTZWxlY3Rpb25LZXkoKTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBob3N0QXBpID0gQVBJX0NPTkZJR1MuZ2V0RXh0ZXJuYWxBcHBFbmRwb2ludChBcHBzLk1ORyk7XHJcblxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3Qgc2VsZWN0aW9uR3JvdXAgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuXHRcdFx0XHR0aGlzLmh0dHAucG9zdDxTZWxlY3Rpb25Hcm91cERUTz4oaG9zdEFwaSArICcvc2VsZWN0aW9uLWdyb3VwL2xvYWQnLCBwYXlsb2FkKVxyXG5cdFx0XHQpO1xyXG5cclxuXHRcdFx0dGhpcy5vcmlnaW5hbFNlbGVjdGlvbkl0ZW1zID0gc2VsZWN0aW9uR3JvdXA/LnNlbGVjdGlvbkl0ZW1zIHx8IFtdO1xyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0dGhpcy5vcmlnaW5hbFNlbGVjdGlvbkl0ZW1zID0gW107XHJcblx0XHR9XHJcblx0XHR0aGlzLnVwZGF0ZVNlbGVjdGlvbkl0ZW1zVGV4dCgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVTZWxlY3Rpb25JdGVtc1RleHQoKSB7XHJcblx0XHRpZiAoIXRoaXMub3JpZ2luYWxTZWxlY3Rpb25JdGVtcyB8fCB0aGlzLm9yaWdpbmFsU2VsZWN0aW9uSXRlbXMubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0aW9uSXRlbXMuc2V0KG51bGwpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdEJveERhdGFTb3VyY2Uuc2V0KG51bGwpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsb2NvU2VydmljZS5nZXRBY3RpdmVMYW5nKCk7XHJcblxyXG5cdFx0dGhpcy5zZWxlY3Rpb25JdGVtcy5zZXQobnVsbCk7XHJcblxyXG5cdFx0Y29uc3QgbWFwcGVkSXRlbXMgPSB0aGlzLm9yaWdpbmFsU2VsZWN0aW9uSXRlbXMubWFwKChpdGVtOiBTZWxlY3Rpb25JdGVtKSA9PiAoe1xyXG5cdFx0XHRrZXk6IGl0ZW0uc2VsZWN0aW9uS2V5LFxyXG5cdFx0XHR0ZXh0OlxyXG5cdFx0XHRcdGl0ZW0/LnNlbGVjdGlvbk11bHRpTGFuZ3VhZ2VEaXNwbGF5cz8uW2N1cnJlbnRMYW5nXSA/XHJcblx0XHRcdFx0XHRpdGVtLnNlbGVjdGlvbk11bHRpTGFuZ3VhZ2VEaXNwbGF5c1tjdXJyZW50TGFuZ11cclxuXHRcdFx0XHQ6XHRpdGVtLnNlbGVjdGlvbkRpc3BsYXksXHJcblx0XHRcdHBhcmVudFNlbGVjdGlvbktleTogaXRlbS5wYXJlbnRTZWxlY3Rpb25LZXlcclxuXHRcdH0pKTtcclxuXHJcblx0XHR0aGlzLnNlbGVjdGlvbkl0ZW1zLnNldChtYXBwZWRJdGVtcyk7XHJcblx0XHR0aGlzLnJlYnVpbGRTZWxlY3RCb3hEYXRhU291cmNlKG1hcHBlZEl0ZW1zKTtcclxuXHRcdHRoaXMuZmlsdGVyQ3VycmVudFZhbHVlQnlTZWxlY3Rpb25JdGVtcygpO1xyXG5cdH1cclxuXHJcblx0Ly8gUGFyZW50IGVudW0gKG11bHRpcGxlKSBkZcSfacWfdGnEn2luZGUgY2hpbGQnZGFuIHNhZGVjZSBnZcOnZXJzaXoga2V5J2xlcmkgdGVtaXpsZXJcclxuXHRmaWx0ZXJDdXJyZW50VmFsdWVCeVNlbGVjdGlvbkl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLnBhcmVudFNlbGVjdGlvbktleSgpKSByZXR1cm47XHJcblx0XHRjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLm5nQ29udHJvbC5jb250cm9sPy52YWx1ZTtcclxuXHRcdGNvbnN0IHZhbGlkS2V5cyA9IG5ldyBTZXQoXHJcblx0XHRcdCh0aGlzLnNlbGVjdGlvbkl0ZW1zKCkgfHwgW10pLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW3RoaXMuaXRlbUtleSgpXSlcclxuXHRcdCk7XHJcblxyXG5cdFx0aWYgKHRoaXMuaXNNdWx0aXBsZSgpKSB7XHJcblx0XHRcdC8vIENoaWxkIG11bHRpLXNlbGVjdDogZ2XDp2Vyc2l6IGtleSdsZXJpIGZpbHRyZWxlLCBnZcOnZXJsaWxlcmkgYsSxcmFrXHJcblx0XHRcdGlmICghQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpIHx8IGN1cnJlbnRWYWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHRcdFx0Y29uc3QgZmlsdGVyZWQgPSAoY3VycmVudFZhbHVlIGFzIHN0cmluZ1tdKS5maWx0ZXIoKGtleSkgPT4gdmFsaWRLZXlzLmhhcyhrZXkpKTtcclxuXHRcdFx0aWYgKGZpbHRlcmVkLmxlbmd0aCAhPT0gY3VycmVudFZhbHVlLmxlbmd0aCkge1xyXG5cdFx0XHRcdHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnNldFZhbHVlKGZpbHRlcmVkLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKCFjdXJyZW50VmFsdWUpIHJldHVybjtcclxuXHRcdFx0XHJcblx0XHRcdGlmICghdmFsaWRLZXlzLmhhcyhjdXJyZW50VmFsdWUpKSB7XHJcblx0XHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbD8ucmVzZXQobnVsbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uQ3VzdG9tSXRlbUNyZWF0aW5nKGV2ZW50OiBhbnkpIHtcclxuXHRcdGlmICghZXZlbnQudGV4dCkge1xyXG5cdFx0XHRldmVudC5jdXN0b21JdGVtID0gbnVsbDtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgbmV3SXRlbSA9IHtcclxuXHRcdFx0W3RoaXMuaXRlbUtleSgpXTogZXZlbnQudGV4dCxcclxuXHRcdFx0W3RoaXMuaXRlbVRleHQoKV06IGV2ZW50LnRleHRcclxuXHRcdH07XHJcblx0XHRjb25zdCBjdXJyZW50SXRlbXMgPSB0aGlzLnNlbGVjdGlvbkl0ZW1zKCkgfHwgW107XHJcblx0XHRjb25zdCB1cGRhdGVkSXRlbXMgPSBbLi4uY3VycmVudEl0ZW1zLCBuZXdJdGVtXTtcclxuXHRcdHRoaXMuc2VsZWN0aW9uSXRlbXMuc2V0KHVwZGF0ZWRJdGVtcyk7XHJcblx0XHR0aGlzLnJlYnVpbGRTZWxlY3RCb3hEYXRhU291cmNlKHVwZGF0ZWRJdGVtcyk7XHJcblx0XHRldmVudC5jdXN0b21JdGVtID0gbmV3SXRlbTtcclxuXHR9XHJcblxyXG5cdFx0cHJpdmF0ZSByZWJ1aWxkU2VsZWN0Qm94RGF0YVNvdXJjZShpdGVtczogU2VsZWN0Qm94SXRlbVtdKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMudXNlVmlydHVhbFNjcm9sbCgpKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0Qm94RGF0YVNvdXJjZS5zZXQobnVsbCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuc2VsZWN0Qm94RGF0YVNvdXJjZS5zZXQoXHJcblx0XHRcdG5ldyBEYXRhU291cmNlKHtcclxuXHRcdFx0XHRzdG9yZTogbmV3IEFycmF5U3RvcmUoe1xyXG5cdFx0XHRcdFx0ZGF0YTogaXRlbXMsXHJcblx0XHRcdFx0XHRrZXk6IHRoaXMuaXRlbUtleSgpXHJcblx0XHRcdFx0fSksXHJcblx0XHRcdFx0cGFnaW5hdGU6IHRydWUsXHJcblx0XHRcdFx0cGFnZVNpemU6IDUwXHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cdH1cclxufVxyXG4iLCJAaWYoaXNNdWx0aXBsZSgpKXtcclxuICA8cC1tdWx0aVNlbGVjdFxyXG5cdFtvcHRpb25zXT1cInNlbGVjdGlvbkl0ZW1zKCkgfHwgaXRlbXMoKSB8fCBbXVwiXHJcblx0W29wdGlvbkxhYmVsXT1cIml0ZW1UZXh0KClcIlxyXG5cdFtvcHRpb25WYWx1ZV09XCJpdGVtS2V5KClcIlxyXG5cdFtkZWZhdWx0TGFiZWxdPVwicGxhY2Vob2xkZXIoKVwiXHJcblx0W3NlbGVjdGVkSXRlbXNMYWJlbF09XCJzZWxlY3RlZEl0ZW1zTGFiZWwoKVwiXHJcblx0W3N0eWxlXT1cInN0eWxlKClcIlxyXG5cdFtzdHlsZUNsYXNzXT1cInN0eWxlQ2xhc3MoKVwiXHJcblx0W3Rvb2x0aXBdPVwidG9vbHRpcCgpXCJcclxuXHRbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbigpXCJcclxuXHRbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG5cdChuZ01vZGVsQ2hhbmdlKT1cIm5nQ29udHJvbC52aWV3VG9Nb2RlbFVwZGF0ZSgkZXZlbnQpXCJcclxuICBbbWF4U2VsZWN0ZWRMYWJlbHNdPVwiMlwiXHJcblx0W2FwcGVuZFRvXT1cImFwcGVuZFRvKClcIlxyXG4gIFt2aXJ0dWFsU2Nyb2xsXT1cInVzZVZpcnR1YWxTY3JvbGwoKVwiXHJcblx0W3ZpcnR1YWxTY3JvbGxJdGVtU2l6ZV09XCJ2aXJ0dWFsU2Nyb2xsSXRlbVNpemUoKVwiXHJcblx0W3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHQoKVwiXHJcblx0W2ZpbHRlcl09XCJ0cnVlXCI+XHJcbjwvcC1tdWx0aVNlbGVjdD5cclxufUBlbHNlIHtcclxuICA8ZHgtc2VsZWN0LWJveFxyXG4gICAgW2RhdGFTb3VyY2VdPVwidXNlVmlydHVhbFNjcm9sbCgpID8gc2VsZWN0Qm94RGF0YVNvdXJjZSgpIDogKHNlbGVjdGlvbkl0ZW1zKCkgfHwgaXRlbXMoKSB8fCBbXSlcIlxyXG4gICAgW3ZhbHVlRXhwcl09XCJpdGVtS2V5KClcIlxyXG4gICAgW2Rpc3BsYXlFeHByXT1cIml0ZW1UZXh0KClcIlxyXG4gICAgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICBbc2VhcmNoRXhwcl09XCJzZWFyY2hFeHByKClcIlxyXG4gICAgW3RhYkluZGV4XT1cInRhYmluZGV4KClcIlxyXG4gICAgW2dyb3VwZWRdPVwiZ3JvdXBlZCgpXCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcclxuICAgIFtzaG93Q2xlYXJCdXR0b25dPVwic2hvd0NsZWFyQnV0dG9uKClcIlxyXG4gICAgW2FjY2VwdEN1c3RvbVZhbHVlXT1cImFjY2VwdEN1c3RvbVZhbHVlKClcIlxyXG4gICAgKG9uQ3VzdG9tSXRlbUNyZWF0aW5nKT1cIm9uQ3VzdG9tSXRlbUNyZWF0aW5nKCRldmVudClcIlxyXG4gICAgW2lzVmFsaWRdPVwibmdDb250cm9sPy5jb250cm9sPy52YWxpZCB8fCBuZ0NvbnRyb2w/LmNvbnRyb2w/LnByaXN0aW5lIHx8IG5nQ29udHJvbD8uY29udHJvbD8uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgW3ZhbGlkYXRpb25FcnJvcl09XCJuZ0NvbnRyb2w/LmNvbnRyb2w/LmVycm9ycyB8IGR4SW5wdXRFcnJvck1lc3NhZ2U6IG5nQ29udHJvbD8uY29udHJvbFwiXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZVBvc2l0aW9uPVwidG9wXCJcclxuICAgIFtub0RhdGFUZXh0XT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdtZXNzYWdlcy5ub0RhdGFUb0Rpc3BsYXknKVwiXHJcbiAgICBbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwibmdDb250cm9sLnZpZXdUb01vZGVsVXBkYXRlKCRldmVudClcIlxyXG4gICAgKG9uU2VsZWN0aW9uQ2hhbmdlZCk9XCJvblNlbGVjdGlvbkNoYW5nZWQuZW1pdCgkZXZlbnQuc2VsZWN0ZWRJdGVtKTtzZXRUaXRsZSgkZXZlbnQuc2VsZWN0ZWRJdGVtKVwiXHJcbiAgICBbaW5wdXRBdHRyXT1cInsgJ3RpdGxlJzogc2VsZWN0ZWRJdGVtVGV4dCB9XCI+XHJcbiAgPC9keC1zZWxlY3QtYm94PlxyXG59XHJcbiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy9lbnVtUGlja2VyL3NyYy9lbnVtLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL2VudW1QaWNrZXIvc3JjL2VudW0tcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFDckQsT0FBTyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQ04sa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBR3JCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7OztBQVVoRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsa0JBQWtCO0lB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QixFQUFFLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLENBQUMsYUFDbEgsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFDbEIsQ0FBQyxzQkFBc0IsQ0FBQzs4R0E0QzlCLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIGVmZmVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTXVsdGlTZWxlY3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgRHhTZWxlY3RCb3hNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvc2VsZWN0LWJveCc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgRGF0YVNvdXJjZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvZGF0YV9zb3VyY2UnO1xyXG5pbXBvcnQgQXJyYXlTdG9yZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvYXJyYXlfc3RvcmUnO1xyXG5cclxuaW1wb3J0IHsgQVBJX0NPTkZJR1MgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQge1xyXG5cdEJhc2VJbnB1dENvbXBvbmVudCxcclxuXHREWElucHV0RXJyb3JNZXNzYWdlUGlwZSxcclxuXHRJbnB1dEVycm9yTWVzc2FnZVBpcGUsXHJcblx0VmFsdWVBY2Nlc3NvckRpcmVjdGl2ZVxyXG59IGZyb20gJ2FyaWwvdWkvbGliJztcclxuXHJcbmltcG9ydCB7IFNlbGVjdEJveEl0ZW0sIFNlbGVjdGlvbkdyb3VwRFRPLCBTZWxlY3Rpb25JdGVtLCBTZWxlY3Rpb25SZXF1ZXN0RFRPIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdlbnVtLXBpY2tlcltuZ01vZGVsXSwgZW51bS1waWNrZXJbZm9ybUNvbnRyb2xdLCBlbnVtLXBpY2tlcltmb3JtQ29udHJvbE5hbWVdJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vZW51bS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBEeFNlbGVjdEJveE1vZHVsZSwgRFhJbnB1dEVycm9yTWVzc2FnZVBpcGUsIFRyYW5zbG9jb01vZHVsZSwgTXVsdGlTZWxlY3RNb2R1bGUsIFRvb2x0aXBNb2R1bGVdLFxyXG5cdHByb3ZpZGVyczogW0lucHV0RXJyb3JNZXNzYWdlUGlwZV0sXHJcblx0aG9zdERpcmVjdGl2ZXM6IFtWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW51bVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dENvbXBvbmVudCB7XHJcblx0c2VsZWN0aW9uSXRlbXMgPSBzaWduYWw8U2VsZWN0Qm94SXRlbVtdIHwgbnVsbD4obnVsbCk7XHJcblx0c2VsZWN0Qm94RGF0YVNvdXJjZSA9IHNpZ25hbDxEYXRhU291cmNlIHwgbnVsbD4obnVsbCk7XHJcblx0cHJpdmF0ZSBvcmlnaW5hbFNlbGVjdGlvbkl0ZW1zOiBTZWxlY3Rpb25JdGVtW10gPSBbXTtcclxuXHQvKipcclxuXHQgKiBTaW5nbGUgU2VsZWN0IFN0YXRlc1xyXG5cdCAqL1xyXG5cclxuXHRpdGVtS2V5ID0gaW5wdXQoJ2tleScpO1xyXG5cdGl0ZW1UZXh0ID0gaW5wdXQoJ3RleHQnKTtcclxuXHRncm91cE5hbWUgPSBpbnB1dCgnJyk7XHJcblx0cGFyZW50U2VsZWN0aW9uS2V5ID0gaW5wdXQobnVsbCk7XHJcblx0dGFiaW5kZXggPSBpbnB1dDxudW1iZXI+KDApO1xyXG5cdGl0ZW1zID0gaW5wdXQ8U2VsZWN0Qm94SXRlbVtdPigpO1xyXG5cdGlzTXVsdGlwbGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0c2VsZWN0ZWRJdGVtVGV4dCA9ICcnO1xyXG5cdC8qKiAqIEBkZXNjcmlwdGlvbiB3aGVuIGdyb3VwZWQgPSB0cnVlLCBvcHRpb24gaXRlbSBzdHJ1Y3R1cmUgeyBrZXk6c3RyaW5nLCBpdGVtczpbXSB9ICovXHJcblx0Z3JvdXBlZCA9IGlucHV0KGZhbHNlKTtcclxuXHRzaG93Q2xlYXJCdXR0b24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHRwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cdHNlYXJjaEV4cHIgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oJycpO1xyXG5cdGFjY2VwdEN1c3RvbVZhbHVlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHRleHRDbGFtcENoYXJhY3RlcnMgPSBpbnB1dDxudW1iZXI+KDQwKTtcclxuXHJcblx0LyoqXHJcblx0ICogVmlydHVhbCBTY3JvbGwgU3RhdGVzXHJcblx0ICovXHJcblx0dXNlVmlydHVhbFNjcm9sbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHR2aXJ0dWFsU2Nyb2xsSXRlbVNpemUgPSBpbnB1dDxudW1iZXI+KDMwKTtcclxuXHRzY3JvbGxIZWlnaHQgPSBpbnB1dDxzdHJpbmc+KCczMDBweCcpO1xyXG5cclxuXHQvKipcclxuXHQgKiBNdWx0aSBTZWxlY3QgU3RhdGVzXHJcblx0ICovXHJcblxyXG5cdHNlbGVjdGVkSXRlbXNMYWJlbCA9IGlucHV0PHN0cmluZz4oJ3swfSAgZGXEn2VyIHNlw6dpbGRpJyk7IC8vIGRlZmF1bHQgdmFsdWUgLT4gKHswfSBpdGVtcyBzZWxlY3RlZFxyXG5cdGFwcGVuZFRvID0gaW5wdXQ8c3RyaW5nPignYm9keScpO1xyXG5cdHN0eWxlID0gaW5wdXQ8b2JqZWN0Pih7fSk7XHJcblx0c3R5bGVDbGFzcyA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cdHRvb2x0aXAgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHR0b29sdGlwUG9zaXRpb24gPSBpbnB1dDxhbnk+KCd0b3AnKTtcclxuXHJcblx0QE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0Qm94SXRlbT4oKTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXHJcblx0XHRwdWJsaWMgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZVxyXG5cdCkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmdyb3VwTmFtZSgpIHx8IHRoaXMucGFyZW50U2VsZWN0aW9uS2V5KCkpIHRoaXMuZ2V0U2VsZWN0aW9uSXRlbXMoKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMudHJhbnNsb2NvU2VydmljZS5sYW5nQ2hhbmdlcyQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0aW9uSXRlbXMoKSAmJiAodGhpcy5zZWxlY3Rpb25JdGVtcygpIGFzIFNlbGVjdEJveEl0ZW1bXSk/Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZVNlbGVjdGlvbkl0ZW1zVGV4dCgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHNldFRpdGxlKGV2ZW50PzogYW55KSB7XHJcblx0XHRpZiAoZXZlbnQgJiYgZXZlbnRbdGhpcy5pdGVtVGV4dCgpXS5sZW5ndGggPiAyNSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbVRleHQgPSBldmVudCA/IGV2ZW50W3RoaXMuaXRlbVRleHQoKV0gOiAnJztcclxuXHRcdH1cclxuXHRcdHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoZXZlbnQpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgZ2V0U2VsZWN0aW9uSXRlbXMoKSB7XHJcblx0XHRjb25zdCBwYXlsb2FkOiBQYXJ0aWFsPFNlbGVjdGlvblJlcXVlc3REVE8+ID0ge1xyXG5cdFx0XHRncm91cE5hbWU6IHRoaXMuZ3JvdXBOYW1lKClcclxuXHRcdH07XHJcblxyXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5wYXJlbnRTZWxlY3Rpb25LZXkoKSkpIHtcclxuXHRcdFx0cGF5bG9hZC5wYXJlbnRTZWxlY3Rpb25LZXlzID0gdGhpcy5wYXJlbnRTZWxlY3Rpb25LZXkoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHBheWxvYWQucGFyZW50U2VsZWN0aW9uS2V5ID0gdGhpcy5wYXJlbnRTZWxlY3Rpb25LZXkoKTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBob3N0QXBpID0gQVBJX0NPTkZJR1MuZ2V0RXh0ZXJuYWxBcHBFbmRwb2ludChBcHBzLk1ORyk7XHJcblxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3Qgc2VsZWN0aW9uR3JvdXAgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuXHRcdFx0XHR0aGlzLmh0dHAucG9zdDxTZWxlY3Rpb25Hcm91cERUTz4oaG9zdEFwaSArICcvc2VsZWN0aW9uLWdyb3VwL2xvYWQnLCBwYXlsb2FkKVxyXG5cdFx0XHQpO1xyXG5cclxuXHRcdFx0dGhpcy5vcmlnaW5hbFNlbGVjdGlvbkl0ZW1zID0gc2VsZWN0aW9uR3JvdXA/LnNlbGVjdGlvbkl0ZW1zIHx8IFtdO1xyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0dGhpcy5vcmlnaW5hbFNlbGVjdGlvbkl0ZW1zID0gW107XHJcblx0XHR9XHJcblx0XHR0aGlzLnVwZGF0ZVNlbGVjdGlvbkl0ZW1zVGV4dCgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVTZWxlY3Rpb25JdGVtc1RleHQoKSB7XHJcblx0XHRpZiAoIXRoaXMub3JpZ2luYWxTZWxlY3Rpb25JdGVtcyB8fCB0aGlzLm9yaWdpbmFsU2VsZWN0aW9uSXRlbXMubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0aW9uSXRlbXMuc2V0KG51bGwpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdEJveERhdGFTb3VyY2Uuc2V0KG51bGwpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsb2NvU2VydmljZS5nZXRBY3RpdmVMYW5nKCk7XHJcblxyXG5cdFx0dGhpcy5zZWxlY3Rpb25JdGVtcy5zZXQobnVsbCk7XHJcblxyXG5cdFx0Y29uc3QgbWFwcGVkSXRlbXMgPSB0aGlzLm9yaWdpbmFsU2VsZWN0aW9uSXRlbXMubWFwKChpdGVtOiBTZWxlY3Rpb25JdGVtKSA9PiAoe1xyXG5cdFx0XHRrZXk6IGl0ZW0uc2VsZWN0aW9uS2V5LFxyXG5cdFx0XHR0ZXh0OlxyXG5cdFx0XHRcdGl0ZW0/LnNlbGVjdGlvbk11bHRpTGFuZ3VhZ2VEaXNwbGF5cz8uW2N1cnJlbnRMYW5nXSA/XHJcblx0XHRcdFx0XHRpdGVtLnNlbGVjdGlvbk11bHRpTGFuZ3VhZ2VEaXNwbGF5c1tjdXJyZW50TGFuZ11cclxuXHRcdFx0XHQ6XHRpdGVtLnNlbGVjdGlvbkRpc3BsYXksXHJcblx0XHRcdHBhcmVudFNlbGVjdGlvbktleTogaXRlbS5wYXJlbnRTZWxlY3Rpb25LZXlcclxuXHRcdH0pKTtcclxuXHJcblx0XHR0aGlzLnNlbGVjdGlvbkl0ZW1zLnNldChtYXBwZWRJdGVtcyk7XHJcblx0XHR0aGlzLnJlYnVpbGRTZWxlY3RCb3hEYXRhU291cmNlKG1hcHBlZEl0ZW1zKTtcclxuXHRcdHRoaXMuZmlsdGVyQ3VycmVudFZhbHVlQnlTZWxlY3Rpb25JdGVtcygpO1xyXG5cdH1cclxuXHJcblx0Ly8gUGFyZW50IGVudW0gKG11bHRpcGxlKSBkZcSfacWfdGnEn2luZGUgY2hpbGQnZGFuIHNhZGVjZSBnZcOnZXJzaXoga2V5J2xlcmkgdGVtaXpsZXJcclxuXHRmaWx0ZXJDdXJyZW50VmFsdWVCeVNlbGVjdGlvbkl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLnBhcmVudFNlbGVjdGlvbktleSgpKSByZXR1cm47XHJcblx0XHRjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLm5nQ29udHJvbC5jb250cm9sPy52YWx1ZTtcclxuXHRcdGNvbnN0IHZhbGlkS2V5cyA9IG5ldyBTZXQoXHJcblx0XHRcdCh0aGlzLnNlbGVjdGlvbkl0ZW1zKCkgfHwgW10pLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW3RoaXMuaXRlbUtleSgpXSlcclxuXHRcdCk7XHJcblxyXG5cdFx0aWYgKHRoaXMuaXNNdWx0aXBsZSgpKSB7XHJcblx0XHRcdC8vIENoaWxkIG11bHRpLXNlbGVjdDogZ2XDp2Vyc2l6IGtleSdsZXJpIGZpbHRyZWxlLCBnZcOnZXJsaWxlcmkgYsSxcmFrXHJcblx0XHRcdGlmICghQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpIHx8IGN1cnJlbnRWYWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHRcdFx0Y29uc3QgZmlsdGVyZWQgPSAoY3VycmVudFZhbHVlIGFzIHN0cmluZ1tdKS5maWx0ZXIoKGtleSkgPT4gdmFsaWRLZXlzLmhhcyhrZXkpKTtcclxuXHRcdFx0aWYgKGZpbHRlcmVkLmxlbmd0aCAhPT0gY3VycmVudFZhbHVlLmxlbmd0aCkge1xyXG5cdFx0XHRcdHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnNldFZhbHVlKGZpbHRlcmVkLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKCFjdXJyZW50VmFsdWUpIHJldHVybjtcclxuXHRcdFx0XHJcblx0XHRcdGlmICghdmFsaWRLZXlzLmhhcyhjdXJyZW50VmFsdWUpKSB7XHJcblx0XHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbD8ucmVzZXQobnVsbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uQ3VzdG9tSXRlbUNyZWF0aW5nKGV2ZW50OiBhbnkpIHtcclxuXHRcdGlmICghZXZlbnQudGV4dCkge1xyXG5cdFx0XHRldmVudC5jdXN0b21JdGVtID0gbnVsbDtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgbmV3SXRlbSA9IHtcclxuXHRcdFx0W3RoaXMuaXRlbUtleSgpXTogZXZlbnQudGV4dCxcclxuXHRcdFx0W3RoaXMuaXRlbVRleHQoKV06IGV2ZW50LnRleHRcclxuXHRcdH07XHJcblx0XHRjb25zdCBjdXJyZW50SXRlbXMgPSB0aGlzLnNlbGVjdGlvbkl0ZW1zKCkgfHwgW107XHJcblx0XHRjb25zdCB1cGRhdGVkSXRlbXMgPSBbLi4uY3VycmVudEl0ZW1zLCBuZXdJdGVtXTtcclxuXHRcdHRoaXMuc2VsZWN0aW9uSXRlbXMuc2V0KHVwZGF0ZWRJdGVtcyk7XHJcblx0XHR0aGlzLnJlYnVpbGRTZWxlY3RCb3hEYXRhU291cmNlKHVwZGF0ZWRJdGVtcyk7XHJcblx0XHRldmVudC5jdXN0b21JdGVtID0gbmV3SXRlbTtcclxuXHR9XHJcblxyXG5cdFx0cHJpdmF0ZSByZWJ1aWxkU2VsZWN0Qm94RGF0YVNvdXJjZShpdGVtczogU2VsZWN0Qm94SXRlbVtdKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMudXNlVmlydHVhbFNjcm9sbCgpKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0Qm94RGF0YVNvdXJjZS5zZXQobnVsbCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuc2VsZWN0Qm94RGF0YVNvdXJjZS5zZXQoXHJcblx0XHRcdG5ldyBEYXRhU291cmNlKHtcclxuXHRcdFx0XHRzdG9yZTogbmV3IEFycmF5U3RvcmUoe1xyXG5cdFx0XHRcdFx0ZGF0YTogaXRlbXMsXHJcblx0XHRcdFx0XHRrZXk6IHRoaXMuaXRlbUtleSgpXHJcblx0XHRcdFx0fSksXHJcblx0XHRcdFx0cGFnaW5hdGU6IHRydWUsXHJcblx0XHRcdFx0cGFnZVNpemU6IDUwXHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cdH1cclxufVxyXG4iLCJAaWYgKGlzTXVsdGlwbGUoKSkge1xyXG5cdDxwLW11bHRpU2VsZWN0XHJcblx0XHRbb3B0aW9uc109XCJzZWxlY3Rpb25JdGVtcygpIHx8IGl0ZW1zKCkgfHwgW11cIlxyXG5cdFx0W29wdGlvblZhbHVlXT1cIml0ZW1LZXkoKVwiXHJcblx0XHRbZGVmYXVsdExhYmVsXT1cInBsYWNlaG9sZGVyKClcIlxyXG5cdFx0W3NlbGVjdGVkSXRlbXNMYWJlbF09XCJzZWxlY3RlZEl0ZW1zTGFiZWwoKVwiXHJcblx0XHRbc3R5bGVdPVwic3R5bGUoKVwiXHJcblx0XHRbc3R5bGVDbGFzc109XCJzdHlsZUNsYXNzKClcIlxyXG5cdFx0W3Rvb2x0aXBdPVwidG9vbHRpcCgpXCJcclxuXHRcdFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uKClcIlxyXG5cdFx0W2Zvcm1Db250cm9sXT1cIm5nQ29udHJvbC5jb250cm9sXCJcclxuXHRcdChuZ01vZGVsQ2hhbmdlKT1cIm5nQ29udHJvbC52aWV3VG9Nb2RlbFVwZGF0ZSgkZXZlbnQpXCJcclxuXHRcdFttYXhTZWxlY3RlZExhYmVsc109XCIyXCJcclxuXHRcdFthcHBlbmRUb109XCJhcHBlbmRUbygpXCJcclxuXHRcdFt2aXJ0dWFsU2Nyb2xsXT1cInVzZVZpcnR1YWxTY3JvbGwoKVwiXHJcblx0XHRbdmlydHVhbFNjcm9sbEl0ZW1TaXplXT1cInZpcnR1YWxTY3JvbGxJdGVtU2l6ZSgpXCJcclxuXHRcdFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0KClcIlxyXG5cdFx0W2ZpbHRlcl09XCJ0cnVlXCJcclxuXHRcdFtwYW5lbFN0eWxlXT1cInsgJ21heC13aWR0aCc6ICc0MDBweCcsICdtaW4td2lkdGgnOiAnYXV0bycgfVwiPlxyXG5cdFx0PG5nLXRlbXBsYXRlIGxldC1lbnVtIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuXHRcdFx0PGRpdiBbcFRvb2x0aXBdPVwiZW51bVtpdGVtVGV4dCgpXT8ubGVuZ3RoID4gdGV4dENsYW1wQ2hhcmFjdGVycygpID8gZW51bVtpdGVtVGV4dCgpXSA6ICcnXCI+XHJcblx0XHRcdFx0QGlmIChlbnVtW2l0ZW1UZXh0KCldPy5sZW5ndGggPiB0ZXh0Q2xhbXBDaGFyYWN0ZXJzKCkpIHtcclxuXHRcdFx0XHRcdHt7IGVudW1baXRlbVRleHQoKV0uc2xpY2UoMCwgdGV4dENsYW1wQ2hhcmFjdGVycygpKSB9fS4uLlxyXG5cdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0e3sgZW51bVtpdGVtVGV4dCgpXSB9fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdDwvcC1tdWx0aVNlbGVjdD5cclxufSBAZWxzZSB7XHJcblx0PGR4LXNlbGVjdC1ib3hcclxuICAgIFtkYXRhU291cmNlXT1cInVzZVZpcnR1YWxTY3JvbGwoKSA/IHNlbGVjdEJveERhdGFTb3VyY2UoKSA6IChzZWxlY3Rpb25JdGVtcygpIHx8IGl0ZW1zKCkgfHwgW10pXCJcclxuXHRcdFt2YWx1ZUV4cHJdPVwiaXRlbUtleSgpXCJcclxuXHRcdFtkaXNwbGF5RXhwcl09XCJpdGVtVGV4dCgpXCJcclxuXHRcdFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxyXG5cdFx0W3NlYXJjaEV4cHJdPVwic2VhcmNoRXhwcigpXCJcclxuXHRcdFt0YWJJbmRleF09XCJ0YWJpbmRleCgpXCJcclxuXHRcdFtncm91cGVkXT1cImdyb3VwZWQoKVwiXHJcblx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXHJcblx0XHRbc2hvd0NsZWFyQnV0dG9uXT1cInNob3dDbGVhckJ1dHRvbigpXCJcclxuXHRcdFthY2NlcHRDdXN0b21WYWx1ZV09XCJhY2NlcHRDdXN0b21WYWx1ZSgpXCJcclxuXHRcdChvbkN1c3RvbUl0ZW1DcmVhdGluZyk9XCJvbkN1c3RvbUl0ZW1DcmVhdGluZygkZXZlbnQpXCJcclxuXHRcdFtpc1ZhbGlkXT1cIm5nQ29udHJvbD8uY29udHJvbD8udmFsaWQgfHwgbmdDb250cm9sPy5jb250cm9sPy5wcmlzdGluZSB8fCBuZ0NvbnRyb2w/LmNvbnRyb2w/LmRpc2FibGVkIHx8IGZhbHNlXCJcclxuXHRcdFt2YWxpZGF0aW9uRXJyb3JdPVwibmdDb250cm9sPy5jb250cm9sPy5lcnJvcnMgfCBkeElucHV0RXJyb3JNZXNzYWdlOiBuZ0NvbnRyb2w/LmNvbnRyb2xcIlxyXG5cdFx0dmFsaWRhdGlvbk1lc3NhZ2VQb3NpdGlvbj1cInRvcFwiXHJcblx0XHRbbm9EYXRhVGV4dF09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbWVzc2FnZXMubm9EYXRhVG9EaXNwbGF5JylcIlxyXG5cdFx0W2Zvcm1Db250cm9sXT1cIm5nQ29udHJvbC5jb250cm9sXCJcclxuXHRcdChuZ01vZGVsQ2hhbmdlKT1cIm5nQ29udHJvbC52aWV3VG9Nb2RlbFVwZGF0ZSgkZXZlbnQpXCJcclxuICAgIChvblNlbGVjdGlvbkNoYW5nZWQpPVwib25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoJGV2ZW50LnNlbGVjdGVkSXRlbSk7c2V0VGl0bGUoJGV2ZW50LnNlbGVjdGVkSXRlbSlcIlxyXG4gICAgW2lucHV0QXR0cl09XCJ7ICd0aXRsZSc6IHNlbGVjdGVkSXRlbVRleHQgfVwiPlxyXG5cdDwvZHgtc2VsZWN0LWJveD5cclxufVxyXG4iXX0=
@@ -1,2 +1,3 @@
1
1
  export * from './src/notFound.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3V0aWwvY3VzdG9tX3BhZ2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9ub3RGb3VuZC5jb21wb25lbnQnO1xyXG4iXX0=
2
+ export * from './src/forbidden.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3V0aWwvY3VzdG9tX3BhZ2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL25vdEZvdW5kLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2ZvcmJpZGRlbi5jb21wb25lbnQnO1xyXG4iXX0=