@c8y/ngx-components 1021.21.0 → 1021.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/alarms/alarm-details.component.d.ts +1 -3
  2. package/alarms/alarm-details.component.d.ts.map +1 -1
  3. package/alarms/alarm-info.component.d.ts +9 -14
  4. package/alarms/alarm-info.component.d.ts.map +1 -1
  5. package/alarms/alarms-view.service.d.ts.map +1 -1
  6. package/alarms/alarms.component.d.ts.map +1 -1
  7. package/alarms/alarms.helper.d.ts +5 -0
  8. package/alarms/alarms.helper.d.ts.map +1 -0
  9. package/alarms/alarms.module.d.ts.map +1 -1
  10. package/alarms/cockpit/index.d.ts.map +1 -1
  11. package/alarms/devicemanagement/index.d.ts.map +1 -1
  12. package/alarms/index.d.ts +5 -4
  13. package/alarms/index.d.ts.map +1 -1
  14. package/core/router/context-route.component.d.ts +8 -3
  15. package/core/router/context-route.component.d.ts.map +1 -1
  16. package/core/router/context-route.service.d.ts +29 -3
  17. package/core/router/context-route.service.d.ts.map +1 -1
  18. package/core/router/router-tabs.resolver.d.ts +4 -1
  19. package/core/router/router-tabs.resolver.d.ts.map +1 -1
  20. package/core/router/router.model.d.ts +40 -3
  21. package/core/router/router.model.d.ts.map +1 -1
  22. package/core/router/router.module.d.ts +2 -1
  23. package/core/router/router.module.d.ts.map +1 -1
  24. package/core/router/router.service.d.ts +5 -4
  25. package/core/router/router.service.d.ts.map +1 -1
  26. package/core/router/scoped-context-route.service.d.ts +57 -0
  27. package/core/router/scoped-context-route.service.d.ts.map +1 -0
  28. package/core/router/view-context.service.d.ts +8 -18
  29. package/core/router/view-context.service.d.ts.map +1 -1
  30. package/esm2022/alarms/alarm-details.component.mjs +7 -9
  31. package/esm2022/alarms/alarm-info.component.mjs +23 -33
  32. package/esm2022/alarms/alarms-view.service.mjs +2 -2
  33. package/esm2022/alarms/alarms.component.mjs +10 -3
  34. package/esm2022/alarms/alarms.helper.mjs +32 -0
  35. package/esm2022/alarms/alarms.module.mjs +5 -5
  36. package/esm2022/alarms/cockpit/index.mjs +13 -17
  37. package/esm2022/alarms/devicemanagement/index.mjs +15 -18
  38. package/esm2022/alarms/index.mjs +6 -5
  39. package/esm2022/core/router/context-route.component.mjs +23 -13
  40. package/esm2022/core/router/context-route.service.mjs +37 -5
  41. package/esm2022/core/router/router-tabs.resolver.mjs +46 -15
  42. package/esm2022/core/router/router.model.mjs +6 -1
  43. package/esm2022/core/router/router.module.mjs +20 -13
  44. package/esm2022/core/router/router.service.mjs +24 -10
  45. package/esm2022/core/router/scoped-context-route.service.mjs +152 -0
  46. package/esm2022/core/router/view-context.service.mjs +59 -16
  47. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +12 -16
  48. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +14 -17
  50. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-alarms.mjs +198 -170
  52. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  53. package/fesm2022/c8y-ngx-components.mjs +403 -131
  54. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  55. package/package.json +1 -1
@@ -1,12 +1,12 @@
1
1
  import { importProvidersFrom, Injectable, InjectionToken, Injector } from '@angular/core';
2
2
  import { Router, ROUTES } from '@angular/router';
3
- import { ViewContext } from './router.model';
4
- import { ContextRouteService } from './context-route.service';
5
- import { distinctUntilChanged, filter, shareReplay, take } from 'rxjs/operators';
6
- import { fromTriggerOnce, hookGeneric, getInjectedHooks, InjectionType, ExtensionPointWithoutStateForPlugins } from '../common/extension-hooks';
7
- import { PluginsResolveService } from '../plugins';
8
3
  import { flatten } from 'lodash';
4
+ import { distinctUntilChanged, filter, shareReplay, take } from 'rxjs/operators';
5
+ import { ExtensionPointWithoutStateForPlugins, fromTriggerOnce, getInjectedHooks, hookGeneric, InjectionType } from '../common/extension-hooks';
9
6
  import { OptionsService } from '../common/options.service';
7
+ import { PluginsResolveService } from '../plugins';
8
+ import { ContextRouteService } from './context-route.service';
9
+ import { ViewContext } from './router.model';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@angular/router";
12
12
  import * as i2 from "./context-route.service";
@@ -114,16 +114,17 @@ export class RouterService extends ExtensionPointWithoutStateForPlugins {
114
114
  // Empty route needs to be last as of navigation to angularjs routes
115
115
  // if ** route hit, the angularjs routes are loaded.
116
116
  const emptyRoute = this.router.config.find(r => r.path === '**');
117
+ const rootContextRoutes = this.findAllRootContextRoutes([...this.router.config, ...routes]);
117
118
  this.router.resetConfig([
118
119
  ...this.router.config.filter(r => r.path !== '**'),
119
- ...routes.map((r) => this.convertRoute(this.router.config, r)),
120
+ ...routes.map((r) => this.convertRoute(rootContextRoutes, r)),
120
121
  emptyRoute
121
122
  ].filter(Boolean));
122
123
  }
123
- convertRoute(initialConfig, route) {
124
+ convertRoute(rootContextRoutes, route) {
124
125
  if (route.context) {
125
- initialConfig.forEach((r) => {
126
- if (r.data && r.data.context === route.context) {
126
+ rootContextRoutes.forEach((r) => {
127
+ if (r.rootContext === route.context) {
127
128
  r.children = [route, ...(r.children || [])];
128
129
  }
129
130
  });
@@ -131,6 +132,19 @@ export class RouterService extends ExtensionPointWithoutStateForPlugins {
131
132
  }
132
133
  return route;
133
134
  }
135
+ findAllRootContextRoutes(routes) {
136
+ const result = [];
137
+ routes.forEach(route => {
138
+ if (route.rootContext) {
139
+ result.push(route);
140
+ }
141
+ if (route.children) {
142
+ const childRoutes = this.findAllRootContextRoutes(route.children);
143
+ result.push(...childRoutes);
144
+ }
145
+ });
146
+ return result;
147
+ }
134
148
  resolveRouterForChildRoutes(moduleRef, remoteNgModule) {
135
149
  // NOTE: stolen from lazy loaded routes from Angular itself.
136
150
  // https://github.com/angular/angular/blob/da58801f95c66c201e332189af25702bdd722f3f/packages/router/src/router_config_loader.ts#L103-L108
@@ -152,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
152
166
  providedIn: 'root'
153
167
  }]
154
168
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Router }, { type: i2.ContextRouteService }, { type: i3.PluginsResolveService }, { type: i4.OptionsService }] });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci9yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUF1QixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBRUwsZUFBZSxFQUVmLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLG9DQUFvQyxFQUVyQyxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBc0IzRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQWUsWUFBWSxDQUFDLENBQUM7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUE2QixFQUFFLE9BQXFDO0lBQzVGLE9BQU8sV0FBVyxDQUFRLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxhQUFjLFNBQVEsb0NB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SSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQy9DLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDOUMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztRQUNULENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTywyQkFBMkIsQ0FBQyxTQUEyQixFQUFFLGNBQW1CO1FBQ2xGLDREQUE0RDtRQUM1RCx5SUFBeUk7UUFDekksTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFOUYsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDOUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7OEdBdEhVLGFBQWE7a0hBQWIsYUFBYSxjQUZaLE1BQU07OzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaW1wb3J0UHJvdmlkZXJzRnJvbSxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBOZ01vZHVsZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgUk9VVEVTIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJvdXRlRmFjdG9yeSwgUm91dGUsIFZpZXdDb250ZXh0IH0gZnJvbSAnLi9yb3V0ZXIubW9kZWwnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlU2VydmljZSB9IGZyb20gJy4vY29udGV4dC1yb3V0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc2hhcmVSZXBsYXksIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBFeHRlbnNpb25GYWN0b3J5LFxuICBmcm9tVHJpZ2dlck9uY2UsXG4gIEdlbmVyaWNIb29rVHlwZSxcbiAgaG9va0dlbmVyaWMsXG4gIGdldEluamVjdGVkSG9va3MsXG4gIEluamVjdGlvblR5cGUsXG4gIEV4dGVuc2lvblBvaW50V2l0aG91dFN0YXRlRm9yUGx1Z2lucyxcbiAgR2VuZXJpY0hvb2tPcHRpb25zXG59IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgUGx1Z2luc1Jlc29sdmVTZXJ2aWNlIH0gZnJvbSAnLi4vcGx1Z2lucyc7XG5pbXBvcnQgeyBmbGF0dGVuIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5cbi8qKlxuICogQW4gZXh0ZW5zaW9uIEhPT0sgY2FuIHVzZSBlaXRoZXIgYSBwdXJlIHZhbHVlOlxuICogYGBgdHlwZXNjcmlwdFxuICogIHsgcHJvdmlkZTogSE9PS19YLCB1c2VWYWx1ZTogeyAuLi5ob29rVmFsdWUgfSwgbXVsdGk6IHRydWUgfVxuICogYGBgXG4gKlxuICogT3IgYW4gYXJyYXkgdG8gZGlyZWN0bHkgcmVnaXN0ZXIgbXVsdGlwbGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgeyBwcm92aWRlOiBIT09LX1gsIHVzZVZhbHVlOiBbeyAuLi5ob29rVmFsdWVzIH1dLCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqXG4gKiBPciBhbiBFeHRlbnNpb25GYWN0b3J5IHdoaWNoIGFsbG93cyB0byBkZWZpbmUgYSBnZXQoKSBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvblxuICogZ2V0cyBjYWxsZWQgb24gZWFjaCBuYXZpZ2F0aW9uIHdpdGggdGhlIGN1cnJlbnQgcm91dGUgYW5kIGNhbiByZXR1cm4gdmFsdWVzXG4gKiBhc3luYyAob2JzZXJ2YWJsZSBvciBwcm9taXNlKS5cbiAqIGBgYHR5cGVzY3JpcHRcbiAqICB7IHByb3ZpZGU6IEhPT0tfWCwgdXNlRmFjdG9yeTogeyBnZXQ6IChyb3V0ZSkgPT4gZG9Tb21ldGhpbmdBc3luYyhyb3V0ZSkgfSwgbXVsdGk6IHRydWUgfVxuICogYGBgXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlRXh0ZW5zaW9uID0gUm91dGUgfCBSb3V0ZVtdIHwgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT47XG5cbi8qKlxuICogQSBob29rIHRvIHVzZSBmb3IgTXVsdGkgUHJvdmlkZXIgZXh0ZW5zaW9uLlxuICogQGRlcHJlY2F0ZWQgQ29uc2lkZXIgdXNpbmcgdGhlIGBob29rUm91dGVgIGZ1bmN0aW9uIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBIT09LX1JPVVRFID0gbmV3IEluamVjdGlvblRva2VuPFJvdXRlRmFjdG9yeT4oJ0hPT0tfUk9VVEUnKTtcblxuLyoqXG4gKiBZb3UgY2FuIGVpdGhlciBwcm92aWRlIGEgc2luZ2xlIGBSb3V0ZWAgYXMgcGFyYW1ldGVyOlxuICogYGBgdHlwZXNjcmlwdFxuICogIGhvb2tSb3V0ZSguLi4pXG4gKiBgYGBcbiAqXG4gKiBPciBhbiBhcnJheSB0byBkaXJlY3RseSByZWdpc3RlciBtdWx0aXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICBob29rUm91dGUoWy4uLl0pXG4gKiBgYGBcbiAqXG4gKiBPciB5b3UgcHJvdmlkZSBhbiBTZXJ2aWNlIHRoYXQgaW1wbGVtZW50cyBgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT5gXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgZXhwb3J0IGNsYXNzIE15Um91dGVGYWN0b3J5IGltcGxlbWVudHMgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT4gey4uLn1cbiAqICAuLi5cbiAqICBob29rUm91dGUoTXlSb3V0ZUZhY3RvcnkpXG4gKiBgYGBcbiAqIEEgdHlwZWQgYWx0ZXJuYXRpdmUgdG8gYEhPT0tfUk9VVEVgLlxuICogQHBhcmFtIHJvdXRlIFRoZSBgUm91dGVgJ3Mgb3IgYEV4dGVuc2lvbkZhY3RvcnlgIHRvIGJlIHByb3ZpZGVkLlxuICogQHJldHVybnMgQW4gYFByb3ZpZGVyYCB0byBiZSBwcm92aWRlZCBpbiB5b3VyIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhvb2tSb3V0ZShyb3V0ZTogR2VuZXJpY0hvb2tUeXBlPFJvdXRlPiwgb3B0aW9ucz86IFBhcnRpYWw8R2VuZXJpY0hvb2tPcHRpb25zPikge1xuICByZXR1cm4gaG9va0dlbmVyaWM8Um91dGU+KHJvdXRlLCBIT09LX1JPVVRFLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBBIHNlcnZpY2Ugd2hpY2ggZGVmaW5lcyByb3V0ZXMgZm9yIHRoZSBhcHBsaWNhdGlvbi4gWW91IGNhbiB1c2VcbiAqIEhPT0tfUk9VVEVTIG9yIHBhc3NcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUm91dGVyU2VydmljZSBleHRlbmRzIEV4dGVuc2lvblBvaW50V2l0aG91dFN0YXRlRm9yUGx1Z2luczxSb3V0ZT4ge1xuICByZWFkb25seSBzdGF0ZSA9IG5ldyBNYXA8c3RyaW5nLCBSb3V0ZT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByb290SW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGNvbnRleHRSb3V0ZVNlcnZpY2U6IENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gICAgcGx1Z2luczogUGx1Z2luc1Jlc29sdmVTZXJ2aWNlLFxuICAgIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHJvb3RJbmplY3RvciwgcGx1Z2lucyk7XG4gICAgdGhpcy5pdGVtcyQgPSB0aGlzLnNldHVwSXRlbXNPYnNlcnZhYmxlKCk7XG5cbiAgICAvLyBXZSBhcmUgZG9pbmcgYSBzZWxmIHN1YnNjcmlwdGlvbiB0byBhZGQgdGhlIG5ldyByb3V0ZXNcbiAgICAvLyB0byB0aGUgcm91dGVyIGNvbmZpZ3VyYXRpb24uXG4gICAgdGhpcy5pdGVtcyQuc3Vic2NyaWJlKChyb3V0ZXM6IFJvdXRlW10pID0+IHtcbiAgICAgIGNvbnN0IHRvQWRkUm91dGVzID0gcm91dGVzLmZpbHRlcigocm91dGU6IFJvdXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBgJHtyb3V0ZS5jb250ZXh0IHx8ICcnfSR7cm91dGUucGF0aH1gO1xuICAgICAgICBjb25zdCBpc0FscmVhZHlBZGRlZCA9IHRoaXMuc3RhdGUuaGFzKHBhdGgpO1xuICAgICAgICBpZiAoIWlzQWxyZWFkeUFkZGVkKSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZS5zZXQocGF0aCwgcm91dGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXNBbHJlYWR5QWRkZWQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkUm91dGUodG9BZGRSb3V0ZXMpO1xuICAgIH0pO1xuXG4gICAgcGx1Z2lucy5wbHVnaW5EZXRhaWxzJC5zdWJzY3JpYmUoKHsgbW9kdWxlUmVmLCByZW1vdGVOZ01vZHVsZSB9KSA9PiB7XG4gICAgICB0aGlzLnJlc29sdmVSb3V0ZXJGb3JDaGlsZFJvdXRlcyhtb2R1bGVSZWYsIHJlbW90ZU5nTW9kdWxlKTtcbiAgICB9KTtcblxuICAgIC8vIG9ubHkgbmVlZGVkIGluIGNhc2Ugb2YgcHVyZSBhbmd1bGFyIGFwcGxpY2F0aW9uXG4gICAgLy8gb3RoZXJ3aXNlIGhhbmRsZWQgYnkgYnJpZGdlIHNlcnZpY2VcbiAgICBpZiAoIW9wdGlvbnMudXBncmFkZSkge1xuICAgICAgcGx1Z2lucy5hbGxQbHVnaW5zTG9hZGVkJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIodG1wID0+ICEhdG1wKSxcbiAgICAgICAgICB0YWtlKDEpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIuaW5pdGlhbE5hdmlnYXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggdGhlIGN1cnJlbnQgY29udGV4dFxuICAgKi9cbiAgcmVmcmVzaCgpIHtcbiAgICBzdXBlci5yZWZyZXNoKCk7XG4gICAgdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLnJlZnJlc2hDb250ZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IHJvdXRlIHRvIHRoZSByb3V0ZXIgY29uZmlndXJhdGlvbiBvciBhIGNvbnRleHQuXG4gICAqIEBwYXJhbSByb3V0ZSBUaGUgcm91dGUgdG8gYWRkXG4gICAqL1xuICBhZGRSb3V0ZShyb3V0ZTogUm91dGUgfCBSb3V0ZVtdKSB7XG4gICAgdGhpcy5hZGRSb3V0ZXMoQXJyYXkuaXNBcnJheShyb3V0ZSkgPyByb3V0ZSA6IFtyb3V0ZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIE1PIGlzIGFuIGdyb3VwIG9yIGFuIGRldmljZSBhbmQgcmV0dXJuc1xuICAgKiB0aGUgY29ycmVjdCBocmVmIHRvIGxpbmsgY29ycmVjdGx5IHRvIHRoYXQgTU8uXG4gICAqIEBwYXJhbSBncm91cE9yRGV2aWNlIFRoZSBNTyBvZiBhIGdyb3VwIG9yIHRoZSBkZXZpY2UuXG4gICAqIEBwYXJhbSBwcmVmaXggSG93IHNob3VsZCB0aGUgbGluayBiZSBwcmVmaXhlZC5cbiAgICovXG4gIGdldEhyZWYoZ3JvdXBPckRldmljZTogSU1hbmFnZWRPYmplY3QsIHByZWZpeCA9ICcjLycpOiBzdHJpbmcge1xuICAgIGlmIChncm91cE9yRGV2aWNlLmM4eV9Jc0RldmljZUdyb3VwIHx8IGdyb3VwT3JEZXZpY2UuYzh5X0lzRHluYW1pY0dyb3VwKSB7XG4gICAgICByZXR1cm4gYCR7cHJlZml4fSR7Vmlld0NvbnRleHQuR3JvdXAucmVwbGFjZSgnOmlkJywgZ3JvdXBPckRldmljZS5pZCl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke1ZpZXdDb250ZXh0LkRldmljZS5yZXBsYWNlKCc6aWQnLCBncm91cE9yRGV2aWNlLmlkKX1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwSXRlbXNPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8Um91dGVbXT4ge1xuICAgIHJldHVybiBmcm9tVHJpZ2dlck9uY2U8Um91dGU+KHRoaXMucm91dGVyLCB0aGlzLnJlZnJlc2gkLCBbXG4gICAgICBnZXRJbmplY3RlZEhvb2tzPFJvdXRlPihIT09LX1JPVVRFLCB0aGlzLmluamVjdG9ycywgSW5qZWN0aW9uVHlwZS5ST1VURSksXG4gICAgICAoKSA9PiB0aGlzLmZhY3Rvcmllc1xuICAgIF0pLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRSb3V0ZXMocm91dGVzKSB7XG4gICAgLy8gRW1wdHkgcm91dGUgbmVlZHMgdG8gYmUgbGFzdCBhcyBvZiBuYXZpZ2F0aW9uIHRvIGFuZ3VsYXJqcyByb3V0ZXNcbiAgICAvLyBpZiAqKiByb3V0ZSBoaXQsIHRoZSBhbmd1bGFyanMgcm91dGVzIGFyZSBsb2FkZWQuXG4gICAgY29uc3QgZW1wdHlSb3V0ZSA9IHRoaXMucm91dGVyLmNvbmZpZy5maW5kKHIgPT4gci5wYXRoID09PSAnKionKTtcbiAgICB0aGlzLnJvdXRlci5yZXNldENvbmZpZyhcbiAgICAgIFtcbiAgICAgICAgLi4udGhpcy5yb3V0ZXIuY29uZmlnLmZpbHRlcihyID0+IHIucGF0aCAhPT0gJyoqJyksXG4gICAgICAgIC4uLnJvdXRlcy5tYXAoKHI6IFJvdXRlKSA9PiB0aGlzLmNvbnZlcnRSb3V0ZSh0aGlzLnJvdXRlci5jb25maWcsIHIpKSxcbiAgICAgICAgZW1wdHlSb3V0ZVxuICAgICAgXS5maWx0ZXIoQm9vbGVhbilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Um91dGUoaW5pdGlhbENvbmZpZywgcm91dGU6IFJvdXRlKSB7XG4gICAgaWYgKHJvdXRlLmNvbnRleHQpIHtcbiAgICAgIGluaXRpYWxDb25maWcuZm9yRWFjaCgocjogUm91dGUpID0+IHtcbiAgICAgICAgaWYgKHIuZGF0YSAmJiByLmRhdGEuY29udGV4dCA9PT0gcm91dGUuY29udGV4dCkge1xuICAgICAgICAgIHIuY2hpbGRyZW4gPSBbcm91dGUsIC4uLihyLmNoaWxkcmVuIHx8IFtdKV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVSb3V0ZXJGb3JDaGlsZFJvdXRlcyhtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPGFueT4sIHJlbW90ZU5nTW9kdWxlOiBhbnkpIHtcbiAgICAvLyBOT1RFOiBzdG9sZW4gZnJvbSBsYXp5IGxvYWRlZCByb3V0ZXMgZnJvbSBBbmd1bGFyIGl0c2VsZi5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvZGE1ODgwMWY5NWM2NmMyMDFlMzMyMTg5YWYyNTcwMmJkZDcyMmYzZi9wYWNrYWdlcy9yb3V0ZXIvc3JjL3JvdXRlcl9jb25maWdfbG9hZGVyLnRzI0wxMDMtTDEwOFxuICAgIGNvbnN0IHJhd1JvdXRlcyA9IGZsYXR0ZW4obW9kdWxlUmVmLmluamVjdG9yLmdldChST1VURVMsIFtdLCB7IHNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pKTtcblxuICAgIGlmIChyYXdSb3V0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgcm91dGVXaXRoSW5qZWN0b3IgPSByYXdSb3V0ZXMubWFwKHJvdXRlID0+IHtcbiAgICAgICAgcm91dGUucHJvdmlkZXJzID0gW2ltcG9ydFByb3ZpZGVyc0Zyb20ocmVtb3RlTmdNb2R1bGUpXTtcbiAgICAgICAgcmV0dXJuIHJvdXRlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmFkZFJvdXRlKHJvdXRlV2l0aEluamVjdG9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci9yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBRUwsb0NBQW9DLEVBQ3BDLGVBQWUsRUFHZixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLGFBQWEsRUFDZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUF1QixXQUFXLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQXNCeEY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFlLFlBQVksQ0FBQyxDQUFDO0FBRXpFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBNkIsRUFBRSxPQUFxQztJQUM1RixPQUFPLFdBQVcsQ0FBUSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sYUFBYyxTQUFRLG9D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Q0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM5QyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDeEQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQzs4R0FySVUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpbXBvcnRQcm92aWRlcnNGcm9tLFxuICBJbmplY3RhYmxlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0b3IsXG4gIE5nTW9kdWxlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXMsIFJPVVRFUyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc2hhcmVSZXBsYXksIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBFeHRlbnNpb25GYWN0b3J5LFxuICBFeHRlbnNpb25Qb2ludFdpdGhvdXRTdGF0ZUZvclBsdWdpbnMsXG4gIGZyb21UcmlnZ2VyT25jZSxcbiAgR2VuZXJpY0hvb2tPcHRpb25zLFxuICBHZW5lcmljSG9va1R5cGUsXG4gIGdldEluamVjdGVkSG9va3MsXG4gIGhvb2tHZW5lcmljLFxuICBJbmplY3Rpb25UeXBlXG59IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFBsdWdpbnNSZXNvbHZlU2VydmljZSB9IGZyb20gJy4uL3BsdWdpbnMnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlU2VydmljZSB9IGZyb20gJy4vY29udGV4dC1yb3V0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlLCBSb3V0ZUZhY3RvcnksIFZpZXdDb250ZXh0LCBWaWV3Q29udGV4dFJvb3RSb3V0ZSB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcblxuLyoqXG4gKiBBbiBleHRlbnNpb24gSE9PSyBjYW4gdXNlIGVpdGhlciBhIHB1cmUgdmFsdWU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgeyBwcm92aWRlOiBIT09LX1gsIHVzZVZhbHVlOiB7IC4uLmhvb2tWYWx1ZSB9LCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqXG4gKiBPciBhbiBhcnJheSB0byBkaXJlY3RseSByZWdpc3RlciBtdWx0aXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICB7IHByb3ZpZGU6IEhPT0tfWCwgdXNlVmFsdWU6IFt7IC4uLmhvb2tWYWx1ZXMgfV0sIG11bHRpOiB0cnVlIH1cbiAqIGBgYFxuICpcbiAqIE9yIGFuIEV4dGVuc2lvbkZhY3Rvcnkgd2hpY2ggYWxsb3dzIHRvIGRlZmluZSBhIGdldCgpIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uXG4gKiBnZXRzIGNhbGxlZCBvbiBlYWNoIG5hdmlnYXRpb24gd2l0aCB0aGUgY3VycmVudCByb3V0ZSBhbmQgY2FuIHJldHVybiB2YWx1ZXNcbiAqIGFzeW5jIChvYnNlcnZhYmxlIG9yIHByb21pc2UpLlxuICogYGBgdHlwZXNjcmlwdFxuICogIHsgcHJvdmlkZTogSE9PS19YLCB1c2VGYWN0b3J5OiB7IGdldDogKHJvdXRlKSA9PiBkb1NvbWV0aGluZ0FzeW5jKHJvdXRlKSB9LCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVFeHRlbnNpb24gPSBSb3V0ZSB8IFJvdXRlW10gfCBFeHRlbnNpb25GYWN0b3J5PFJvdXRlPjtcblxuLyoqXG4gKiBBIGhvb2sgdG8gdXNlIGZvciBNdWx0aSBQcm92aWRlciBleHRlbnNpb24uXG4gKiBAZGVwcmVjYXRlZCBDb25zaWRlciB1c2luZyB0aGUgYGhvb2tSb3V0ZWAgZnVuY3Rpb24gaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IEhPT0tfUk9VVEUgPSBuZXcgSW5qZWN0aW9uVG9rZW48Um91dGVGYWN0b3J5PignSE9PS19ST1VURScpO1xuXG4vKipcbiAqIFlvdSBjYW4gZWl0aGVyIHByb3ZpZGUgYSBzaW5nbGUgYFJvdXRlYCBhcyBwYXJhbWV0ZXI6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaG9va1JvdXRlKC4uLilcbiAqIGBgYFxuICpcbiAqIE9yIGFuIGFycmF5IHRvIGRpcmVjdGx5IHJlZ2lzdGVyIG11bHRpcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogIGhvb2tSb3V0ZShbLi4uXSlcbiAqIGBgYFxuICpcbiAqIE9yIHlvdSBwcm92aWRlIGFuIFNlcnZpY2UgdGhhdCBpbXBsZW1lbnRzIGBFeHRlbnNpb25GYWN0b3J5PFJvdXRlPmBcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICBleHBvcnQgY2xhc3MgTXlSb3V0ZUZhY3RvcnkgaW1wbGVtZW50cyBFeHRlbnNpb25GYWN0b3J5PFJvdXRlPiB7Li4ufVxuICogIC4uLlxuICogIGhvb2tSb3V0ZShNeVJvdXRlRmFjdG9yeSlcbiAqIGBgYFxuICogQSB0eXBlZCBhbHRlcm5hdGl2ZSB0byBgSE9PS19ST1VURWAuXG4gKiBAcGFyYW0gcm91dGUgVGhlIGBSb3V0ZWAncyBvciBgRXh0ZW5zaW9uRmFjdG9yeWAgdG8gYmUgcHJvdmlkZWQuXG4gKiBAcmV0dXJucyBBbiBgUHJvdmlkZXJgIHRvIGJlIHByb3ZpZGVkIGluIHlvdXIgbW9kdWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaG9va1JvdXRlKHJvdXRlOiBHZW5lcmljSG9va1R5cGU8Um91dGU+LCBvcHRpb25zPzogUGFydGlhbDxHZW5lcmljSG9va09wdGlvbnM+KSB7XG4gIHJldHVybiBob29rR2VuZXJpYzxSb3V0ZT4ocm91dGUsIEhPT0tfUk9VVEUsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEEgc2VydmljZSB3aGljaCBkZWZpbmVzIHJvdXRlcyBmb3IgdGhlIGFwcGxpY2F0aW9uLiBZb3UgY2FuIHVzZVxuICogSE9PS19ST1VURVMgb3IgcGFzc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZXJTZXJ2aWNlIGV4dGVuZHMgRXh0ZW5zaW9uUG9pbnRXaXRob3V0U3RhdGVGb3JQbHVnaW5zPFJvdXRlPiB7XG4gIHJlYWRvbmx5IHN0YXRlID0gbmV3IE1hcDxzdHJpbmcsIFJvdXRlPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvb3RJbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY29udGV4dFJvdXRlU2VydmljZTogQ29udGV4dFJvdXRlU2VydmljZSxcbiAgICBwbHVnaW5zOiBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UsXG4gICAgb3B0aW9uczogT3B0aW9uc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIocm9vdEluamVjdG9yLCBwbHVnaW5zKTtcbiAgICB0aGlzLml0ZW1zJCA9IHRoaXMuc2V0dXBJdGVtc09ic2VydmFibGUoKTtcblxuICAgIC8vIFdlIGFyZSBkb2luZyBhIHNlbGYgc3Vic2NyaXB0aW9uIHRvIGFkZCB0aGUgbmV3IHJvdXRlc1xuICAgIC8vIHRvIHRoZSByb3V0ZXIgY29uZmlndXJhdGlvbi5cbiAgICB0aGlzLml0ZW1zJC5zdWJzY3JpYmUoKHJvdXRlczogUm91dGVbXSkgPT4ge1xuICAgICAgY29uc3QgdG9BZGRSb3V0ZXMgPSByb3V0ZXMuZmlsdGVyKChyb3V0ZTogUm91dGUpID0+IHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGAke3JvdXRlLmNvbnRleHQgfHwgJyd9JHtyb3V0ZS5wYXRofWA7XG4gICAgICAgIGNvbnN0IGlzQWxyZWFkeUFkZGVkID0gdGhpcy5zdGF0ZS5oYXMocGF0aCk7XG4gICAgICAgIGlmICghaXNBbHJlYWR5QWRkZWQpIHtcbiAgICAgICAgICB0aGlzLnN0YXRlLnNldChwYXRoLCByb3V0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpc0FscmVhZHlBZGRlZDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hZGRSb3V0ZSh0b0FkZFJvdXRlcyk7XG4gICAgfSk7XG5cbiAgICBwbHVnaW5zLnBsdWdpbkRldGFpbHMkLnN1YnNjcmliZSgoeyBtb2R1bGVSZWYsIHJlbW90ZU5nTW9kdWxlIH0pID0+IHtcbiAgICAgIHRoaXMucmVzb2x2ZVJvdXRlckZvckNoaWxkUm91dGVzKG1vZHVsZVJlZiwgcmVtb3RlTmdNb2R1bGUpO1xuICAgIH0pO1xuXG4gICAgLy8gb25seSBuZWVkZWQgaW4gY2FzZSBvZiBwdXJlIGFuZ3VsYXIgYXBwbGljYXRpb25cbiAgICAvLyBvdGhlcndpc2UgaGFuZGxlZCBieSBicmlkZ2Ugc2VydmljZVxuICAgIGlmICghb3B0aW9ucy51cGdyYWRlKSB7XG4gICAgICBwbHVnaW5zLmFsbFBsdWdpbnNMb2FkZWQkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcih0bXAgPT4gISF0bXApLFxuICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5pbml0aWFsTmF2aWdhdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaCB0aGUgY3VycmVudCBjb250ZXh0XG4gICAqL1xuICByZWZyZXNoKCkge1xuICAgIHN1cGVyLnJlZnJlc2goKTtcbiAgICB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UucmVmcmVzaENvbnRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgcm91dGUgdG8gdGhlIHJvdXRlciBjb25maWd1cmF0aW9uIG9yIGEgY29udGV4dC5cbiAgICogQHBhcmFtIHJvdXRlIFRoZSByb3V0ZSB0byBhZGRcbiAgICovXG4gIGFkZFJvdXRlKHJvdXRlOiBSb3V0ZSB8IFJvdXRlW10pIHtcbiAgICB0aGlzLmFkZFJvdXRlcyhBcnJheS5pc0FycmF5KHJvdXRlKSA/IHJvdXRlIDogW3JvdXRlXSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gTU8gaXMgYW4gZ3JvdXAgb3IgYW4gZGV2aWNlIGFuZCByZXR1cm5zXG4gICAqIHRoZSBjb3JyZWN0IGhyZWYgdG8gbGluayBjb3JyZWN0bHkgdG8gdGhhdCBNTy5cbiAgICogQHBhcmFtIGdyb3VwT3JEZXZpY2UgVGhlIE1PIG9mIGEgZ3JvdXAgb3IgdGhlIGRldmljZS5cbiAgICogQHBhcmFtIHByZWZpeCBIb3cgc2hvdWxkIHRoZSBsaW5rIGJlIHByZWZpeGVkLlxuICAgKi9cbiAgZ2V0SHJlZihncm91cE9yRGV2aWNlOiBJTWFuYWdlZE9iamVjdCwgcHJlZml4ID0gJyMvJyk6IHN0cmluZyB7XG4gICAgaWYgKGdyb3VwT3JEZXZpY2UuYzh5X0lzRGV2aWNlR3JvdXAgfHwgZ3JvdXBPckRldmljZS5jOHlfSXNEeW5hbWljR3JvdXApIHtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtWaWV3Q29udGV4dC5Hcm91cC5yZXBsYWNlKCc6aWQnLCBncm91cE9yRGV2aWNlLmlkKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7cHJlZml4fSR7Vmlld0NvbnRleHQuRGV2aWNlLnJlcGxhY2UoJzppZCcsIGdyb3VwT3JEZXZpY2UuaWQpfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBJdGVtc09ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxSb3V0ZVtdPiB7XG4gICAgcmV0dXJuIGZyb21UcmlnZ2VyT25jZTxSb3V0ZT4odGhpcy5yb3V0ZXIsIHRoaXMucmVmcmVzaCQsIFtcbiAgICAgIGdldEluamVjdGVkSG9va3M8Um91dGU+KEhPT0tfUk9VVEUsIHRoaXMuaW5qZWN0b3JzLCBJbmplY3Rpb25UeXBlLlJPVVRFKSxcbiAgICAgICgpID0+IHRoaXMuZmFjdG9yaWVzXG4gICAgXSkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJvdXRlcyhyb3V0ZXMpIHtcbiAgICAvLyBFbXB0eSByb3V0ZSBuZWVkcyB0byBiZSBsYXN0IGFzIG9mIG5hdmlnYXRpb24gdG8gYW5ndWxhcmpzIHJvdXRlc1xuICAgIC8vIGlmICoqIHJvdXRlIGhpdCwgdGhlIGFuZ3VsYXJqcyByb3V0ZXMgYXJlIGxvYWRlZC5cbiAgICBjb25zdCBlbXB0eVJvdXRlID0gdGhpcy5yb3V0ZXIuY29uZmlnLmZpbmQociA9PiByLnBhdGggPT09ICcqKicpO1xuICAgIGNvbnN0IHJvb3RDb250ZXh0Um91dGVzID0gdGhpcy5maW5kQWxsUm9vdENvbnRleHRSb3V0ZXMoWy4uLnRoaXMucm91dGVyLmNvbmZpZywgLi4ucm91dGVzXSk7XG4gICAgdGhpcy5yb3V0ZXIucmVzZXRDb25maWcoXG4gICAgICBbXG4gICAgICAgIC4uLnRoaXMucm91dGVyLmNvbmZpZy5maWx0ZXIociA9PiByLnBhdGggIT09ICcqKicpLFxuICAgICAgICAuLi5yb3V0ZXMubWFwKChyOiBSb3V0ZSkgPT4gdGhpcy5jb252ZXJ0Um91dGUocm9vdENvbnRleHRSb3V0ZXMsIHIpKSxcbiAgICAgICAgZW1wdHlSb3V0ZVxuICAgICAgXS5maWx0ZXIoQm9vbGVhbilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Um91dGUocm9vdENvbnRleHRSb3V0ZXM6IFJvdXRlcywgcm91dGU6IFJvdXRlKSB7XG4gICAgaWYgKHJvdXRlLmNvbnRleHQpIHtcbiAgICAgIHJvb3RDb250ZXh0Um91dGVzLmZvckVhY2goKHI6IFZpZXdDb250ZXh0Um9vdFJvdXRlKSA9PiB7XG4gICAgICAgIGlmIChyLnJvb3RDb250ZXh0ID09PSByb3V0ZS5jb250ZXh0KSB7XG4gICAgICAgICAgci5jaGlsZHJlbiA9IFtyb3V0ZSwgLi4uKHIuY2hpbGRyZW4gfHwgW10pXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEFsbFJvb3RDb250ZXh0Um91dGVzKHJvdXRlczogUm91dGVzKTogVmlld0NvbnRleHRSb290Um91dGVbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBWaWV3Q29udGV4dFJvb3RSb3V0ZVtdID0gW107XG4gICAgcm91dGVzLmZvckVhY2gocm91dGUgPT4ge1xuICAgICAgaWYgKChyb3V0ZSBhcyBWaWV3Q29udGV4dFJvb3RSb3V0ZSkucm9vdENvbnRleHQpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gocm91dGUgYXMgVmlld0NvbnRleHRSb290Um91dGUpO1xuICAgICAgfVxuICAgICAgaWYgKHJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkUm91dGVzID0gdGhpcy5maW5kQWxsUm9vdENvbnRleHRSb3V0ZXMocm91dGUuY2hpbGRyZW4pO1xuICAgICAgICByZXN1bHQucHVzaCguLi5jaGlsZFJvdXRlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVJvdXRlckZvckNoaWxkUm91dGVzKG1vZHVsZVJlZjogTmdNb2R1bGVSZWY8YW55PiwgcmVtb3RlTmdNb2R1bGU6IGFueSkge1xuICAgIC8vIE5PVEU6IHN0b2xlbiBmcm9tIGxhenkgbG9hZGVkIHJvdXRlcyBmcm9tIEFuZ3VsYXIgaXRzZWxmLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9kYTU4ODAxZjk1YzY2YzIwMWUzMzIxODlhZjI1NzAyYmRkNzIyZjNmL3BhY2thZ2VzL3JvdXRlci9zcmMvcm91dGVyX2NvbmZpZ19sb2FkZXIudHMjTDEwMy1MMTA4XG4gICAgY29uc3QgcmF3Um91dGVzID0gZmxhdHRlbihtb2R1bGVSZWYuaW5qZWN0b3IuZ2V0KFJPVVRFUywgW10sIHsgc2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSkpO1xuXG4gICAgaWYgKHJhd1JvdXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCByb3V0ZVdpdGhJbmplY3RvciA9IHJhd1JvdXRlcy5tYXAocm91dGUgPT4ge1xuICAgICAgICByb3V0ZS5wcm92aWRlcnMgPSBbaW1wb3J0UHJvdmlkZXJzRnJvbShyZW1vdGVOZ01vZHVsZSldO1xuICAgICAgICByZXR1cm4gcm91dGU7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkUm91dGUocm91dGVXaXRoSW5qZWN0b3IpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,152 @@
1
+ import { DestroyRef, Injectable, Injector } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { ActivationEnd, ActivationStart, ChildActivationEnd, PRIMARY_OUTLET, Router } from '@angular/router';
4
+ import { ApiService } from '@c8y/ngx-components/api';
5
+ import { NEVER, Subject } from 'rxjs';
6
+ import { filter, map, merge, switchMap } from 'rxjs/operators';
7
+ import { TabsService } from '../tabs/tabs.service';
8
+ import { RouterTabsResolver } from './router-tabs.resolver';
9
+ import { ViewContext } from './router.model';
10
+ import { ViewContextServices } from './view-context.service';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "./router-tabs.resolver";
13
+ import * as i2 from "../tabs/tabs.service";
14
+ import * as i3 from "@angular/router";
15
+ import * as i4 from "@c8y/ngx-components/api";
16
+ /**
17
+ * A service which is injected into the context route component to handle the context data.
18
+ */
19
+ export class ScopedContextRouteService {
20
+ constructor(tabsResolver, tabsService, router, apiService, injector, destroyRef) {
21
+ this.tabsResolver = tabsResolver;
22
+ this.tabsService = tabsService;
23
+ this.router = router;
24
+ this.apiService = apiService;
25
+ this.injector = injector;
26
+ this.destroyRef = destroyRef;
27
+ this.lastAddedTabs = [];
28
+ this.refreshTrigger$ = new Subject();
29
+ this.ID_REGEX = /([0-9]+)/;
30
+ }
31
+ /**
32
+ * Indicates that the data is loading
33
+ * @returns An boolean observable which indicates if the data is loading.
34
+ */
35
+ isLoading$() {
36
+ return this.router.events.pipe(filter(e => (e instanceof ActivationStart || e instanceof ChildActivationEnd) &&
37
+ e.snapshot.routeConfig?.rootContext === this.currentContext), map(e => e instanceof ActivationStart), takeUntilDestroyed(this.destroyRef));
38
+ }
39
+ /**
40
+ * Initializes the context route.
41
+ * @param route The current activated route.
42
+ */
43
+ init(route) {
44
+ this.currentContext = route.routeConfig.rootContext;
45
+ if (!this.currentContext) {
46
+ throw new Error(`${ScopedContextRouteService.name} should not be used on a route without a rootContext`);
47
+ }
48
+ this.router.events
49
+ .pipe(filter(e => e instanceof ActivationEnd), takeUntilDestroyed(this.destroyRef))
50
+ .subscribe((e) => this.redirectToFirstTab(e));
51
+ route.data
52
+ .pipe(merge(this.updatedContext(route), this.refreshTrigger$), switchMap(() => this.tabsResolver.resolve(route.snapshot)), takeUntilDestroyed(this.destroyRef))
53
+ .subscribe(tabs => this.updateTabs(tabs));
54
+ }
55
+ /**
56
+ * Destroys the service.
57
+ */
58
+ ngOnDestroy() {
59
+ this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
60
+ }
61
+ /**
62
+ * Refreshes the context.
63
+ */
64
+ refreshContext() {
65
+ this.refreshTrigger$.next();
66
+ }
67
+ /**
68
+ * Sets an API hook to refresh the contextData on changes.
69
+ * @param activatedRoute The current activated route.
70
+ */
71
+ updatedContext(route) {
72
+ const { data } = route.snapshot;
73
+ const serviceInstance = ViewContextServices.contextToService(data.context);
74
+ if (serviceInstance) {
75
+ const service = this.injector.get(serviceInstance);
76
+ const detailsUrlRegex = service
77
+ .getDetailUrl(data.contextData)
78
+ .replace(/\d+/g, '?\\d*');
79
+ const contextRegex = new RegExp(detailsUrlRegex, 'i');
80
+ const childrenRegex = new RegExp(`${detailsUrlRegex}/child`, 'i');
81
+ const filterResponse = ({ url, method }) => {
82
+ const contextChanged = contextRegex.test(url) && ['POST', 'PUT'].includes(method);
83
+ const childrenAffected = childrenRegex.test(url) && ['POST', 'DELETE'].includes(method);
84
+ return contextChanged || childrenAffected;
85
+ };
86
+ return this.apiService.hookResponse(filterResponse);
87
+ }
88
+ return NEVER;
89
+ }
90
+ updateTabs(tabs = []) {
91
+ this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
92
+ this.lastAddedTabs = tabs;
93
+ tabs.forEach(t => this.tabsService.add(t));
94
+ this.redirectToFirstTab();
95
+ }
96
+ redirectToFirstTab(event) {
97
+ if (event) {
98
+ if (this.needsRedirect(event)) {
99
+ const tab = this.tabsService.sortTabs(event.snapshot.data.tabs)?.[0];
100
+ if (!tab) {
101
+ return;
102
+ }
103
+ const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
104
+ const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
105
+ if (currentContextId === tabPathId) {
106
+ this.router.navigateByUrl(tab.path, { replaceUrl: true });
107
+ }
108
+ }
109
+ }
110
+ else {
111
+ const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
112
+ if (this.needsRedirectLegacy()) {
113
+ this.tabsService.firstTab$.pipe(filter((tab) => !!tab?.path)).subscribe((tab) => {
114
+ const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
115
+ if (currentContextId === tabPathId) {
116
+ this.router.navigateByUrl(tab.path, { replaceUrl: true });
117
+ }
118
+ });
119
+ }
120
+ }
121
+ }
122
+ needsRedirectLegacy() {
123
+ const tree = this.router.parseUrl(this.router.url);
124
+ const groups = tree.root.children[PRIMARY_OUTLET];
125
+ const context = this.getMatchingContextRoute(this.router.url);
126
+ if (!context) {
127
+ return groups.segments.length === 2;
128
+ }
129
+ return context.split('/').length === groups.segments.length;
130
+ }
131
+ needsRedirect(event) {
132
+ const contextRoute = event.snapshot.routeConfig;
133
+ if (!contextRoute.rootContext) {
134
+ return false;
135
+ }
136
+ const contextRouteFromUrl = this.getMatchingContextRoute(this.router.url);
137
+ return contextRoute.rootContext === contextRouteFromUrl;
138
+ }
139
+ getMatchingContextRoute(url) {
140
+ const viewContexts = Object.values(ViewContext);
141
+ // replace all :id placeholders with a regex matcher for a number
142
+ const regexMatchers = viewContexts.map(context => `^/${context.replace(/:id/g, '([0-9]+)')}$`);
143
+ const matchingRegexContext = regexMatchers.find(context => new RegExp(context).test(url));
144
+ return matchingRegexContext ? viewContexts[regexMatchers.indexOf(matchingRegexContext)] : null;
145
+ }
146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService, deps: [{ token: i1.RouterTabsResolver }, { token: i2.TabsService }, { token: i3.Router }, { token: i4.ApiService }, { token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
147
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService }); }
148
+ }
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService, decorators: [{
150
+ type: Injectable
151
+ }], ctorParameters: () => [{ type: i1.RouterTabsResolver }, { type: i2.TabsService }, { type: i3.Router }, { type: i4.ApiService }, { type: i0.Injector }, { type: i0.DestroyRef }] });
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVkLWNvbnRleHQtcm91dGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcm91dGVyL3Njb3BlZC1jb250ZXh0LXJvdXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBRUwsYUFBYSxFQUNiLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLE1BQU0sRUFHUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQUU3RDs7R0FFRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFVcEMsWUFDVSxZQUFnQyxFQUNoQyxXQUF3QixFQUN4QixNQUFjLEVBQ2QsVUFBc0IsRUFDdEIsUUFBa0IsRUFDbEIsVUFBc0I7UUFMdEIsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxl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RixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUUsT0FBTyxZQUFZLENBQUMsV0FBVyxLQUFLLG1CQUFtQixDQUFDO0lBQzFELENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxHQUFXO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEQsaUVBQWlFO1FBQ2pFLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvRixNQUFNLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxRixPQUFPLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRyxDQUFDOzhHQW5LVSx5QkFBeUI7a0hBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlLFxuICBBY3RpdmF0aW9uRW5kLFxuICBBY3RpdmF0aW9uU3RhcnQsXG4gIENoaWxkQWN0aXZhdGlvbkVuZCxcbiAgUFJJTUFSWV9PVVRMRVQsXG4gIFJvdXRlcixcbiAgVXJsU2VnbWVudEdyb3VwLFxuICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBcGlDYWxsLCBBcGlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hcGknO1xuaW1wb3J0IHsgTkVWRVIsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBtZXJnZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFiIH0gZnJvbSAnLi4vdGFicy90YWIubW9kZWwnO1xuaW1wb3J0IHsgVGFic1NlcnZpY2UgfSBmcm9tICcuLi90YWJzL3RhYnMuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXJUYWJzUmVzb2x2ZXIgfSBmcm9tICcuL3JvdXRlci10YWJzLnJlc29sdmVyJztcbmltcG9ydCB7IFZpZXdDb250ZXh0LCBWaWV3Q29udGV4dFJvb3RSb3V0ZSB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcbmltcG9ydCB7IFZpZXdDb250ZXh0U2VydmljZXMgfSBmcm9tICcuL3ZpZXctY29udGV4dC5zZXJ2aWNlJztcblxuLyoqXG4gKiBBIHNlcnZpY2Ugd2hpY2ggaXMgaW5qZWN0ZWQgaW50byB0aGUgY29udGV4dCByb3V0ZSBjb21wb25lbnQgdG8gaGFuZGxlIHRoZSBjb250ZXh0IGRhdGEuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTY29wZWRDb250ZXh0Um91dGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBsYXN0QWRkZWRUYWJzID0gW107XG4gIHByaXZhdGUgcmVmcmVzaFRyaWdnZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBJRF9SRUdFWCA9IC8oWzAtOV0rKS87XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0IHVzZWQgYnkgdGhpcyBzZXJ2aWNlLlxuICAgKi9cbiAgcHJpdmF0ZSBjdXJyZW50Q29udGV4dDogVmlld0NvbnRleHQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0YWJzUmVzb2x2ZXI6IFJvdXRlclRhYnNSZXNvbHZlcixcbiAgICBwcml2YXRlIHRhYnNTZXJ2aWNlOiBUYWJzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZGF0YSBpcyBsb2FkaW5nXG4gICAqIEByZXR1cm5zIEFuIGJvb2xlYW4gb2JzZXJ2YWJsZSB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIGRhdGEgaXMgbG9hZGluZy5cbiAgICovXG4gIGlzTG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgZmlsdGVyKFxuICAgICAgICBlID0+XG4gICAgICAgICAgKGUgaW5zdGFuY2VvZiBBY3RpdmF0aW9uU3RhcnQgfHwgZSBpbnN0YW5jZW9mIENoaWxkQWN0aXZhdGlvbkVuZCkgJiZcbiAgICAgICAgICAoZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZyBhcyBWaWV3Q29udGV4dFJvb3RSb3V0ZSk/LnJvb3RDb250ZXh0ID09PSB0aGlzLmN1cnJlbnRDb250ZXh0XG4gICAgICApLFxuICAgICAgbWFwKGUgPT4gZSBpbnN0YW5jZW9mIEFjdGl2YXRpb25TdGFydCksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbnRleHQgcm91dGUuXG4gICAqIEBwYXJhbSByb3V0ZSBUaGUgY3VycmVudCBhY3RpdmF0ZWQgcm91dGUuXG4gICAqL1xuICBpbml0KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudENvbnRleHQgPSAocm91dGUucm91dGVDb25maWcgYXMgVmlld0NvbnRleHRSb290Um91dGUpLnJvb3RDb250ZXh0O1xuICAgIGlmICghdGhpcy5jdXJyZW50Q29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHtTY29wZWRDb250ZXh0Um91dGVTZXJ2aWNlLm5hbWV9IHNob3VsZCBub3QgYmUgdXNlZCBvbiBhIHJvdXRlIHdpdGhvdXQgYSByb290Q29udGV4dGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIEFjdGl2YXRpb25FbmQpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZTogQWN0aXZhdGlvbkVuZCkgPT4gdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoZSkpO1xuXG4gICAgcm91dGUuZGF0YVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlKHRoaXMudXBkYXRlZENvbnRleHQocm91dGUpLCB0aGlzLnJlZnJlc2hUcmlnZ2VyJCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnRhYnNSZXNvbHZlci5yZXNvbHZlKHJvdXRlLnNuYXBzaG90KSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRhYnMgPT4gdGhpcy51cGRhdGVUYWJzKHRhYnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgc2VydmljZS5cbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubGFzdEFkZGVkVGFicy5mb3JFYWNoKHQgPT4gdGhpcy50YWJzU2VydmljZS5yZW1vdmUodCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyB0aGUgY29udGV4dC5cbiAgICovXG4gIHJlZnJlc2hDb250ZXh0KCkge1xuICAgIHRoaXMucmVmcmVzaFRyaWdnZXIkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuIEFQSSBob29rIHRvIHJlZnJlc2ggdGhlIGNvbnRleHREYXRhIG9uIGNoYW5nZXMuXG4gICAqIEBwYXJhbSBhY3RpdmF0ZWRSb3V0ZSBUaGUgY3VycmVudCBhY3RpdmF0ZWQgcm91dGUuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZWRDb250ZXh0KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IE9ic2VydmFibGU8QXBpQ2FsbD4ge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gcm91dGUuc25hcHNob3Q7XG4gICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gVmlld0NvbnRleHRTZXJ2aWNlcy5jb250ZXh0VG9TZXJ2aWNlKGRhdGEuY29udGV4dCk7XG4gICAgaWYgKHNlcnZpY2VJbnN0YW5jZSkge1xuICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFxuICAgICAgICBzZXJ2aWNlSW5zdGFuY2UgYXMgVHlwZTxJbnN0YW5jZVR5cGU8dHlwZW9mIHNlcnZpY2VJbnN0YW5jZT4+XG4gICAgICApO1xuICAgICAgY29uc3QgZGV0YWlsc1VybFJlZ2V4ID0gKHNlcnZpY2UgYXMgdHlwZW9mIHNlcnZpY2UgJiB7IGdldERldGFpbFVybD86ICguLi5hcmdzKSA9PiBzdHJpbmcgfSlcbiAgICAgICAgLmdldERldGFpbFVybChkYXRhLmNvbnRleHREYXRhKVxuICAgICAgICAucmVwbGFjZSgvXFxkKy9nLCAnP1xcXFxkKicpO1xuICAgICAgY29uc3QgY29udGV4dFJlZ2V4ID0gbmV3IFJlZ0V4cChkZXRhaWxzVXJsUmVnZXgsICdpJyk7XG4gICAgICBjb25zdCBjaGlsZHJlblJlZ2V4ID0gbmV3IFJlZ0V4cChgJHtkZXRhaWxzVXJsUmVnZXh9L2NoaWxkYCwgJ2knKTtcbiAgICAgIGNvbnN0IGZpbHRlclJlc3BvbnNlID0gKHsgdXJsLCBtZXRob2QgfSkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZXh0Q2hhbmdlZCA9IGNvbnRleHRSZWdleC50ZXN0KHVybCkgJiYgWydQT1NUJywgJ1BVVCddLmluY2x1ZGVzKG1ldGhvZCk7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuQWZmZWN0ZWQgPSBjaGlsZHJlblJlZ2V4LnRlc3QodXJsKSAmJiBbJ1BPU1QnLCAnREVMRVRFJ10uaW5jbHVkZXMobWV0aG9kKTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHRDaGFuZ2VkIHx8IGNoaWxkcmVuQWZmZWN0ZWQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5ob29rUmVzcG9uc2UoZmlsdGVyUmVzcG9uc2UpO1xuICAgIH1cbiAgICByZXR1cm4gTkVWRVI7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYnModGFicyA9IFtdKSB7XG4gICAgdGhpcy5sYXN0QWRkZWRUYWJzLmZvckVhY2godCA9PiB0aGlzLnRhYnNTZXJ2aWNlLnJlbW92ZSh0KSk7XG4gICAgdGhpcy5sYXN0QWRkZWRUYWJzID0gdGFicztcbiAgICB0YWJzLmZvckVhY2godCA9PiB0aGlzLnRhYnNTZXJ2aWNlLmFkZCh0KSk7XG4gICAgdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkaXJlY3RUb0ZpcnN0VGFiKGV2ZW50PzogQWN0aXZhdGlvbkVuZCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgaWYgKHRoaXMubmVlZHNSZWRpcmVjdChldmVudCkpIHtcbiAgICAgICAgY29uc3QgdGFiID0gdGhpcy50YWJzU2VydmljZS5zb3J0VGFicyhldmVudC5zbmFwc2hvdC5kYXRhLnRhYnMpPy5bMF07XG4gICAgICAgIGlmICghdGFiKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0SWQgPSAodGhpcy5yb3V0ZXIudXJsLm1hdGNoKHRoaXMuSURfUkVHRVgpIHx8IFtdKS5zaGlmdCgpO1xuICAgICAgICBjb25zdCB0YWJQYXRoSWQgPSAodGFiLnBhdGgubWF0Y2godGhpcy5JRF9SRUdFWCkgfHwgW10pLnNoaWZ0KCk7XG4gICAgICAgIGlmIChjdXJyZW50Q29udGV4dElkID09PSB0YWJQYXRoSWQpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRhYi5wYXRoLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY3VycmVudENvbnRleHRJZCA9ICh0aGlzLnJvdXRlci51cmwubWF0Y2godGhpcy5JRF9SRUdFWCkgfHwgW10pLnNoaWZ0KCk7XG5cbiAgICAgIGlmICh0aGlzLm5lZWRzUmVkaXJlY3RMZWdhY3koKSkge1xuICAgICAgICB0aGlzLnRhYnNTZXJ2aWNlLmZpcnN0VGFiJC5waXBlKGZpbHRlcigodGFiOiBUYWIpID0+ICEhdGFiPy5wYXRoKSkuc3Vic2NyaWJlKCh0YWI6IFRhYikgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhYlBhdGhJZCA9ICh0YWIucGF0aC5tYXRjaCh0aGlzLklEX1JFR0VYKSB8fCBbXSkuc2hpZnQoKTtcbiAgICAgICAgICBpZiAoY3VycmVudENvbnRleHRJZCA9PT0gdGFiUGF0aElkKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRhYi5wYXRoLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5lZWRzUmVkaXJlY3RMZWdhY3koKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHJlZTogVXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyLnVybCk7XG4gICAgY29uc3QgZ3JvdXBzOiBVcmxTZWdtZW50R3JvdXAgPSB0cmVlLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0TWF0Y2hpbmdDb250ZXh0Um91dGUodGhpcy5yb3V0ZXIudXJsKTtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIHJldHVybiBncm91cHMuc2VnbWVudHMubGVuZ3RoID09PSAyO1xuICAgIH1cbiAgICByZXR1cm4gY29udGV4dC5zcGxpdCgnLycpLmxlbmd0aCA9PT0gZ3JvdXBzLnNlZ21lbnRzLmxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgbmVlZHNSZWRpcmVjdChldmVudDogQWN0aXZhdGlvbkVuZCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbnRleHRSb3V0ZTogVmlld0NvbnRleHRSb290Um91dGUgPSBldmVudC5zbmFwc2hvdC5yb3V0ZUNvbmZpZyBhcyBWaWV3Q29udGV4dFJvb3RSb3V0ZTtcbiAgICBpZiAoIWNvbnRleHRSb3V0ZS5yb290Q29udGV4dCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0Um91dGVGcm9tVXJsID0gdGhpcy5nZXRNYXRjaGluZ0NvbnRleHRSb3V0ZSh0aGlzLnJvdXRlci51cmwpO1xuICAgIHJldHVybiBjb250ZXh0Um91dGUucm9vdENvbnRleHQgPT09IGNvbnRleHRSb3V0ZUZyb21Vcmw7XG4gIH1cblxuICBwcml2YXRlIGdldE1hdGNoaW5nQ29udGV4dFJvdXRlKHVybDogc3RyaW5nKTogVmlld0NvbnRleHQge1xuICAgIGNvbnN0IHZpZXdDb250ZXh0cyA9IE9iamVjdC52YWx1ZXMoVmlld0NvbnRleHQpO1xuICAgIC8vIHJlcGxhY2UgYWxsIDppZCBwbGFjZWhvbGRlcnMgd2l0aCBhIHJlZ2V4IG1hdGNoZXIgZm9yIGEgbnVtYmVyXG4gICAgY29uc3QgcmVnZXhNYXRjaGVycyA9IHZpZXdDb250ZXh0cy5tYXAoY29udGV4dCA9PiBgXi8ke2NvbnRleHQucmVwbGFjZSgvOmlkL2csICcoWzAtOV0rKScpfSRgKTtcbiAgICBjb25zdCBtYXRjaGluZ1JlZ2V4Q29udGV4dCA9IHJlZ2V4TWF0Y2hlcnMuZmluZChjb250ZXh0ID0+IG5ldyBSZWdFeHAoY29udGV4dCkudGVzdCh1cmwpKTtcbiAgICByZXR1cm4gbWF0Y2hpbmdSZWdleENvbnRleHQgPyB2aWV3Q29udGV4dHNbcmVnZXhNYXRjaGVycy5pbmRleE9mKG1hdGNoaW5nUmVnZXhDb250ZXh0KV0gOiBudWxsO1xuICB9XG59XG4iXX0=
@@ -1,23 +1,66 @@
1
- import { ApplicationService, InventoryService, TenantService, UserService } from '@c8y/client';
1
+ import { AlarmService, ApplicationService, InventoryService, TenantService, UserService } from '@c8y/client';
2
2
  import { ViewContext } from './router.model';
3
3
  export class ViewContextServices {
4
4
  static { this.services = {
5
- [ViewContext.Device]: InventoryService,
6
- [ViewContext.Group]: InventoryService,
7
- [ViewContext.User]: UserService,
8
- [ViewContext.Application]: ApplicationService,
9
- [ViewContext.Microservice]: ApplicationService,
10
- [ViewContext.Extension]: ApplicationService,
11
- [ViewContext.Feature]: ApplicationService,
12
- [ViewContext.SubscribedApplications]: ApplicationService,
13
- [ViewContext.Tenant]: TenantService,
14
- [ViewContext.Report]: InventoryService,
15
- [ViewContext.Service]: InventoryService,
16
- [ViewContext.DatapointLibrary]: InventoryService,
17
- [ViewContext.Simulators]: InventoryService
5
+ [ViewContext.Device]: { service: InventoryService, path: ViewContext.Device, autoRoute: true },
6
+ [ViewContext.Group]: { service: InventoryService, path: ViewContext.Group, autoRoute: true },
7
+ [ViewContext.User]: { service: UserService, path: ViewContext.User, autoRoute: true },
8
+ [ViewContext.Application]: {
9
+ service: ApplicationService,
10
+ path: ViewContext.Application,
11
+ autoRoute: true
12
+ },
13
+ [ViewContext.Microservice]: {
14
+ service: ApplicationService,
15
+ path: ViewContext.Microservice,
16
+ autoRoute: true
17
+ },
18
+ [ViewContext.Extension]: {
19
+ service: ApplicationService,
20
+ path: ViewContext.Extension,
21
+ autoRoute: true
22
+ },
23
+ [ViewContext.Feature]: {
24
+ service: ApplicationService,
25
+ path: ViewContext.Feature,
26
+ autoRoute: true
27
+ },
28
+ [ViewContext.SubscribedApplications]: {
29
+ service: ApplicationService,
30
+ path: ViewContext.SubscribedApplications,
31
+ autoRoute: true
32
+ },
33
+ [ViewContext.Tenant]: { service: TenantService, path: ViewContext.Tenant, autoRoute: true },
34
+ [ViewContext.Report]: { service: InventoryService, path: ViewContext.Report, autoRoute: true },
35
+ [ViewContext.Service]: {
36
+ service: InventoryService,
37
+ path: ViewContext.Service,
38
+ autoRoute: true
39
+ },
40
+ [ViewContext.DatapointLibrary]: {
41
+ service: InventoryService,
42
+ path: ViewContext.DatapointLibrary,
43
+ autoRoute: true
44
+ },
45
+ [ViewContext.Simulators]: {
46
+ service: InventoryService,
47
+ path: ViewContext.Simulators,
48
+ autoRoute: true
49
+ },
50
+ [ViewContext.Alarms]: { service: AlarmService, path: ':id', autoRoute: false },
51
+ [ViewContext.GroupAlarms]: { service: AlarmService, path: ':id', autoRoute: false },
52
+ [ViewContext.DeviceAlarms]: { service: AlarmService, path: ':id', autoRoute: false },
53
+ [ViewContext.SimulatorsAlarms]: { service: AlarmService, path: ':id', autoRoute: false },
54
+ [ViewContext.ServiceAlarms]: { service: AlarmService, path: ':id', autoRoute: false }
18
55
  }; }
19
56
  static contextToService(context) {
20
- return ViewContextServices.services[context];
57
+ return ViewContextServices.services[context]?.service;
58
+ }
59
+ static getPath(context) {
60
+ return ViewContextServices.services[context]?.path;
61
+ }
62
+ static isAutoRoute(context) {
63
+ return ViewContextServices.services[context]?.autoRoute;
21
64
  }
22
65
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci92aWV3LWNvbnRleHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsTUFBTSxPQUFPLG1CQUFtQjthQUN2QixhQUFRLEdBQUc7UUFDaEIsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsZ0JBQWdCO1FBQ3RDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLGdCQUFnQjtRQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXO1FBQy9CLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLGtCQUFrQjtRQUM3QyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxrQkFBa0I7UUFDOUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsa0JBQWtCO1FBQzNDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQjtRQUN6QyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLGtCQUFrQjtRQUN4RCxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxhQUFhO1FBQ25DLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQjtRQUN0QyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxnQkFBZ0I7UUFDdkMsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxnQkFBZ0I7UUFDaEQsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsZ0JBQWdCO0tBQ2xDLENBQUM7SUFFWCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBb0I7UUFDMUMsT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uU2VydmljZSwgSW52ZW50b3J5U2VydmljZSwgVGVuYW50U2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBWaWV3Q29udGV4dCB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFZpZXdDb250ZXh0U2VydmljZXMge1xuICBzdGF0aWMgc2VydmljZXMgPSB7XG4gICAgW1ZpZXdDb250ZXh0LkRldmljZV06IEludmVudG9yeVNlcnZpY2UsXG4gICAgW1ZpZXdDb250ZXh0Lkdyb3VwXTogSW52ZW50b3J5U2VydmljZSxcbiAgICBbVmlld0NvbnRleHQuVXNlcl06IFVzZXJTZXJ2aWNlLFxuICAgIFtWaWV3Q29udGV4dC5BcHBsaWNhdGlvbl06IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICBbVmlld0NvbnRleHQuTWljcm9zZXJ2aWNlXTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgIFtWaWV3Q29udGV4dC5FeHRlbnNpb25dOiBBcHBsaWNhdGlvblNlcnZpY2UsXG4gICAgW1ZpZXdDb250ZXh0LkZlYXR1cmVdOiBBcHBsaWNhdGlvblNlcnZpY2UsXG4gICAgW1ZpZXdDb250ZXh0LlN1YnNjcmliZWRBcHBsaWNhdGlvbnNdOiBBcHBsaWNhdGlvblNlcnZpY2UsXG4gICAgW1ZpZXdDb250ZXh0LlRlbmFudF06IFRlbmFudFNlcnZpY2UsXG4gICAgW1ZpZXdDb250ZXh0LlJlcG9ydF06IEludmVudG9yeVNlcnZpY2UsXG4gICAgW1ZpZXdDb250ZXh0LlNlcnZpY2VdOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIFtWaWV3Q29udGV4dC5EYXRhcG9pbnRMaWJyYXJ5XTogSW52ZW50b3J5U2VydmljZSxcbiAgICBbVmlld0NvbnRleHQuU2ltdWxhdG9yc106IEludmVudG9yeVNlcnZpY2VcbiAgfSBhcyBjb25zdDtcblxuICBzdGF0aWMgY29udGV4dFRvU2VydmljZShjb250ZXh0OiBWaWV3Q29udGV4dCkge1xuICAgIHJldHVybiBWaWV3Q29udGV4dFNlcnZpY2VzLnNlcnZpY2VzW2NvbnRleHRdO1xuICB9XG59XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci92aWV3LWNvbnRleHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLFdBQVcsRUFDWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQTJCLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE1BQU0sT0FBTyxtQkFBbUI7YUFDdkIsYUFBUSxHQUE0QjtRQUN6QyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO1FBQzlGLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUU7UUFDNUYsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUU7UUFDckYsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDekIsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixJQUFJLEVBQUUsV0FBVyxDQUFDLFdBQVc7WUFDN0IsU0FBUyxFQUFFLElBQUk7U0FDaEI7UUFDRCxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMxQixPQUFPLEVBQUUsa0JBQWtCO1lBQzNCLElBQUksRUFBRSxXQUFXLENBQUMsWUFBWTtZQUM5QixTQUFTLEVBQUUsSUFBSTtTQUNoQjtRQUNELENBQUMsV0FB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ZSxcbiAgSW52ZW50b3J5U2VydmljZSxcbiAgVGVuYW50U2VydmljZSxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgVmlld0NvbnRleFNlcnZpY2VDb25maWcsIFZpZXdDb250ZXh0IH0gZnJvbSAnLi9yb3V0ZXIubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgVmlld0NvbnRleHRTZXJ2aWNlcyB7XG4gIHN0YXRpYyBzZXJ2aWNlczogVmlld0NvbnRleFNlcnZpY2VDb25maWcgPSB7XG4gICAgW1ZpZXdDb250ZXh0LkRldmljZV06IHsgc2VydmljZTogSW52ZW50b3J5U2VydmljZSwgcGF0aDogVmlld0NvbnRleHQuRGV2aWNlLCBhdXRvUm91dGU6IHRydWUgfSxcbiAgICBbVmlld0NvbnRleHQuR3JvdXBdOiB7IHNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsIHBhdGg6IFZpZXdDb250ZXh0Lkdyb3VwLCBhdXRvUm91dGU6IHRydWUgfSxcbiAgICBbVmlld0NvbnRleHQuVXNlcl06IHsgc2VydmljZTogVXNlclNlcnZpY2UsIHBhdGg6IFZpZXdDb250ZXh0LlVzZXIsIGF1dG9Sb3V0ZTogdHJ1ZSB9LFxuICAgIFtWaWV3Q29udGV4dC5BcHBsaWNhdGlvbl06IHtcbiAgICAgIHNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICAgIHBhdGg6IFZpZXdDb250ZXh0LkFwcGxpY2F0aW9uLFxuICAgICAgYXV0b1JvdXRlOiB0cnVlXG4gICAgfSxcbiAgICBbVmlld0NvbnRleHQuTWljcm9zZXJ2aWNlXToge1xuICAgICAgc2VydmljZTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgICAgcGF0aDogVmlld0NvbnRleHQuTWljcm9zZXJ2aWNlLFxuICAgICAgYXV0b1JvdXRlOiB0cnVlXG4gICAgfSxcbiAgICBbVmlld0NvbnRleHQuRXh0ZW5zaW9uXToge1xuICAgICAgc2VydmljZTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgICAgcGF0aDogVmlld0NvbnRleHQuRXh0ZW5zaW9uLFxuICAgICAgYXV0b1JvdXRlOiB0cnVlXG4gICAgfSxcbiAgICBbVmlld0NvbnRleHQuRmVhdHVyZV06IHtcbiAgICAgIHNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICAgIHBhdGg6IFZpZXdDb250ZXh0LkZlYXR1cmUsXG4gICAgICBhdXRvUm91dGU6IHRydWVcbiAgICB9LFxuICAgIFtWaWV3Q29udGV4dC5TdWJzY3JpYmVkQXBwbGljYXRpb25zXToge1xuICAgICAgc2VydmljZTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgICAgcGF0aDogVmlld0NvbnRleHQuU3Vic2NyaWJlZEFwcGxpY2F0aW9ucyxcbiAgICAgIGF1dG9Sb3V0ZTogdHJ1ZVxuICAgIH0sXG4gICAgW1ZpZXdDb250ZXh0LlRlbmFudF06IHsgc2VydmljZTogVGVuYW50U2VydmljZSwgcGF0aDogVmlld0NvbnRleHQuVGVuYW50LCBhdXRvUm91dGU6IHRydWUgfSxcbiAgICBbVmlld0NvbnRleHQuUmVwb3J0XTogeyBzZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLCBwYXRoOiBWaWV3Q29udGV4dC5SZXBvcnQsIGF1dG9Sb3V0ZTogdHJ1ZSB9LFxuICAgIFtWaWV3Q29udGV4dC5TZXJ2aWNlXToge1xuICAgICAgc2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICAgIHBhdGg6IFZpZXdDb250ZXh0LlNlcnZpY2UsXG4gICAgICBhdXRvUm91dGU6IHRydWVcbiAgICB9LFxuICAgIFtWaWV3Q29udGV4dC5EYXRhcG9pbnRMaWJyYXJ5XToge1xuICAgICAgc2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICAgIHBhdGg6IFZpZXdDb250ZXh0LkRhdGFwb2ludExpYnJhcnksXG4gICAgICBhdXRvUm91dGU6IHRydWVcbiAgICB9LFxuICAgIFtWaWV3Q29udGV4dC5TaW11bGF0b3JzXToge1xuICAgICAgc2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICAgIHBhdGg6IFZpZXdDb250ZXh0LlNpbXVsYXRvcnMsXG4gICAgICBhdXRvUm91dGU6IHRydWVcbiAgICB9LFxuICAgIFtWaWV3Q29udGV4dC5BbGFybXNdOiB7IHNlcnZpY2U6IEFsYXJtU2VydmljZSwgcGF0aDogJzppZCcsIGF1dG9Sb3V0ZTogZmFsc2UgfSxcbiAgICBbVmlld0NvbnRleHQuR3JvdXBBbGFybXNdOiB7IHNlcnZpY2U6IEFsYXJtU2VydmljZSwgcGF0aDogJzppZCcsIGF1dG9Sb3V0ZTogZmFsc2UgfSxcbiAgICBbVmlld0NvbnRleHQuRGV2aWNlQWxhcm1zXTogeyBzZXJ2aWNlOiBBbGFybVNlcnZpY2UsIHBhdGg6ICc6aWQnLCBhdXRvUm91dGU6IGZhbHNlIH0sXG4gICAgW1ZpZXdDb250ZXh0LlNpbXVsYXRvcnNBbGFybXNdOiB7IHNlcnZpY2U6IEFsYXJtU2VydmljZSwgcGF0aDogJzppZCcsIGF1dG9Sb3V0ZTogZmFsc2UgfSxcbiAgICBbVmlld0NvbnRleHQuU2VydmljZUFsYXJtc106IHsgc2VydmljZTogQWxhcm1TZXJ2aWNlLCBwYXRoOiAnOmlkJywgYXV0b1JvdXRlOiBmYWxzZSB9XG4gIH0gYXMgY29uc3Q7XG5cbiAgc3RhdGljIGNvbnRleHRUb1NlcnZpY2UoY29udGV4dDogVmlld0NvbnRleHQpIHtcbiAgICByZXR1cm4gVmlld0NvbnRleHRTZXJ2aWNlcy5zZXJ2aWNlc1tjb250ZXh0XT8uc2VydmljZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQYXRoKGNvbnRleHQ6IFZpZXdDb250ZXh0KSB7XG4gICAgcmV0dXJuIFZpZXdDb250ZXh0U2VydmljZXMuc2VydmljZXNbY29udGV4dF0/LnBhdGg7XG4gIH1cblxuICBzdGF0aWMgaXNBdXRvUm91dGUoY29udGV4dDogVmlld0NvbnRleHQpIHtcbiAgICByZXR1cm4gVmlld0NvbnRleHRTZXJ2aWNlcy5zZXJ2aWNlc1tjb250ZXh0XT8uYXV0b1JvdXRlO1xuICB9XG59XG4iXX0=
@@ -1,19 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { NgModule } from '@angular/core';
3
3
  import { NavigatorNode, gettext, ViewContext } from '@c8y/ngx-components';
4
- import { AlarmEmptyComponent, AlarmInfoComponent, AlarmsModule, ALARMS_PATH, AlarmsComponent } from '@c8y/ngx-components/alarms';
4
+ import * as i1 from '@c8y/ngx-components/alarms';
5
+ import { AlarmsModule, ALARMS_PATH, AlarmsComponent, getChildrenForViewContext, getViewContextRoutes } from '@c8y/ngx-components/alarms';
5
6
 
6
7
  function alarmsCockpitRouteAndNodeConfig() {
7
- const children = [
8
- {
9
- path: '',
10
- component: AlarmEmptyComponent
11
- },
12
- {
13
- path: ':id',
14
- component: AlarmInfoComponent
15
- }
16
- ];
17
8
  return AlarmsModule.config({
18
9
  rootNavigatorNode: new NavigatorNode({
19
10
  label: gettext('Alarms'),
@@ -29,7 +20,7 @@ function alarmsCockpitRouteAndNodeConfig() {
29
20
  path: ALARMS_PATH,
30
21
  component: AlarmsComponent,
31
22
  data: { title: true },
32
- children
23
+ children: getChildrenForViewContext(ViewContext.Alarms)
33
24
  },
34
25
  {
35
26
  context: ViewContext.Group,
@@ -39,7 +30,7 @@ function alarmsCockpitRouteAndNodeConfig() {
39
30
  label: gettext('Alarms'),
40
31
  component: AlarmsComponent,
41
32
  featureId: 'alarms',
42
- children
33
+ children: getChildrenForViewContext(ViewContext.GroupAlarms)
43
34
  },
44
35
  {
45
36
  context: ViewContext.Device,
@@ -49,14 +40,19 @@ function alarmsCockpitRouteAndNodeConfig() {
49
40
  label: gettext('Alarms'),
50
41
  component: AlarmsComponent,
51
42
  featureId: 'alarms',
52
- children
53
- }
43
+ children: getChildrenForViewContext(ViewContext.DeviceAlarms)
44
+ },
45
+ ...getViewContextRoutes([
46
+ ViewContext.Alarms,
47
+ ViewContext.GroupAlarms,
48
+ ViewContext.DeviceAlarms
49
+ ])
54
50
  ]
55
51
  });
56
52
  }
57
53
  class CockpitAlarmsModule extends AlarmsModule {
58
54
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CockpitAlarmsModule, deps: null, target: i0.ɵɵFactoryTarget.NgModule }); }
59
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: CockpitAlarmsModule, imports: [AlarmsModule] }); }
55
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: CockpitAlarmsModule, imports: [i1.AlarmsModule] }); }
60
56
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CockpitAlarmsModule, imports: [alarmsCockpitRouteAndNodeConfig()] }); }
61
57
  }
62
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CockpitAlarmsModule, decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-alarms-cockpit.mjs","sources":["../../alarms/cockpit/index.ts","../../alarms/cockpit/c8y-ngx-components-alarms-cockpit.ts"],"sourcesContent":["import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NavigatorNode, ViewContext, gettext } from '@c8y/ngx-components';\nimport {\n ALARMS_PATH,\n AlarmEmptyComponent,\n AlarmInfoComponent,\n AlarmsComponent,\n AlarmsModule\n} from '@c8y/ngx-components/alarms';\n\nexport function alarmsCockpitRouteAndNodeConfig(): ModuleWithProviders<AlarmsModule> {\n const children = [\n {\n path: '',\n component: AlarmEmptyComponent\n },\n {\n path: ':id',\n component: AlarmInfoComponent\n }\n ];\n return AlarmsModule.config({\n rootNavigatorNode: new NavigatorNode({\n label: gettext('Alarms'),\n icon: 'bell',\n priority: 1000,\n path: `/${ALARMS_PATH}`,\n featureId: 'alarms',\n parent: '',\n routerLinkExact: false\n }),\n route: [\n {\n path: ALARMS_PATH,\n component: AlarmsComponent,\n data: { title: true },\n children\n },\n {\n context: ViewContext.Group,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children\n },\n {\n context: ViewContext.Device,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children\n }\n ]\n });\n}\n\n@NgModule({\n imports: [alarmsCockpitRouteAndNodeConfig()]\n})\nexport class CockpitAlarmsModule extends AlarmsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;SAUgB,+BAA+B,GAAA;AAC7C,IAAA,MAAM,QAAQ,GAAG;AACf,QAAA;AACE,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,SAAS,EAAE,mBAAmB;AAC/B,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,SAAS,EAAE,kBAAkB;AAC9B,SAAA;KACF,CAAC;IACF,OAAO,YAAY,CAAC,MAAM,CAAC;QACzB,iBAAiB,EAAE,IAAI,aAAa,CAAC;AACnC,YAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,CAAI,CAAA,EAAA,WAAW,CAAE,CAAA;AACvB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,eAAe,EAAE,KAAK;SACvB,CAAC;AACF,QAAA,KAAK,EAAE;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;gBACrB,QAAQ;AACT,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,KAAK;AAC1B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;gBACnB,QAAQ;AACT,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,MAAM;AAC3B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;gBACnB,QAAQ;AACT,aAAA;AACF,SAAA;AACF,KAAA,CAAC,CAAC;AACL,CAAC;AAKK,MAAO,mBAAoB,SAAQ,YAAY,CAAA;8GAAxC,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAnB,mBAAmB,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA;+GAAnB,mBAAmB,EAAA,OAAA,EAAA,CAFpB,+BAA+B,EAAE,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEhC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,+BAA+B,EAAE,CAAC;AAC7C,iBAAA,CAAA;;;AChED;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-alarms-cockpit.mjs","sources":["../../alarms/cockpit/index.ts","../../alarms/cockpit/c8y-ngx-components-alarms-cockpit.ts"],"sourcesContent":["import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NavigatorNode, ViewContext, gettext } from '@c8y/ngx-components';\nimport {\n ALARMS_PATH,\n AlarmsComponent,\n AlarmsModule,\n getChildrenForViewContext,\n getViewContextRoutes\n} from '@c8y/ngx-components/alarms';\n\nexport function alarmsCockpitRouteAndNodeConfig(): ModuleWithProviders<AlarmsModule> {\n return AlarmsModule.config({\n rootNavigatorNode: new NavigatorNode({\n label: gettext('Alarms'),\n icon: 'bell',\n priority: 1000,\n path: `/${ALARMS_PATH}`,\n featureId: 'alarms',\n parent: '',\n routerLinkExact: false\n }),\n route: [\n {\n path: ALARMS_PATH,\n component: AlarmsComponent,\n data: { title: true },\n children: getChildrenForViewContext(ViewContext.Alarms)\n },\n {\n context: ViewContext.Group,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.GroupAlarms)\n },\n {\n context: ViewContext.Device,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.DeviceAlarms)\n },\n ...getViewContextRoutes([\n ViewContext.Alarms,\n ViewContext.GroupAlarms,\n ViewContext.DeviceAlarms\n ])\n ]\n });\n}\n\n@NgModule({\n imports: [alarmsCockpitRouteAndNodeConfig()]\n})\nexport class CockpitAlarmsModule extends AlarmsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;SAUgB,+BAA+B,GAAA;IAC7C,OAAO,YAAY,CAAC,MAAM,CAAC;QACzB,iBAAiB,EAAE,IAAI,aAAa,CAAC;AACnC,YAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,CAAI,CAAA,EAAA,WAAW,CAAE,CAAA;AACvB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,eAAe,EAAE,KAAK;SACvB,CAAC;AACF,QAAA,KAAK,EAAE;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AACrB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,MAAM,CAAC;AACxD,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,KAAK;AAC1B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,WAAW,CAAC;AAC7D,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,MAAM;AAC3B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,YAAY,CAAC;AAC9D,aAAA;AACD,YAAA,GAAG,oBAAoB,CAAC;AACtB,gBAAA,WAAW,CAAC,MAAM;AAClB,gBAAA,WAAW,CAAC,WAAW;AACvB,gBAAA,WAAW,CAAC,YAAY;aACzB,CAAC;AACH,SAAA;AACF,KAAA,CAAC,CAAC;AACL,CAAC;AAKK,MAAO,mBAAoB,SAAQ,YAAY,CAAA;8GAAxC,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAnB,mBAAmB,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA;+GAAnB,mBAAmB,EAAA,OAAA,EAAA,CAFpB,+BAA+B,EAAE,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEhC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,+BAA+B,EAAE,CAAC;AAC7C,iBAAA,CAAA;;;AC3DD;;AAEG;;;;"}
@@ -1,17 +1,7 @@
1
1
  import { NavigatorNode, gettext, ViewContext } from '@c8y/ngx-components';
2
- import { AlarmEmptyComponent, AlarmInfoComponent, AlarmsModule, ALARMS_PATH, AlarmsComponent } from '@c8y/ngx-components/alarms';
2
+ import { AlarmsModule, ALARMS_PATH, AlarmsComponent, getChildrenForViewContext, getViewContextRoutes } from '@c8y/ngx-components/alarms';
3
3
 
4
4
  function alarmsDeviceManagementRouteAndNodeConfig() {
5
- const children = [
6
- {
7
- path: '',
8
- component: AlarmEmptyComponent
9
- },
10
- {
11
- path: ':id',
12
- component: AlarmInfoComponent
13
- }
14
- ];
15
5
  return AlarmsModule.config({
16
6
  rootNavigatorNode: new NavigatorNode({
17
7
  label: gettext('Alarms'),
@@ -27,7 +17,7 @@ function alarmsDeviceManagementRouteAndNodeConfig() {
27
17
  path: ALARMS_PATH,
28
18
  component: AlarmsComponent,
29
19
  data: { title: true },
30
- children
20
+ children: getChildrenForViewContext(ViewContext.Alarms)
31
21
  },
32
22
  {
33
23
  context: ViewContext.Group,
@@ -37,7 +27,7 @@ function alarmsDeviceManagementRouteAndNodeConfig() {
37
27
  label: gettext('Alarms'),
38
28
  component: AlarmsComponent,
39
29
  featureId: 'alarms',
40
- children
30
+ children: getChildrenForViewContext(ViewContext.GroupAlarms)
41
31
  },
42
32
  {
43
33
  context: ViewContext.Device,
@@ -47,7 +37,7 @@ function alarmsDeviceManagementRouteAndNodeConfig() {
47
37
  label: gettext('Alarms'),
48
38
  component: AlarmsComponent,
49
39
  featureId: 'alarms',
50
- children
40
+ children: getChildrenForViewContext(ViewContext.DeviceAlarms)
51
41
  },
52
42
  {
53
43
  context: ViewContext.Service,
@@ -57,7 +47,7 @@ function alarmsDeviceManagementRouteAndNodeConfig() {
57
47
  label: gettext('Alarms'),
58
48
  component: AlarmsComponent,
59
49
  featureId: 'alarms',
60
- children
50
+ children: getChildrenForViewContext(ViewContext.ServiceAlarms)
61
51
  },
62
52
  {
63
53
  context: ViewContext.Simulators,
@@ -67,8 +57,15 @@ function alarmsDeviceManagementRouteAndNodeConfig() {
67
57
  label: gettext('Alarms'),
68
58
  component: AlarmsComponent,
69
59
  featureId: 'alarms',
70
- children
71
- }
60
+ children: getChildrenForViewContext(ViewContext.SimulatorsAlarms)
61
+ },
62
+ ...getViewContextRoutes([
63
+ ViewContext.Alarms,
64
+ ViewContext.GroupAlarms,
65
+ ViewContext.DeviceAlarms,
66
+ ViewContext.ServiceAlarms,
67
+ ViewContext.SimulatorsAlarms
68
+ ])
72
69
  ]
73
70
  });
74
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-alarms-devicemanagement.mjs","sources":["../../alarms/devicemanagement/index.ts","../../alarms/devicemanagement/c8y-ngx-components-alarms-devicemanagement.ts"],"sourcesContent":["import { ModuleWithProviders } from '@angular/core';\nimport { NavigatorNode, ViewContext, gettext } from '@c8y/ngx-components';\nimport {\n ALARMS_PATH,\n AlarmEmptyComponent,\n AlarmInfoComponent,\n AlarmsComponent,\n AlarmsModule\n} from '@c8y/ngx-components/alarms';\n\nexport function alarmsDeviceManagementRouteAndNodeConfig(): ModuleWithProviders<AlarmsModule> {\n const children = [\n {\n path: '',\n component: AlarmEmptyComponent\n },\n {\n path: ':id',\n component: AlarmInfoComponent\n }\n ];\n return AlarmsModule.config({\n rootNavigatorNode: new NavigatorNode({\n label: gettext('Alarms'),\n icon: 'bell',\n priority: 3000,\n path: `/${ALARMS_PATH}`,\n featureId: 'alarms',\n parent: 'Overviews',\n routerLinkExact: false\n }),\n route: [\n {\n path: ALARMS_PATH,\n component: AlarmsComponent,\n data: { title: true },\n children\n },\n {\n context: ViewContext.Group,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children\n },\n {\n context: ViewContext.Device,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children\n },\n {\n context: ViewContext.Service,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children\n },\n {\n context: ViewContext.Simulators,\n path: ALARMS_PATH,\n priority: -2,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children\n }\n ]\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;SAUgB,wCAAwC,GAAA;AACtD,IAAA,MAAM,QAAQ,GAAG;AACf,QAAA;AACE,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,SAAS,EAAE,mBAAmB;AAC/B,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,SAAS,EAAE,kBAAkB;AAC9B,SAAA;KACF,CAAC;IACF,OAAO,YAAY,CAAC,MAAM,CAAC;QACzB,iBAAiB,EAAE,IAAI,aAAa,CAAC;AACnC,YAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,CAAI,CAAA,EAAA,WAAW,CAAE,CAAA;AACvB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,eAAe,EAAE,KAAK;SACvB,CAAC;AACF,QAAA,KAAK,EAAE;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;gBACrB,QAAQ;AACT,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,KAAK;AAC1B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;gBACnB,QAAQ;AACT,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,MAAM;AAC3B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;gBACnB,QAAQ;AACT,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,OAAO;AAC5B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;gBACnB,QAAQ;AACT,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,UAAU;AAC/B,gBAAA,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,CAAC,CAAC;AACZ,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;gBACnB,QAAQ;AACT,aAAA;AACF,SAAA;AACF,KAAA,CAAC,CAAC;AACL;;AChFA;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-alarms-devicemanagement.mjs","sources":["../../alarms/devicemanagement/index.ts","../../alarms/devicemanagement/c8y-ngx-components-alarms-devicemanagement.ts"],"sourcesContent":["import { ModuleWithProviders } from '@angular/core';\nimport { NavigatorNode, ViewContext, gettext } from '@c8y/ngx-components';\nimport {\n ALARMS_PATH,\n AlarmsComponent,\n AlarmsModule,\n getChildrenForViewContext,\n getViewContextRoutes\n} from '@c8y/ngx-components/alarms';\n\nexport function alarmsDeviceManagementRouteAndNodeConfig(): ModuleWithProviders<AlarmsModule> {\n return AlarmsModule.config({\n rootNavigatorNode: new NavigatorNode({\n label: gettext('Alarms'),\n icon: 'bell',\n priority: 3000,\n path: `/${ALARMS_PATH}`,\n featureId: 'alarms',\n parent: 'Overviews',\n routerLinkExact: false\n }),\n route: [\n {\n path: ALARMS_PATH,\n component: AlarmsComponent,\n data: { title: true },\n children: getChildrenForViewContext(ViewContext.Alarms)\n },\n {\n context: ViewContext.Group,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.GroupAlarms)\n },\n {\n context: ViewContext.Device,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.DeviceAlarms)\n },\n {\n context: ViewContext.Service,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.ServiceAlarms)\n },\n {\n context: ViewContext.Simulators,\n path: ALARMS_PATH,\n priority: -2,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.SimulatorsAlarms)\n },\n ...getViewContextRoutes([\n ViewContext.Alarms,\n ViewContext.GroupAlarms,\n ViewContext.DeviceAlarms,\n ViewContext.ServiceAlarms,\n ViewContext.SimulatorsAlarms\n ])\n ]\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;SAUgB,wCAAwC,GAAA;IACtD,OAAO,YAAY,CAAC,MAAM,CAAC;QACzB,iBAAiB,EAAE,IAAI,aAAa,CAAC;AACnC,YAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,CAAI,CAAA,EAAA,WAAW,CAAE,CAAA;AACvB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,eAAe,EAAE,KAAK;SACvB,CAAC;AACF,QAAA,KAAK,EAAE;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AACrB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,MAAM,CAAC;AACxD,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,KAAK;AAC1B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,WAAW,CAAC;AAC7D,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,MAAM;AAC3B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,YAAY,CAAC;AAC9D,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,OAAO;AAC5B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,aAAa,CAAC;AAC/D,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,UAAU;AAC/B,gBAAA,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,CAAC,CAAC;AACZ,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,gBAAgB,CAAC;AAClE,aAAA;AACD,YAAA,GAAG,oBAAoB,CAAC;AACtB,gBAAA,WAAW,CAAC,MAAM;AAClB,gBAAA,WAAW,CAAC,WAAW;AACvB,gBAAA,WAAW,CAAC,YAAY;AACxB,gBAAA,WAAW,CAAC,aAAa;AACzB,gBAAA,WAAW,CAAC,gBAAgB;aAC7B,CAAC;AACH,SAAA;AACF,KAAA,CAAC,CAAC;AACL;;AC7EA;;AAEG;;;;"}