@c8y/ngx-components 1021.70.1 → 1021.71.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 (116) hide show
  1. package/branding/shared/lazy/branding-import-modal/branding-import-modal.component.d.ts.map +1 -1
  2. package/core/beta-feature/beta-feature-show-notification.service.d.ts +10 -0
  3. package/core/beta-feature/beta-feature-show-notification.service.d.ts.map +1 -0
  4. package/core/beta-feature/beta-feature.providers.d.ts +3 -0
  5. package/core/beta-feature/beta-feature.providers.d.ts.map +1 -0
  6. package/core/beta-feature/beta-preview-button.component.d.ts +17 -0
  7. package/core/beta-feature/beta-preview-button.component.d.ts.map +1 -0
  8. package/core/beta-feature/beta-preview-drawer.factory.d.ts +19 -0
  9. package/core/beta-feature/beta-preview-drawer.factory.d.ts.map +1 -0
  10. package/core/beta-feature/beta-preview.component.d.ts +25 -0
  11. package/core/beta-feature/beta-preview.component.d.ts.map +1 -0
  12. package/core/beta-feature/beta-preview.model.d.ts +24 -0
  13. package/core/beta-feature/beta-preview.model.d.ts.map +1 -0
  14. package/core/beta-feature/beta-preview.service.d.ts +47 -0
  15. package/core/beta-feature/beta-preview.service.d.ts.map +1 -0
  16. package/core/beta-feature/feature-cache.service.d.ts +26 -0
  17. package/core/beta-feature/feature-cache.service.d.ts.map +1 -0
  18. package/core/beta-feature/feature-state.pipe.d.ts +12 -0
  19. package/core/beta-feature/feature-state.pipe.d.ts.map +1 -0
  20. package/core/beta-feature/index.d.ts +7 -0
  21. package/core/beta-feature/index.d.ts.map +1 -0
  22. package/core/bottom-drawer/bottom-drawer-ref.d.ts.map +1 -1
  23. package/core/bottom-drawer/bottom-drawer.component.d.ts +1 -0
  24. package/core/bottom-drawer/bottom-drawer.component.d.ts.map +1 -1
  25. package/core/bottom-drawer/bottom-drawer.model.d.ts +4 -0
  26. package/core/bottom-drawer/bottom-drawer.model.d.ts.map +1 -1
  27. package/core/common/ApplicationOptions.d.ts +8 -0
  28. package/core/common/ApplicationOptions.d.ts.map +1 -1
  29. package/core/common/index.d.ts +1 -0
  30. package/core/common/index.d.ts.map +1 -1
  31. package/core/common/notification-display.service.d.ts +19 -0
  32. package/core/common/notification-display.service.d.ts.map +1 -0
  33. package/core/core.module.d.ts.map +1 -1
  34. package/core/header/header-bar/header-bar.component.d.ts +1 -0
  35. package/core/header/header-bar/header-bar.component.d.ts.map +1 -1
  36. package/core/header/header.service.d.ts +4 -1
  37. package/core/header/header.service.d.ts.map +1 -1
  38. package/core/index.d.ts +1 -0
  39. package/core/index.d.ts.map +1 -1
  40. package/datapoint-explorer/datapoint-explorer-navigation-factory.d.ts +10 -0
  41. package/datapoint-explorer/datapoint-explorer-navigation-factory.d.ts.map +1 -0
  42. package/datapoint-explorer/datapoint-explorer-route-factory.d.ts +10 -0
  43. package/datapoint-explorer/datapoint-explorer-route-factory.d.ts.map +1 -0
  44. package/datapoint-explorer/datapoint-explorer.module.d.ts.map +1 -1
  45. package/esm2022/branding/shared/lazy/branding-import-modal/branding-import-modal.component.mjs +4 -7
  46. package/esm2022/core/beta-feature/beta-feature-show-notification.service.mjs +17 -0
  47. package/esm2022/core/beta-feature/beta-feature.providers.mjs +9 -0
  48. package/esm2022/core/beta-feature/beta-preview-button.component.mjs +53 -0
  49. package/esm2022/core/beta-feature/beta-preview-drawer.factory.mjs +52 -0
  50. package/esm2022/core/beta-feature/beta-preview.component.mjs +64 -0
  51. package/esm2022/core/beta-feature/beta-preview.model.mjs +2 -0
  52. package/esm2022/core/beta-feature/beta-preview.service.mjs +114 -0
  53. package/esm2022/core/beta-feature/feature-cache.service.mjs +48 -0
  54. package/esm2022/core/beta-feature/feature-state.pipe.mjs +22 -0
  55. package/esm2022/core/beta-feature/index.mjs +7 -0
  56. package/esm2022/core/bottom-drawer/bottom-drawer-ref.mjs +4 -1
  57. package/esm2022/core/bottom-drawer/bottom-drawer.component.mjs +4 -3
  58. package/esm2022/core/bottom-drawer/bottom-drawer.model.mjs +1 -1
  59. package/esm2022/core/common/ApplicationOptions.mjs +1 -1
  60. package/esm2022/core/common/index.mjs +2 -1
  61. package/esm2022/core/common/notification-display.service.mjs +2 -0
  62. package/esm2022/core/core.module.mjs +4 -2
  63. package/esm2022/core/docs/legal-notices-outlet/legal-notices-outlet.component.mjs +3 -3
  64. package/esm2022/core/header/header-bar/header-bar.component.mjs +4 -3
  65. package/esm2022/core/header/header.service.mjs +12 -6
  66. package/esm2022/core/index.mjs +2 -1
  67. package/esm2022/core/user/user-details-drawer/user-details-drawer.component.mjs +3 -3
  68. package/esm2022/core/version/version-list/version-list.component.mjs +3 -3
  69. package/esm2022/datapoint-explorer/datapoint-explorer-navigation-factory.mjs +31 -0
  70. package/esm2022/datapoint-explorer/datapoint-explorer-route-factory.mjs +37 -0
  71. package/esm2022/datapoint-explorer/datapoint-explorer.module.mjs +22 -48
  72. package/esm2022/register-device/bulk/bulk-device-registration-modal.component.mjs +8 -10
  73. package/esm2022/register-device/general/general-device-registration.component.mjs +8 -10
  74. package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +10 -12
  75. package/esm2022/upgrade/ng1/downgraded.services.mjs +3 -2
  76. package/esm2022/upgrade/ng1/index.mjs +3 -2
  77. package/esm2022/widgets/cockpit-exports/index.mjs +2 -2
  78. package/esm2022/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.mjs +56 -0
  79. package/esm2022/widgets/definitions/datapoints-graph/index.mjs +12 -29
  80. package/esm2022/widgets/definitions/index.mjs +3 -2
  81. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +3 -6
  82. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  83. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +81 -48
  84. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  85. package/fesm2022/c8y-ngx-components-register-device.mjs +10 -14
  86. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  87. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +18 -20
  88. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  89. package/fesm2022/c8y-ngx-components-upgrade.mjs +3 -1
  90. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  91. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +1 -1
  92. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  93. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +65 -28
  94. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +2 -1
  96. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  97. package/fesm2022/c8y-ngx-components.mjs +347 -17
  98. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  99. package/locales/locales.pot +31 -8
  100. package/package.json +1 -1
  101. package/register-device/bulk/bulk-device-registration-modal.component.d.ts +5 -5
  102. package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
  103. package/register-device/general/general-device-registration.component.d.ts +5 -5
  104. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  105. package/trusted-certificates/list/trusted-certificate-list.component.d.ts +4 -4
  106. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  107. package/upgrade/ng1/downgraded.services.d.ts +1 -0
  108. package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
  109. package/upgrade/ng1/index.d.ts.map +1 -1
  110. package/widgets/cockpit-exports/index.d.ts +1 -1
  111. package/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.d.ts +11 -0
  112. package/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.d.ts.map +1 -0
  113. package/widgets/definitions/datapoints-graph/index.d.ts +0 -28
  114. package/widgets/definitions/datapoints-graph/index.d.ts.map +1 -1
  115. package/widgets/definitions/index.d.ts +2 -1
  116. package/widgets/definitions/index.d.ts.map +1 -1
@@ -0,0 +1,17 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { PreviewService } from './beta-preview.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./beta-preview.service";
5
+ export class BetaFeatureShowNotification {
6
+ constructor(previewService) {
7
+ this.previewService = previewService;
8
+ this.shouldShowNotification$ = this.previewService.hasUnseenFeatures$;
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaFeatureShowNotification, deps: [{ token: i1.PreviewService }], target: i0.ɵɵFactoryTarget.Injectable }); }
11
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaFeatureShowNotification, providedIn: 'root' }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaFeatureShowNotification, decorators: [{
14
+ type: Injectable,
15
+ args: [{ providedIn: 'root' }]
16
+ }], ctorParameters: () => [{ type: i1.PreviewService }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV0YS1mZWF0dXJlLXNob3ctbm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2JldGEtZmVhdHVyZS9iZXRhLWZlYXR1cmUtc2hvdy1ub3RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBR3hELE1BQU0sT0FBTywyQkFBMkI7SUFLdEMsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRmxELDRCQUF1QixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUM7SUFFWixDQUFDOytHQUwzQywyQkFBMkI7bUhBQTNCLDJCQUEyQixjQURkLE1BQU07OzRGQUNuQiwyQkFBMkI7a0JBRHZDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJldmlld1NlcnZpY2UgfSBmcm9tICcuL2JldGEtcHJldmlldy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBCZXRhRmVhdHVyZVNob3dOb3RpZmljYXRpb25cbiAgaW1wbGVtZW50cyBDdW11bG9jaXR5U2VydmljZVJlZ2lzdHJ5Lk5vdGlmaWNhdGlvblNlcnZpY2VQcm92aWRlclxue1xuICBzaG91bGRTaG93Tm90aWZpY2F0aW9uJCA9IHRoaXMucHJldmlld1NlcnZpY2UuaGFzVW5zZWVuRmVhdHVyZXMkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJldmlld1NlcnZpY2U6IFByZXZpZXdTZXJ2aWNlKSB7fVxufVxuIl19
@@ -0,0 +1,9 @@
1
+ import { hookDrawer } from '../drawer';
2
+ import { BetaPreviewDrawerFactory } from './beta-preview-drawer.factory';
3
+ import { hookService } from '../common';
4
+ import { BetaFeatureShowNotification } from './beta-feature-show-notification.service';
5
+ export const BETA_FEATURE_PROVIDERS = [
6
+ hookDrawer(BetaPreviewDrawerFactory),
7
+ hookService('notificationService', BetaFeatureShowNotification)
8
+ ];
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV0YS1mZWF0dXJlLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYmV0YS1mZWF0dXJlL2JldGEtZmVhdHVyZS5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXZGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFlO0lBQ2hELFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQztJQUNwQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsMkJBQTJCLENBQUM7Q0FDaEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBob29rRHJhd2VyIH0gZnJvbSAnLi4vZHJhd2VyJztcbmltcG9ydCB7IEJldGFQcmV2aWV3RHJhd2VyRmFjdG9yeSB9IGZyb20gJy4vYmV0YS1wcmV2aWV3LWRyYXdlci5mYWN0b3J5JztcbmltcG9ydCB7IGhvb2tTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IEJldGFGZWF0dXJlU2hvd05vdGlmaWNhdGlvbiB9IGZyb20gJy4vYmV0YS1mZWF0dXJlLXNob3ctbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgQkVUQV9GRUFUVVJFX1BST1ZJREVSUzogUHJvdmlkZXJbXSA9IFtcbiAgaG9va0RyYXdlcihCZXRhUHJldmlld0RyYXdlckZhY3RvcnkpLFxuICBob29rU2VydmljZSgnbm90aWZpY2F0aW9uU2VydmljZScsIEJldGFGZWF0dXJlU2hvd05vdGlmaWNhdGlvbilcbl07XG4iXX0=
@@ -0,0 +1,53 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { C8yTranslateDirective, C8yTranslatePipe } from '../i18n';
3
+ import { BetaPreviewComponent } from './beta-preview.component';
4
+ import { PreviewService } from './beta-preview.service';
5
+ import { Subject, takeUntil } from 'rxjs';
6
+ import { BottomDrawerService } from '../bottom-drawer';
7
+ import { HeaderService } from '../header';
8
+ import { AsyncPipe, NgIf } from '@angular/common';
9
+ import * as i0 from "@angular/core";
10
+ export class BetaPreviewButtonComponent {
11
+ constructor() {
12
+ this.previewService = inject(PreviewService);
13
+ this.bottomDrawerService = inject(BottomDrawerService);
14
+ this.headerService = inject(HeaderService);
15
+ this.destroy$ = new Subject();
16
+ }
17
+ ngOnInit() {
18
+ this.hasUnseenFeatures$ = this.previewService.hasUnseenFeatures$;
19
+ this.open$ = this.headerService.rightDrawerOpen$;
20
+ }
21
+ async openBetaPreview() {
22
+ this.headerService.closeRightDrawer();
23
+ const bottomDrawer = this.bottomDrawerService.openDrawer(BetaPreviewComponent, {
24
+ closeOnNavigation: false,
25
+ disableClickOutside: true
26
+ });
27
+ bottomDrawer.onClosed$.pipe(takeUntil(this.destroy$)).subscribe(() => {
28
+ if (this.previewService.reload$.value) {
29
+ window.location.reload();
30
+ }
31
+ });
32
+ try {
33
+ const result = await bottomDrawer.instance.shouldClose;
34
+ if (result) {
35
+ bottomDrawer.close();
36
+ }
37
+ }
38
+ catch (e) {
39
+ // intended empty
40
+ }
41
+ }
42
+ ngOnDestroy() {
43
+ this.destroy$.next();
44
+ this.destroy$.complete();
45
+ }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaPreviewButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BetaPreviewButtonComponent, isStandalone: true, selector: "c8y-beta-preview-button", ngImport: i0, template: "<div class=\"separator-top p-t-8 m-t-auto c8y-right-drawer__item sticky-top\">\n <i class=\"dlt-c8y-icon-science\"></i>\n <span\n class=\"text-bold\"\n translate\n >\n Beta features\n </span>\n <span\n class=\"m-l-8 tag tag--primary\"\n *ngIf=\"hasUnseenFeatures$ | async\"\n >\n {{ 'New' | translate }}\n </span>\n</div>\n<ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\">\n <small translate>\n Enable or disable experimental features. Your feedback helps us improve functionality before\n final release.\n </small>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Manage beta features' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"openBetaPreview()\"\n >\n <i class=\"m-t-0 m-b-9 text-14 dlt-c8y-icon-settings\"></i>\n <span translate>Manage beta features</span>\n </button>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaPreviewButtonComponent, decorators: [{
50
+ type: Component,
51
+ args: [{ selector: 'c8y-beta-preview-button', standalone: true, imports: [C8yTranslateDirective, C8yTranslatePipe, AsyncPipe, NgIf], template: "<div class=\"separator-top p-t-8 m-t-auto c8y-right-drawer__item sticky-top\">\n <i class=\"dlt-c8y-icon-science\"></i>\n <span\n class=\"text-bold\"\n translate\n >\n Beta features\n </span>\n <span\n class=\"m-l-8 tag tag--primary\"\n *ngIf=\"hasUnseenFeatures$ | async\"\n >\n {{ 'New' | translate }}\n </span>\n</div>\n<ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\">\n <small translate>\n Enable or disable experimental features. Your feedback helps us improve functionality before\n final release.\n </small>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Manage beta features' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"openBetaPreview()\"\n >\n <i class=\"m-t-0 m-b-9 text-14 dlt-c8y-icon-settings\"></i>\n <span translate>Manage beta features</span>\n </button>\n </li>\n</ul>\n" }]
52
+ }] });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV0YS1wcmV2aWV3LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2JldGEtZmVhdHVyZS9iZXRhLXByZXZpZXctYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvYmV0YS1mZWF0dXJlL2JldGEtcHJldmlldy1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBUWxELE1BQU0sT0FBTywwQkFBMEI7SUFOdkM7UUFTbUIsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0MsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7S0FnQ3hDO0lBOUJDLFFBQVE7UUFDTixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7SUFDbkQsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLG9CQUFvQixFQUFFO1lBQzdFLGlCQUFpQixFQUFFLEtBQUs7WUFDeEIsbUJBQW1CLEVBQUUsSUFBSTtTQUMxQixDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNuRSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN0QyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDdkQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsaUJBQWlCO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOytHQXJDVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixtRkNmdkMsODlCQWtDQSw0Q0RyQlkscUJBQXFCLG1FQUFFLGdCQUFnQiw2Q0FBRSxTQUFTLDhDQUFFLElBQUk7OzRGQUV2RCwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UseUJBQXlCLGNBRXZCLElBQUksV0FDUCxDQUFDLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDOHlUcmFuc2xhdGVEaXJlY3RpdmUsIEM4eVRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi9pMThuJztcbmltcG9ydCB7IEJldGFQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9iZXRhLXByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFByZXZpZXdTZXJ2aWNlIH0gZnJvbSAnLi9iZXRhLXByZXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJvdHRvbURyYXdlclNlcnZpY2UgfSBmcm9tICcuLi9ib3R0b20tZHJhd2VyJztcbmltcG9ydCB7IEhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9oZWFkZXInO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWJldGEtcHJldmlldy1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYmV0YS1wcmV2aWV3LWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDOHlUcmFuc2xhdGVEaXJlY3RpdmUsIEM4eVRyYW5zbGF0ZVBpcGUsIEFzeW5jUGlwZSwgTmdJZl1cbn0pXG5leHBvcnQgY2xhc3MgQmV0YVByZXZpZXdCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBvcGVuJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaGFzVW5zZWVuRmVhdHVyZXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IHByZXZpZXdTZXJ2aWNlID0gaW5qZWN0KFByZXZpZXdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBib3R0b21EcmF3ZXJTZXJ2aWNlID0gaW5qZWN0KEJvdHRvbURyYXdlclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlclNlcnZpY2UgPSBpbmplY3QoSGVhZGVyU2VydmljZSk7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaGFzVW5zZWVuRmVhdHVyZXMkID0gdGhpcy5wcmV2aWV3U2VydmljZS5oYXNVbnNlZW5GZWF0dXJlcyQ7XG4gICAgdGhpcy5vcGVuJCA9IHRoaXMuaGVhZGVyU2VydmljZS5yaWdodERyYXdlck9wZW4kO1xuICB9XG5cbiAgYXN5bmMgb3BlbkJldGFQcmV2aWV3KCkge1xuICAgIHRoaXMuaGVhZGVyU2VydmljZS5jbG9zZVJpZ2h0RHJhd2VyKCk7XG4gICAgY29uc3QgYm90dG9tRHJhd2VyID0gdGhpcy5ib3R0b21EcmF3ZXJTZXJ2aWNlLm9wZW5EcmF3ZXIoQmV0YVByZXZpZXdDb21wb25lbnQsIHtcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcbiAgICAgIGRpc2FibGVDbGlja091dHNpZGU6IHRydWVcbiAgICB9KTtcbiAgICBib3R0b21EcmF3ZXIub25DbG9zZWQkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJldmlld1NlcnZpY2UucmVsb2FkJC52YWx1ZSkge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJvdHRvbURyYXdlci5pbnN0YW5jZS5zaG91bGRDbG9zZTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgYm90dG9tRHJhd2VyLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gaW50ZW5kZWQgZW1wdHlcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzZXBhcmF0b3ItdG9wIHAtdC04IG0tdC1hdXRvIGM4eS1yaWdodC1kcmF3ZXJfX2l0ZW0gc3RpY2t5LXRvcFwiPlxuICA8aSBjbGFzcz1cImRsdC1jOHktaWNvbi1zY2llbmNlXCI+PC9pPlxuICA8c3BhblxuICAgIGNsYXNzPVwidGV4dC1ib2xkXCJcbiAgICB0cmFuc2xhdGVcbiAgPlxuICAgIEJldGEgZmVhdHVyZXNcbiAgPC9zcGFuPlxuICA8c3BhblxuICAgIGNsYXNzPVwibS1sLTggdGFnIHRhZy0tcHJpbWFyeVwiXG4gICAgKm5nSWY9XCJoYXNVbnNlZW5GZWF0dXJlcyQgfCBhc3luY1wiXG4gID5cbiAgICB7eyAnTmV3JyB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG48L2Rpdj5cbjx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cbiAgPGxpIGNsYXNzPVwiYzh5LXJpZ2h0LWRyYXdlcl9faXRlbVwiPlxuICAgIDxzbWFsbCB0cmFuc2xhdGU+XG4gICAgICBFbmFibGUgb3IgZGlzYWJsZSBleHBlcmltZW50YWwgZmVhdHVyZXMuIFlvdXIgZmVlZGJhY2sgaGVscHMgdXMgaW1wcm92ZSBmdW5jdGlvbmFsaXR5IGJlZm9yZVxuICAgICAgZmluYWwgcmVsZWFzZS5cbiAgICA8L3NtYWxsPlxuICA8L2xpPlxuICA8bGkgY2xhc3M9XCJjOHktcmlnaHQtZHJhd2VyX19pdGVtXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgIHRpdGxlPVwie3sgJ01hbmFnZSBiZXRhIGZlYXR1cmVzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICBbYXR0ci50YWJpbmRleF09XCIob3BlbiQgfCBhc3luYykgPyAnMCcgOiAnLTEnXCJcbiAgICAgIChjbGljayk9XCJvcGVuQmV0YVByZXZpZXcoKVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJtLXQtMCBtLWItOSB0ZXh0LTE0IGRsdC1jOHktaWNvbi1zZXR0aW5nc1wiPjwvaT5cbiAgICAgIDxzcGFuIHRyYW5zbGF0ZT5NYW5hZ2UgYmV0YSBmZWF0dXJlczwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9saT5cbjwvdWw+XG4iXX0=
@@ -0,0 +1,52 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { OptionsService } from '../common/options.service';
3
+ import { combineLatest } from 'rxjs';
4
+ import { distinctUntilChanged, map } from 'rxjs/operators';
5
+ import { BetaPreviewButtonComponent } from './beta-preview-button.component';
6
+ import { PreviewService } from './beta-preview.service';
7
+ import { Permissions } from '../common/permissions.service';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../common/options.service";
10
+ import * as i2 from "./beta-preview.service";
11
+ import * as i3 from "../common/permissions.service";
12
+ export class BetaPreviewDrawerFactory {
13
+ constructor(options, previewService, permissions) {
14
+ this.options = options;
15
+ this.previewService = previewService;
16
+ this.permissions = permissions;
17
+ this.drawerItem = {
18
+ component: BetaPreviewButtonComponent,
19
+ position: 'right',
20
+ priority: 80,
21
+ id: 'betaPreview'
22
+ };
23
+ }
24
+ get() {
25
+ return this.shouldShowBetaPreview$().pipe(distinctUntilChanged(), map(shouldShowBetaPreview => {
26
+ if (shouldShowBetaPreview) {
27
+ return this.drawerItem;
28
+ }
29
+ return [];
30
+ }));
31
+ }
32
+ shouldShowBetaPreview$() {
33
+ return combineLatest([this.options.get$('hideBetaPreview'), this.previewService.items$]).pipe(map(([hideBetaPreview, items]) => {
34
+ const hasItems = items.length > 0;
35
+ if (!hasItems) {
36
+ return false;
37
+ }
38
+ const hasAdminRole = this.permissions.hasRole(Permissions.ROLE_TENANT_MANAGEMENT_ADMIN);
39
+ if (hideBetaPreview === undefined) {
40
+ return hasItems && hasAdminRole;
41
+ }
42
+ return !hideBetaPreview && hasItems && hasAdminRole;
43
+ }));
44
+ }
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaPreviewDrawerFactory, deps: [{ token: i1.OptionsService }, { token: i2.PreviewService }, { token: i3.Permissions }], target: i0.ɵɵFactoryTarget.Injectable }); }
46
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaPreviewDrawerFactory, providedIn: 'root' }); }
47
+ }
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaPreviewDrawerFactory, decorators: [{
49
+ type: Injectable,
50
+ args: [{ providedIn: 'root' }]
51
+ }], ctorParameters: () => [{ type: i1.OptionsService }, { type: i2.PreviewService }, { type: i3.Permissions }] });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV0YS1wcmV2aWV3LWRyYXdlci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9iZXRhLWZlYXR1cmUvYmV0YS1wcmV2aWV3LWRyYXdlci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7O0FBRzVELE1BQU0sT0FBTyx3QkFBd0I7SUFRbkMsWUFDVSxPQUF1QixFQUN2QixjQUE4QixFQUM5QixXQUF3QjtRQUZ4QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFWeEIsZUFBVSxHQUFlO1lBQ2pDLFNBQVMsRUFBRSwwQkFBMEI7WUFDckMsUUFBUSxFQUFFLE9BQU87WUFDakIsUUFBUSxFQUFFLEVBQUU7WUFDWixFQUFFLEVBQUUsYUFBYTtTQUNsQixDQUFDO0lBTUMsQ0FBQztJQUVKLEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLElBQUksQ0FDdkMsb0JBQW9CLEVBQUUsRUFDdEIsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEVBQUU7WUFDMUIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO2dCQUMxQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDekIsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsT0FBTyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzNGLEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDL0IsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1lBRXhGLElBQUksZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLFFBQVEsSUFBSSxZQUFZLENBQUM7WUFDbEMsQ0FBQztZQUVELE9BQU8sQ0FBQyxlQUFlLElBQUksUUFBUSxJQUFJLFlBQVksQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0EzQ1Usd0JBQXdCO21IQUF4Qix3QkFBd0IsY0FEWCxNQUFNOzs0RkFDbkIsd0JBQXdCO2tCQURwQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV4dGVuc2lvbkZhY3RvcnkgfSBmcm9tICcuLi9jb21tb24vZXh0ZW5zaW9uLWhvb2tzJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBEcmF3ZXJJdGVtIH0gZnJvbSAnLi4vZHJhd2VyL2RyYXdlci5tb2RlbCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmV0YVByZXZpZXdCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2JldGEtcHJldmlldy1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFByZXZpZXdTZXJ2aWNlIH0gZnJvbSAnLi9iZXRhLXByZXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9ucyB9IGZyb20gJy4uL2NvbW1vbi9wZXJtaXNzaW9ucy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBCZXRhUHJldmlld0RyYXdlckZhY3RvcnkgaW1wbGVtZW50cyBFeHRlbnNpb25GYWN0b3J5PERyYXdlckl0ZW0+IHtcbiAgcHJvdGVjdGVkIGRyYXdlckl0ZW06IERyYXdlckl0ZW0gPSB7XG4gICAgY29tcG9uZW50OiBCZXRhUHJldmlld0J1dHRvbkNvbXBvbmVudCxcbiAgICBwb3NpdGlvbjogJ3JpZ2h0JyxcbiAgICBwcmlvcml0eTogODAsXG4gICAgaWQ6ICdiZXRhUHJldmlldydcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJldmlld1NlcnZpY2U6IFByZXZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zXG4gICkge31cblxuICBnZXQoKTogT2JzZXJ2YWJsZTxEcmF3ZXJJdGVtW10gfCBEcmF3ZXJJdGVtPiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdWxkU2hvd0JldGFQcmV2aWV3JCgpLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgbWFwKHNob3VsZFNob3dCZXRhUHJldmlldyA9PiB7XG4gICAgICAgIGlmIChzaG91bGRTaG93QmV0YVByZXZpZXcpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5kcmF3ZXJJdGVtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkU2hvd0JldGFQcmV2aWV3JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5vcHRpb25zLmdldCQoJ2hpZGVCZXRhUHJldmlldycpLCB0aGlzLnByZXZpZXdTZXJ2aWNlLml0ZW1zJF0pLnBpcGUoXG4gICAgICBtYXAoKFtoaWRlQmV0YVByZXZpZXcsIGl0ZW1zXSkgPT4ge1xuICAgICAgICBjb25zdCBoYXNJdGVtcyA9IGl0ZW1zLmxlbmd0aCA+IDA7XG4gICAgICAgIGlmICghaGFzSXRlbXMpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoYXNBZG1pblJvbGUgPSB0aGlzLnBlcm1pc3Npb25zLmhhc1JvbGUoUGVybWlzc2lvbnMuUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9BRE1JTik7XG5cbiAgICAgICAgaWYgKGhpZGVCZXRhUHJldmlldyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGhhc0l0ZW1zICYmIGhhc0FkbWluUm9sZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhaGlkZUJldGFQcmV2aWV3ICYmIGhhc0l0ZW1zICYmIGhhc0FkbWluUm9sZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,64 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { BehaviorSubject, firstValueFrom } from 'rxjs';
3
+ import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
4
+ import { CommonModule, MarkdownToHtmlPipe } from '../common';
5
+ import { ListGroupModule } from '../list-group';
6
+ import { PreviewService } from './beta-preview.service';
7
+ import { FeatureStatePipe } from './feature-state.pipe';
8
+ import { FeatureCacheService } from './feature-cache.service';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../common/icon.directive";
11
+ import * as i2 from "../i18n/c8y-translate.directive";
12
+ import * as i3 from "@angular/common";
13
+ import * as i4 from "../i18n/c8y-translate.pipe";
14
+ export class BetaPreviewComponent {
15
+ constructor() {
16
+ this.description$ = new BehaviorSubject('');
17
+ this.betaPreviewService = inject(PreviewService);
18
+ this.featureCacheService = inject(FeatureCacheService);
19
+ this.markdownToHtmlPipe = inject(MarkdownToHtmlPipe);
20
+ this.features$ = this.betaPreviewService.items$;
21
+ this.shouldClose = new Promise(resolve => {
22
+ this.resolveClose = resolve;
23
+ });
24
+ }
25
+ async ngOnInit() {
26
+ await this.betaPreviewService.markAllFeaturesAsSeen();
27
+ const features = await firstValueFrom(this.features$);
28
+ this.updateSelectedFeature(features[0]);
29
+ }
30
+ async updateSelectedFeature(feature) {
31
+ this.selectedFeature = feature;
32
+ await this.updateDescription();
33
+ }
34
+ async updateDescription() {
35
+ const description = await this.selectedFeature?.description();
36
+ if (!this.isComponent(description)) {
37
+ const html = await firstValueFrom(this.markdownToHtmlPipe.transform(description));
38
+ this.description$.next(html);
39
+ }
40
+ else {
41
+ this.description$.next(description);
42
+ }
43
+ }
44
+ isComponent(description) {
45
+ return description instanceof Function;
46
+ }
47
+ async onToggle(feature, event) {
48
+ const isChecked = event.target.checked;
49
+ await this.betaPreviewService.setFeatureActiveState(feature.key, isChecked);
50
+ }
51
+ featureKeyExists(key) {
52
+ return this.featureCacheService.featureExists(key);
53
+ }
54
+ close() {
55
+ this.resolveClose(true);
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BetaPreviewComponent, isStandalone: true, selector: "c8y-beta-preview", host: { classAttribute: "d-contents" }, providers: [MarkdownToHtmlPipe], ngImport: i0, template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Beta features preview\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <ng-container *ngIf=\"feature.key ? (featureKeyExists(feature.key) | async) : true\">\n <button\n class=\"d-flex gap-4 text-truncate flex-grow\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n {{ feature.label }}\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: ListGroupModule }, { kind: "pipe", type: FeatureStatePipe, name: "featureState" }] }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaPreviewComponent, decorators: [{
61
+ type: Component,
62
+ args: [{ selector: 'c8y-beta-preview', host: { class: 'd-contents' }, standalone: true, imports: [NgForOf, NgIf, AsyncPipe, CommonModule, ListGroupModule, FeatureStatePipe], providers: [MarkdownToHtmlPipe], template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Beta features preview\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <ng-container *ngIf=\"feature.key ? (featureKeyExists(feature.key) | async) : true\">\n <button\n class=\"d-flex gap-4 text-truncate flex-grow\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n {{ feature.label }}\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n</ng-template>\n" }]
63
+ }], ctorParameters: () => [] });
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV0YS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYmV0YS1mZWF0dXJlL2JldGEtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2JldGEtZmVhdHVyZS9iZXRhLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFFeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7O0FBVTlELE1BQU0sT0FBTyxvQkFBb0I7SUFhL0I7UUFWQSxpQkFBWSxHQUNWLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBR1QsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xELHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRWpFLGNBQVMsR0FBOEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUdwRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksT0FBTyxDQUFVLE9BQU8sQ0FBQyxFQUFFO1lBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQUMsT0FBb0I7UUFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDL0IsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQjtRQUNyQixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxXQUE2RDtRQUN2RSxPQUFPLFdBQVcsWUFBWSxRQUFRLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBb0IsRUFBRSxLQUFZO1FBQy9DLE1BQU0sU0FBUyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLE9BQU8sQ0FBQztRQUM3RCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFXO1FBQzFCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQzsrR0F2RFUsb0JBQW9CO21HQUFwQixvQkFBb0IsdUdBRnBCLENBQUMsa0JBQWtCLENBQUMsMEJDaEJqQywrN0dBMEdBLDRDRDNGWSxPQUFPLG1IQUFFLElBQUksd0ZBQUUsU0FBUyw2Q0FBRSxZQUFZLCtuQkFBRSxlQUFlLDBCQUFFLGdCQUFnQjs7NEZBR3hFLG9CQUFvQjtrQkFSaEMsU0FBUzsrQkFDRSxrQkFBa0IsUUFFdEIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGNBQ2pCLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsYUFDekUsQ0FBQyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZXRhRmVhdHVyZSB9IGZyb20gJy4vYmV0YS1wcmV2aWV3Lm1vZGVsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIE1hcmtkb3duVG9IdG1sUGlwZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBMaXN0R3JvdXBNb2R1bGUgfSBmcm9tICcuLi9saXN0LWdyb3VwJztcbmltcG9ydCB7IFByZXZpZXdTZXJ2aWNlIH0gZnJvbSAnLi9iZXRhLXByZXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBGZWF0dXJlU3RhdGVQaXBlIH0gZnJvbSAnLi9mZWF0dXJlLXN0YXRlLnBpcGUnO1xuaW1wb3J0IHsgRmVhdHVyZUNhY2hlU2VydmljZSB9IGZyb20gJy4vZmVhdHVyZS1jYWNoZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWJldGEtcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9iZXRhLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnZC1jb250ZW50cycgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nRm9yT2YsIE5nSWYsIEFzeW5jUGlwZSwgQ29tbW9uTW9kdWxlLCBMaXN0R3JvdXBNb2R1bGUsIEZlYXR1cmVTdGF0ZVBpcGVdLFxuICBwcm92aWRlcnM6IFtNYXJrZG93blRvSHRtbFBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEJldGFQcmV2aWV3Q29tcG9uZW50IHtcbiAgc2VsZWN0ZWRGZWF0dXJlOiBCZXRhRmVhdHVyZTtcbiAgc2hvdWxkQ2xvc2U6IFByb21pc2U8Ym9vbGVhbj47XG4gIGRlc2NyaXB0aW9uJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IFR5cGU8YW55PiB8IFByb21pc2U8c3RyaW5nIHwgVHlwZTxhbnk+Pj4gPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBwcml2YXRlIHJlc29sdmVDbG9zZSE6ICh2YWx1ZTogYm9vbGVhbiB8IFByb21pc2VMaWtlPGJvb2xlYW4+KSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYmV0YVByZXZpZXdTZXJ2aWNlID0gaW5qZWN0KFByZXZpZXdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlQ2FjaGVTZXJ2aWNlID0gaW5qZWN0KEZlYXR1cmVDYWNoZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1hcmtkb3duVG9IdG1sUGlwZSA9IGluamVjdChNYXJrZG93blRvSHRtbFBpcGUpO1xuXG4gIGZlYXR1cmVzJDogT2JzZXJ2YWJsZTxCZXRhRmVhdHVyZVtdPiA9IHRoaXMuYmV0YVByZXZpZXdTZXJ2aWNlLml0ZW1zJDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNob3VsZENsb3NlID0gbmV3IFByb21pc2U8Ym9vbGVhbj4ocmVzb2x2ZSA9PiB7XG4gICAgICB0aGlzLnJlc29sdmVDbG9zZSA9IHJlc29sdmU7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmJldGFQcmV2aWV3U2VydmljZS5tYXJrQWxsRmVhdHVyZXNBc1NlZW4oKTtcbiAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuZmVhdHVyZXMkKTtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkRmVhdHVyZShmZWF0dXJlc1swXSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVTZWxlY3RlZEZlYXR1cmUoZmVhdHVyZTogQmV0YUZlYXR1cmUpIHtcbiAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZSA9IGZlYXR1cmU7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVEZXNjcmlwdGlvbigpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRGVzY3JpcHRpb24oKSB7XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBhd2FpdCB0aGlzLnNlbGVjdGVkRmVhdHVyZT8uZGVzY3JpcHRpb24oKTtcbiAgICBpZiAoIXRoaXMuaXNDb21wb25lbnQoZGVzY3JpcHRpb24pKSB7XG4gICAgICBjb25zdCBodG1sID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tYXJrZG93blRvSHRtbFBpcGUudHJhbnNmb3JtKGRlc2NyaXB0aW9uKSk7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uJC5uZXh0KGh0bWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uJC5uZXh0KGRlc2NyaXB0aW9uKTtcbiAgICB9XG4gIH1cblxuICBpc0NvbXBvbmVudChkZXNjcmlwdGlvbjogc3RyaW5nIHwgVHlwZTxhbnk+IHwgUHJvbWlzZTxzdHJpbmcgfCBUeXBlPGFueT4+KSB7XG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb247XG4gIH1cblxuICBhc3luYyBvblRvZ2dsZShmZWF0dXJlOiBCZXRhRmVhdHVyZSwgZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXNDaGVja2VkID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkO1xuICAgIGF3YWl0IHRoaXMuYmV0YVByZXZpZXdTZXJ2aWNlLnNldEZlYXR1cmVBY3RpdmVTdGF0ZShmZWF0dXJlLmtleSwgaXNDaGVja2VkKTtcbiAgfVxuXG4gIGZlYXR1cmVLZXlFeGlzdHMoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mZWF0dXJlQ2FjaGVTZXJ2aWNlLmZlYXR1cmVFeGlzdHMoa2V5KTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMucmVzb2x2ZUNsb3NlKHRydWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBzZXBhcmF0b3ItYm90dG9tIGJnLWNvbXBvbmVudCB0ZXh0LWNlbnRlciBmbGV4LW5vLXNocmluayBwLTI0XCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZml0LXcgYS1pLWNlbnRlciBqLWMtY2VudGVyXCI+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwiaWNvbi0yNCBtLXItOFwiXG4gICAgICBbYzh5SWNvbl09XCInc2NpZW5jZSdcIlxuICAgID48L2k+XG4gICAgPGgzXG4gICAgICBjbGFzcz1cIm0tMFwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBCZXRhIGZlYXR1cmVzIHByZXZpZXdcbiAgICA8L2gzPlxuICA8L2Rpdj5cbiAgPHAgY2xhc3M9XCJ0ZXh0LTE2IG0tdC04XCI+XG4gICAge3tcbiAgICAgICdTZWxlY3QgYW55IGZlYXR1cmUgdG8gdmlldyBhZGRpdGlvbmFsIGRldGFpbHMgYW5kIGRvY3VtZW50YXRpb24uIFRvZ2dsZSBmZWF0dXJlcyBvbiBvciBvZmYgdXNpbmcgdGhlIHN3aXRjaGVzLidcbiAgICAgICAgfCB0cmFuc2xhdGVcbiAgICB9fVxuICA8L3A+XG5cbiAgPHA+XG4gICAge3tcbiAgICAgICdUaGVzZSBiZXRhIGNhcGFiaWxpdGllcyBtYXkgY2hhbmdlIG9yIGJlIHJlbW92ZWQgYmVmb3JlIGZpbmFsIHJlbGVhc2UuIFdlIHZhbHVlIHlvdXIgZmVlZGJhY2suIFRoZSBkZXNjcmlwdGlvbnMgZm9yIHRoZSBmZWF0dXJlcyBiZWxvdyBhcmUgYXZhaWxhYmxlIG9ubHkgaW4gRW5nbGlzaC4nXG4gICAgICAgIHwgdHJhbnNsYXRlXG4gICAgfX1cbiAgPC9wPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtMFwiPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZpdC1oXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC1sZy0zIHAtbC0wIHAtci0wIHN0aWNreS10b3AgbS10LTAgaW5uZXItc2Nyb2xsIGJnLWxldmVsLTFcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJuYXYtdGFicyBuYXYtdGFicy12ZXJ0aWNhbCBuYXYtdGFicy12ZXJ0aWNhbC0td2lkZSBwLXQtMFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJmZWF0dXJlID09PSBzZWxlY3RlZEZlYXR1cmVcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZpdC13IGEtaS1jZW50ZXJcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBmZWF0dXJlIG9mIGZlYXR1cmVzJCB8IGFzeW5jXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmZWF0dXJlLmtleSA/IChmZWF0dXJlS2V5RXhpc3RzKGZlYXR1cmUua2V5KSB8IGFzeW5jKSA6IHRydWVcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTQgdGV4dC10cnVuY2F0ZSBmbGV4LWdyb3dcIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7IGZlYXR1cmUubGFiZWwgfX1cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2JnLWNvbXBvbmVudCc6IGZlYXR1cmUgPT09IHNlbGVjdGVkRmVhdHVyZSxcbiAgICAgICAgICAgICAgICAnYmctbGV2ZWwtMSc6IGZlYXR1cmUgIT09IHNlbGVjdGVkRmVhdHVyZVxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkRmVhdHVyZShmZWF0dXJlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtLWwtMFwiXG4gICAgICAgICAgICAgICAgW2M4eUljb25dPVwiJ3NjaWVuY2UnXCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAge3sgZmVhdHVyZS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiYS1zLXN0cmV0Y2ggZC1mbGV4IGEtaS1jZW50ZXIgc2VwYXJhdG9yLWJvdHRvbSBwLXItMTZcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2JnLWNvbXBvbmVudCc6IGZlYXR1cmUgPT09IHNlbGVjdGVkRmVhdHVyZSxcbiAgICAgICAgICAgICAgICAnYmctbGV2ZWwtMSc6IGZlYXR1cmUgIT09IHNlbGVjdGVkRmVhdHVyZVxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZSBtLWwtYXV0b1wiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRW5hYmxlIG9yIGRpc2FibGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmZWF0dXJlLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJmZWF0dXJlLmtleSB8IGZlYXR1cmVTdGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblRvZ2dsZShmZWF0dXJlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2xpZGVyIHJvdW5kXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNvbC1tZC04IGNvbC1sZy05IHAtMjQgaW5uZXItc2Nyb2xsXCJcbiAgICAgICpuZ0lmPVwic2VsZWN0ZWRGZWF0dXJlXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cInRhZyB0YWctLXByaW1hcnkgaDRcIj5cbiAgICAgICAge3sgJ0ZlYXR1cmUgcHJldmlldycgfCB0cmFuc2xhdGUgfX0g4oCUIHt7IHNlbGVjdGVkRmVhdHVyZS5sYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPGRpdiAqbmdJZj1cImlzQ29tcG9uZW50KGRlc2NyaXB0aW9uJC52YWx1ZSk7IGVsc2Ugc3RyaW5nRGVzY3JpcHRpb25cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJkZXNjcmlwdGlvbiQudmFsdWVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgY2FyZC1mb290ZXIgcC0yNCBzZXBhcmF0b3JcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICB0aXRsZT1cInt7ICdDbG9zZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgPlxuICAgIHt7ICdDbG9zZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzdHJpbmdEZXNjcmlwdGlvbj5cbiAgPHAgW2lubmVySFRNTF09XCJkZXNjcmlwdGlvbiQudmFsdWVcIj48L3A+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,2 @@
1
+ export const SHOW_BETA_PREVIEW = 'showBetaPreview';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV0YS1wcmV2aWV3Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9iZXRhLWZlYXR1cmUvYmV0YS1wcmV2aWV3Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgU0hPV19CRVRBX1BSRVZJRVcgPSAnc2hvd0JldGFQcmV2aWV3JztcblxuZXhwb3J0IHR5cGUgQmV0YUZlYXR1cmUgPSBCZXRhRmVhdHVyZUN1c3RvbSB8IEJldGFGZWF0dXJlRGVmYXVsdDtcbmV4cG9ydCBpbnRlcmZhY2UgQmV0YUZlYXR1cmVDdXN0b20gZXh0ZW5kcyBCYXNlQmV0YUZlYXR1cmUge1xuICBrZXk/OiBuZXZlcjtcbiAgc2NvcGU/OiBuZXZlcjtcbiAgb25Ub2dnbGU6IChzdGF0ZTogYW55KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBhY3RpdmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJldGFGZWF0dXJlRGVmYXVsdCBleHRlbmRzIEJhc2VCZXRhRmVhdHVyZSB7XG4gIGtleTogc3RyaW5nO1xuICBzY29wZT86ICd1c2VyJyB8ICd0ZW5hbnQnIHwgJ3RlbXAnIHwgJ3BsYXRmb3JtJztcbiAgb25Ub2dnbGU/OiBuZXZlcjtcbiAgYWN0aXZlJD86IG5ldmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VCZXRhRmVhdHVyZSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiAoKSA9PiBQcm9taXNlPHN0cmluZyB8IFR5cGU8YW55Pj47XG4gIHNldHRpbmdzPzoge1xuICAgIHJlbG9hZD86IGJvb2xlYW47XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,114 @@
1
+ import { inject, Injectable, InjectionToken, Injector } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest, firstValueFrom, of } from 'rxjs';
3
+ import { distinctUntilChanged, map, shareReplay, switchMap } from 'rxjs/operators';
4
+ import { hookGeneric, getInjectedHooks, ExtensionPointForPlugins, fromTriggerOnce, stateToFactory, sortByPriority } from '../common/extension-hooks';
5
+ import { PluginsResolveService } from '../plugins/plugins-resolve.service';
6
+ import { FeatureService } from '@c8y/client';
7
+ import { FeatureCacheService } from './feature-cache.service';
8
+ import { OptionsService } from '../common/options.service';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../plugins/plugins-resolve.service";
11
+ export const HOOK_PREVIEW = new InjectionToken('HOOK_PREVIEW');
12
+ export function hookPreview(preview, options) {
13
+ return hookGeneric(preview, HOOK_PREVIEW, options);
14
+ }
15
+ export class PreviewService extends ExtensionPointForPlugins {
16
+ constructor(rootInjector, pluginService) {
17
+ super(rootInjector, pluginService);
18
+ this.items$ = this.setupItemsObservable();
19
+ this.reload$ = new BehaviorSubject(false);
20
+ this.LOCAL_STORAGE_KEY = 'c8y_beta_features_seen';
21
+ this.seenFeatures$ = new BehaviorSubject(this.getSeenFeatures());
22
+ this.hasUnseenFeatures$ = combineLatest([this.items$, this.seenFeatures$]).pipe(map(([features, seen]) => features.some(feature => !seen.includes(feature.label))), distinctUntilChanged());
23
+ this.featureService = inject(FeatureService);
24
+ this.featureCacheService = inject(FeatureCacheService);
25
+ this.optionsService = inject(OptionsService);
26
+ this.toggledFeaturesWithReload = new Set(); // track features with settings.reload = true
27
+ }
28
+ get state() {
29
+ return this.state$.value;
30
+ }
31
+ /**
32
+ * Get the state of a specific feature.
33
+ * @param key The unique key for the feature.
34
+ * @returns Observable<boolean> representing the state of the feature.
35
+ */
36
+ getState$(key) {
37
+ return this.items$.pipe(switchMap(features => this.optionsService.get$('enableAllBetaFeatures').pipe(switchMap(enableAllBetaFeatures => {
38
+ if (enableAllBetaFeatures) {
39
+ return of(true);
40
+ }
41
+ const feature = features.find(f => f.key === key);
42
+ if (!feature) {
43
+ throw new Error(`Feature with key "${key}" does not exist.`);
44
+ }
45
+ if (feature.active$) {
46
+ return feature.active$;
47
+ }
48
+ return this.featureCacheService.getFeatureState(key).pipe(distinctUntilChanged());
49
+ }))), distinctUntilChanged());
50
+ }
51
+ /**
52
+ * Toggle the state of a specific feature.
53
+ * @param key The unique key or label for the feature. Label is used to find the custom features.
54
+ * @returns Promise<void> after toggling the state.
55
+ */
56
+ async setFeatureActiveState(key, toggleValue) {
57
+ const features = await firstValueFrom(this.items$);
58
+ const feature = features.find(f => f.key === key) || features.find(f => f.label === key);
59
+ if (!feature) {
60
+ throw new Error(`Feature with key "${key}" does not exist.`);
61
+ }
62
+ if (feature.onToggle) {
63
+ const success = await feature.onToggle(toggleValue);
64
+ if (!success) {
65
+ throw new Error(`Failed to toggle feature with key "${key}".`);
66
+ }
67
+ return;
68
+ }
69
+ const featureToUpdate = { key: feature.key, active: toggleValue };
70
+ await this.featureService.updateFeature(featureToUpdate);
71
+ await this.featureCacheService.resetFeatureState();
72
+ if (feature.settings?.reload) {
73
+ if (this.toggledFeaturesWithReload.has(key)) {
74
+ this.toggledFeaturesWithReload.delete(key);
75
+ }
76
+ else {
77
+ this.toggledFeaturesWithReload.add(key);
78
+ }
79
+ }
80
+ this.reload$.next(this.toggledFeaturesWithReload.size > 0);
81
+ }
82
+ /**
83
+ * Marks all features as seen by the user and updates the local storage.
84
+ * This assumes all features are provided via the `items$` observable.
85
+ */
86
+ async markAllFeaturesAsSeen() {
87
+ const features = await firstValueFrom(this.items$);
88
+ const featureNames = features.map(feature => feature.label);
89
+ localStorage.setItem(this.LOCAL_STORAGE_KEY, JSON.stringify(featureNames));
90
+ this.seenFeatures$.next(featureNames);
91
+ }
92
+ /**
93
+ *
94
+ * @returns An array of feature names that have been seen by the user. This is retrieved from local storage.
95
+ */
96
+ getSeenFeatures() {
97
+ const seenFeatures = localStorage.getItem(this.LOCAL_STORAGE_KEY);
98
+ return seenFeatures ? JSON.parse(seenFeatures) : [];
99
+ }
100
+ setupItemsObservable() {
101
+ return fromTriggerOnce(undefined, this.refresh$, [
102
+ getInjectedHooks(HOOK_PREVIEW, this.injectors),
103
+ () => this.factories,
104
+ stateToFactory(this.state$)
105
+ ]).pipe(distinctUntilChanged(), map(features => sortByPriority(features)), shareReplay(1));
106
+ }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PreviewService, deps: [{ token: i0.Injector }, { token: i1.PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); }
108
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PreviewService, providedIn: 'root' }); }
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PreviewService, decorators: [{
111
+ type: Injectable,
112
+ args: [{ providedIn: 'root' }]
113
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.PluginsResolveService }] });
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV0YS1wcmV2aWV3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2JldGEtZmVhdHVyZS9iZXRhLXByZXZpZXcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxFQUdMLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZixjQUFjLEVBQ2QsY0FBYyxFQUNmLE1BQU0sMkJBQTJCLENBQUM7QUFFbkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUUzRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQWdCLGNBQWMsQ0FBQyxDQUFDO0FBRTlFLE1BQU0sVUFBVSxXQUFXLENBQ3pCLE9BQXFDLEVBQ3JDLE9BQXFDO0lBRXJDLE9BQU8sV0FBVyxDQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUdELE1BQU0sT0FBTyxjQUFlLFNBQVEsd0JBQXFDO0lBZXZFLFlBQVksWUFBc0IsRUFBRSxhQUFvQztRQUN0RSxLQUFLLENBQUMsWUFBWSxF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RUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU1RCxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGVBQWU7UUFDckIsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNsRSxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFUyxvQkFBb0I7UUFDNUIsT0FBTyxlQUFlLENBQWMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDNUQsZ0JBQWdCLENBQWMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDM0QsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFDcEIsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDNUIsQ0FBQyxDQUFDLElBQUksQ0FDTCxvQkFBb0IsRUFBRSxFQUN0QixHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDekMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFDSixDQUFDOytHQXRIVSxjQUFjO21IQUFkLGNBQWMsY0FERCxNQUFNOzs0RkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBHZW5lcmljSG9va09wdGlvbnMsXG4gIEdlbmVyaWNIb29rVHlwZSxcbiAgaG9va0dlbmVyaWMsXG4gIGdldEluamVjdGVkSG9va3MsXG4gIEV4dGVuc2lvblBvaW50Rm9yUGx1Z2lucyxcbiAgZnJvbVRyaWdnZXJPbmNlLFxuICBzdGF0ZVRvRmFjdG9yeSxcbiAgc29ydEJ5UHJpb3JpdHlcbn0gZnJvbSAnLi4vY29tbW9uL2V4dGVuc2lvbi1ob29rcyc7XG5pbXBvcnQgeyBCZXRhRmVhdHVyZSB9IGZyb20gJy4vYmV0YS1wcmV2aWV3Lm1vZGVsJztcbmltcG9ydCB7IFBsdWdpbnNSZXNvbHZlU2VydmljZSB9IGZyb20gJy4uL3BsdWdpbnMvcGx1Z2lucy1yZXNvbHZlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmVhdHVyZVNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBGZWF0dXJlQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IEhPT0tfUFJFVklFVyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxCZXRhRmVhdHVyZVtdPignSE9PS19QUkVWSUVXJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBob29rUHJldmlldyhcbiAgcHJldmlldzogR2VuZXJpY0hvb2tUeXBlPEJldGFGZWF0dXJlPixcbiAgb3B0aW9ucz86IFBhcnRpYWw8R2VuZXJpY0hvb2tPcHRpb25zPlxuKSB7XG4gIHJldHVybiBob29rR2VuZXJpYzxCZXRhRmVhdHVyZT4ocHJldmlldywgSE9PS19QUkVWSUVXLCBvcHRpb25zKTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQcmV2aWV3U2VydmljZSBleHRlbmRzIEV4dGVuc2lvblBvaW50Rm9yUGx1Z2luczxCZXRhRmVhdHVyZT4ge1xuICBpdGVtcyQ6IE9ic2VydmFibGU8QmV0YUZlYXR1cmVbXT4gPSB0aGlzLnNldHVwSXRlbXNPYnNlcnZhYmxlKCk7XG4gIHJlbG9hZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IExPQ0FMX1NUT1JBR0VfS0VZID0gJ2M4eV9iZXRhX2ZlYXR1cmVzX3NlZW4nO1xuICBwcml2YXRlIHNlZW5GZWF0dXJlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPih0aGlzLmdldFNlZW5GZWF0dXJlcygpKTtcbiAgaGFzVW5zZWVuRmVhdHVyZXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5pdGVtcyQsIHRoaXMuc2VlbkZlYXR1cmVzJF0pLnBpcGUoXG4gICAgbWFwKChbZmVhdHVyZXMsIHNlZW5dKSA9PiBmZWF0dXJlcy5zb21lKGZlYXR1cmUgPT4gIXNlZW4uaW5jbHVkZXMoZmVhdHVyZS5sYWJlbCkpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmVhdHVyZVNlcnZpY2UgPSBpbmplY3QoRmVhdHVyZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVDYWNoZVNlcnZpY2UgPSBpbmplY3QoRmVhdHVyZUNhY2hlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uc1NlcnZpY2UgPSBpbmplY3QoT3B0aW9uc1NlcnZpY2UpO1xuXG4gIHByaXZhdGUgdG9nZ2xlZEZlYXR1cmVzV2l0aFJlbG9hZDogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7IC8vIHRyYWNrIGZlYXR1cmVzIHdpdGggc2V0dGluZ3MucmVsb2FkID0gdHJ1ZVxuXG4gIGNvbnN0cnVjdG9yKHJvb3RJbmplY3RvcjogSW5qZWN0b3IsIHBsdWdpblNlcnZpY2U6IFBsdWdpbnNSZXNvbHZlU2VydmljZSkge1xuICAgIHN1cGVyKHJvb3RJbmplY3RvciwgcGx1Z2luU2VydmljZSk7XG4gIH1cblxuICBnZXQgc3RhdGUoKTogU2V0PEJldGFGZWF0dXJlPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUkLnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RhdGUgb2YgYSBzcGVjaWZpYyBmZWF0dXJlLlxuICAgKiBAcGFyYW0ga2V5IFRoZSB1bmlxdWUga2V5IGZvciB0aGUgZmVhdHVyZS5cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxib29sZWFuPiByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBmZWF0dXJlLlxuICAgKi9cbiAgZ2V0U3RhdGUkKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZmVhdHVyZXMgPT5cbiAgICAgICAgdGhpcy5vcHRpb25zU2VydmljZS5nZXQkKCdlbmFibGVBbGxCZXRhRmVhdHVyZXMnKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChlbmFibGVBbGxCZXRhRmVhdHVyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKGVuYWJsZUFsbEJldGFGZWF0dXJlcykge1xuICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmZWF0dXJlID0gZmVhdHVyZXMuZmluZChmID0+IGYua2V5ID09PSBrZXkpO1xuICAgICAgICAgICAgaWYgKCFmZWF0dXJlKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmVhdHVyZSB3aXRoIGtleSBcIiR7a2V5fVwiIGRvZXMgbm90IGV4aXN0LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZlYXR1cmUuYWN0aXZlJCkge1xuICAgICAgICAgICAgICByZXR1cm4gZmVhdHVyZS5hY3RpdmUkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmVhdHVyZUNhY2hlU2VydmljZS5nZXRGZWF0dXJlU3RhdGUoa2V5KS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIHN0YXRlIG9mIGEgc3BlY2lmaWMgZmVhdHVyZS5cbiAgICogQHBhcmFtIGtleSBUaGUgdW5pcXVlIGtleSBvciBsYWJlbCBmb3IgdGhlIGZlYXR1cmUuIExhYmVsIGlzIHVzZWQgdG8gZmluZCB0aGUgY3VzdG9tIGZlYXR1cmVzLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+IGFmdGVyIHRvZ2dsaW5nIHRoZSBzdGF0ZS5cbiAgICovXG4gIGFzeW5jIHNldEZlYXR1cmVBY3RpdmVTdGF0ZShrZXk6IHN0cmluZywgdG9nZ2xlVmFsdWU6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaXRlbXMkKTtcbiAgICBjb25zdCBmZWF0dXJlID0gZmVhdHVyZXMuZmluZChmID0+IGYua2V5ID09PSBrZXkpIHx8IGZlYXR1cmVzLmZpbmQoZiA9PiBmLmxhYmVsID09PSBrZXkpO1xuXG4gICAgaWYgKCFmZWF0dXJlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZlYXR1cmUgd2l0aCBrZXkgXCIke2tleX1cIiBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG5cbiAgICBpZiAoZmVhdHVyZS5vblRvZ2dsZSkge1xuICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGZlYXR1cmUub25Ub2dnbGUodG9nZ2xlVmFsdWUpO1xuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHRvZ2dsZSBmZWF0dXJlIHdpdGgga2V5IFwiJHtrZXl9XCIuYCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmVhdHVyZVRvVXBkYXRlID0geyBrZXk6IGZlYXR1cmUua2V5LCBhY3RpdmU6IHRvZ2dsZVZhbHVlIH07XG4gICAgYXdhaXQgdGhpcy5mZWF0dXJlU2VydmljZS51cGRhdGVGZWF0dXJlKGZlYXR1cmVUb1VwZGF0ZSk7XG4gICAgYXdhaXQgdGhpcy5mZWF0dXJlQ2FjaGVTZXJ2aWNlLnJlc2V0RmVhdHVyZVN0YXRlKCk7XG5cbiAgICBpZiAoZmVhdHVyZS5zZXR0aW5ncz8ucmVsb2FkKSB7XG4gICAgICBpZiAodGhpcy50b2dnbGVkRmVhdHVyZXNXaXRoUmVsb2FkLmhhcyhrZXkpKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlZEZlYXR1cmVzV2l0aFJlbG9hZC5kZWxldGUoa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9nZ2xlZEZlYXR1cmVzV2l0aFJlbG9hZC5hZGQoa2V5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnJlbG9hZCQubmV4dCh0aGlzLnRvZ2dsZWRGZWF0dXJlc1dpdGhSZWxvYWQuc2l6ZSA+IDApO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmtzIGFsbCBmZWF0dXJlcyBhcyBzZWVuIGJ5IHRoZSB1c2VyIGFuZCB1cGRhdGVzIHRoZSBsb2NhbCBzdG9yYWdlLlxuICAgKiBUaGlzIGFzc3VtZXMgYWxsIGZlYXR1cmVzIGFyZSBwcm92aWRlZCB2aWEgdGhlIGBpdGVtcyRgIG9ic2VydmFibGUuXG4gICAqL1xuICBhc3luYyBtYXJrQWxsRmVhdHVyZXNBc1NlZW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLml0ZW1zJCk7XG4gICAgY29uc3QgZmVhdHVyZU5hbWVzID0gZmVhdHVyZXMubWFwKGZlYXR1cmUgPT4gZmVhdHVyZS5sYWJlbCk7XG5cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkxPQ0FMX1NUT1JBR0VfS0VZLCBKU09OLnN0cmluZ2lmeShmZWF0dXJlTmFtZXMpKTtcbiAgICB0aGlzLnNlZW5GZWF0dXJlcyQubmV4dChmZWF0dXJlTmFtZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGZlYXR1cmUgbmFtZXMgdGhhdCBoYXZlIGJlZW4gc2VlbiBieSB0aGUgdXNlci4gVGhpcyBpcyByZXRyaWV2ZWQgZnJvbSBsb2NhbCBzdG9yYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTZWVuRmVhdHVyZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHNlZW5GZWF0dXJlcyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuTE9DQUxfU1RPUkFHRV9LRVkpO1xuICAgIHJldHVybiBzZWVuRmVhdHVyZXMgPyBKU09OLnBhcnNlKHNlZW5GZWF0dXJlcykgOiBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEl0ZW1zT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPEJldGFGZWF0dXJlW10+IHtcbiAgICByZXR1cm4gZnJvbVRyaWdnZXJPbmNlPEJldGFGZWF0dXJlPih1bmRlZmluZWQsIHRoaXMucmVmcmVzaCQsIFtcbiAgICAgIGdldEluamVjdGVkSG9va3M8QmV0YUZlYXR1cmU+KEhPT0tfUFJFVklFVywgdGhpcy5pbmplY3RvcnMpLFxuICAgICAgKCkgPT4gdGhpcy5mYWN0b3JpZXMsXG4gICAgICBzdGF0ZVRvRmFjdG9yeSh0aGlzLnN0YXRlJClcbiAgICBdKS5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIG1hcChmZWF0dXJlcyA9PiBzb3J0QnlQcmlvcml0eShmZWF0dXJlcykpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,48 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { FeatureService } from '@c8y/client';
3
+ import { BehaviorSubject, firstValueFrom } from 'rxjs';
4
+ import { map, shareReplay, switchMap } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@c8y/client";
7
+ export class FeatureCacheService {
8
+ constructor(featureService) {
9
+ this.featureService = featureService;
10
+ this.refreshTrigger = new BehaviorSubject(undefined);
11
+ this.features$ = this.refreshTrigger.pipe(switchMap(() => this.loadFeatures()), shareReplay(1));
12
+ }
13
+ /**
14
+ * Needed for the angularJS implmentation to show/hide some old features.
15
+ * Returns a promise
16
+ */
17
+ getFeatureStatePromise(key) {
18
+ return firstValueFrom(this.getFeatureState(key));
19
+ }
20
+ /**
21
+ *
22
+ * @param key - The feature key to check
23
+ * @returns true if the feature key exists in the list of features.
24
+ */
25
+ featureExists(key) {
26
+ return this.features$.pipe(map(features => features.some(feature => feature.key === key)));
27
+ }
28
+ getFeatureState(key) {
29
+ return this.features$.pipe(map(features => {
30
+ const feature = features.find(f => f.key === key);
31
+ return feature?.active || false;
32
+ }));
33
+ }
34
+ resetFeatureState() {
35
+ this.refreshTrigger.next();
36
+ }
37
+ async loadFeatures() {
38
+ const response = await this.featureService.list({ pageSize: 1000 });
39
+ return response.data || [];
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureCacheService, deps: [{ token: i1.FeatureService }], target: i0.ɵɵFactoryTarget.Injectable }); }
42
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureCacheService, providedIn: 'root' }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureCacheService, decorators: [{
45
+ type: Injectable,
46
+ args: [{ providedIn: 'root' }]
47
+ }], ctorParameters: () => [{ type: i1.FeatureService }] });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1jYWNoZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9iZXRhLWZlYXR1cmUvZmVhdHVyZS1jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBa0IsTUFBTSxhQUFhLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUU3RCxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCLFlBQW9CLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUwxQyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFPLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELGNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDMUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUNwQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUNtRCxDQUFDO0lBRXREOzs7T0FHRztJQUNILHNCQUFzQixDQUFDLEdBQVc7UUFDaEMsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLEdBQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFXO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ3hCLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNiLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2xELE9BQU8sT0FBTyxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxLQUFLLENBQUMsWUFBWTtRQUN4QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDcEUsT0FBTyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDOytHQXpDVSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUROLE1BQU07OzRGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmVhdHVyZVNlcnZpY2UsIElGZWF0dXJlVG9nZ2xlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlQ2FjaGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWZyZXNoVHJpZ2dlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBmZWF0dXJlcyQgPSB0aGlzLnJlZnJlc2hUcmlnZ2VyLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZEZlYXR1cmVzKCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmVhdHVyZVNlcnZpY2U6IEZlYXR1cmVTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBOZWVkZWQgZm9yIHRoZSBhbmd1bGFySlMgaW1wbG1lbnRhdGlvbiB0byBzaG93L2hpZGUgc29tZSBvbGQgZmVhdHVyZXMuXG4gICAqIFJldHVybnMgYSBwcm9taXNlXG4gICAqL1xuICBnZXRGZWF0dXJlU3RhdGVQcm9taXNlKGtleTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuZ2V0RmVhdHVyZVN0YXRlKGtleSkpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUgZmVhdHVyZSBrZXkgdG8gY2hlY2tcbiAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZmVhdHVyZSBrZXkgZXhpc3RzIGluIHRoZSBsaXN0IG9mIGZlYXR1cmVzLlxuICAgKi9cbiAgZmVhdHVyZUV4aXN0cyhrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmZlYXR1cmVzJC5waXBlKG1hcChmZWF0dXJlcyA9PiBmZWF0dXJlcy5zb21lKGZlYXR1cmUgPT4gZmVhdHVyZS5rZXkgPT09IGtleSkpKTtcbiAgfVxuXG4gIGdldEZlYXR1cmVTdGF0ZShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmZlYXR1cmVzJC5waXBlKFxuICAgICAgbWFwKGZlYXR1cmVzID0+IHtcbiAgICAgICAgY29uc3QgZmVhdHVyZSA9IGZlYXR1cmVzLmZpbmQoZiA9PiBmLmtleSA9PT0ga2V5KTtcbiAgICAgICAgcmV0dXJuIGZlYXR1cmU/LmFjdGl2ZSB8fCBmYWxzZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlc2V0RmVhdHVyZVN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaFRyaWdnZXIubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkRmVhdHVyZXMoKTogUHJvbWlzZTxJRmVhdHVyZVRvZ2dsZVtdPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZlYXR1cmVTZXJ2aWNlLmxpc3QoeyBwYWdlU2l6ZTogMTAwMCB9KTtcbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YSB8fCBbXTtcbiAgfVxufVxuIl19
@@ -0,0 +1,22 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { PreviewService } from './beta-preview.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./beta-preview.service";
5
+ export class FeatureStatePipe {
6
+ constructor(previewService) {
7
+ this.previewService = previewService;
8
+ }
9
+ transform(featureKey) {
10
+ return this.previewService.getState$(featureKey);
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureStatePipe, deps: [{ token: i1.PreviewService }], target: i0.ɵɵFactoryTarget.Pipe }); }
13
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: FeatureStatePipe, isStandalone: true, name: "featureState" }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureStatePipe, decorators: [{
16
+ type: Pipe,
17
+ args: [{
18
+ name: 'featureState',
19
+ standalone: true
20
+ }]
21
+ }], ctorParameters: () => [{ type: i1.PreviewService }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1zdGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9iZXRhLWZlYXR1cmUvZmVhdHVyZS1zdGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBTXhELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUcsQ0FBQztJQUV0RCxTQUFTLENBQUMsVUFBa0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxDQUFDOytHQUxVLGdCQUFnQjs2R0FBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUo1QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxjQUFjO29CQUNwQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcmV2aWV3U2VydmljZSB9IGZyb20gJy4vYmV0YS1wcmV2aWV3LnNlcnZpY2UnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdmZWF0dXJlU3RhdGUnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVTdGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcmV2aWV3U2VydmljZTogUHJldmlld1NlcnZpY2UpIHt9XG5cbiAgdHJhbnNmb3JtKGZlYXR1cmVLZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnByZXZpZXdTZXJ2aWNlLmdldFN0YXRlJChmZWF0dXJlS2V5KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ export * from './beta-preview.service';
2
+ export * from './beta-preview.model';
3
+ export * from './beta-preview-button.component';
4
+ export * from './feature-cache.service';
5
+ export * from './beta-feature.providers';
6
+ export * from './beta-feature-show-notification.service';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2JldGEtZmVhdHVyZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmV0YS1wcmV2aWV3LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9iZXRhLXByZXZpZXcubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9iZXRhLXByZXZpZXctYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ZlYXR1cmUtY2FjaGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2JldGEtZmVhdHVyZS5wcm92aWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9iZXRhLWZlYXR1cmUtc2hvdy1ub3RpZmljYXRpb24uc2VydmljZSc7XG4iXX0=
@@ -43,6 +43,9 @@ export class BottomDrawerRef {
43
43
  this.drawerComponentRef.instance.drawerHost.clear();
44
44
  const contentComponentRef = this.drawerComponentRef.instance.drawerHost.createComponent(component);
45
45
  assign(contentComponentRef.instance, this.options?.initialState);
46
+ if (this.options?.disableClickOutside) {
47
+ this.drawerComponentRef.instance.disableClickOutside = this.options.disableClickOutside;
48
+ }
46
49
  this.drawerComponentRef.changeDetectorRef.detectChanges();
47
50
  this.handleNavigation();
48
51
  return contentComponentRef.instance;
@@ -71,4 +74,4 @@ export class BottomDrawerRef {
71
74
  }
72
75
  }
73
76
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90dG9tLWRyYXdlci1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2JvdHRvbS1kcmF3ZXIvYm90dG9tLWRyYXdlci1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGVBQWUsRUFFZixRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHbEUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBQ3pDLE1BQU0sT0FBTyxlQUFlO0lBQzFCOztPQUVHO0lBQ0gsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFZRCxZQUNFLFNBQWtCLEVBQ1YsY0FBOEIsRUFDOUIsTUFBYyxFQUNkLE9BQTBCO1FBRjFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFQNUIsbUJBQWMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QyxlQUFVLEdBQXFCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFRNUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVE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QVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXZELDhHQUE4RztnQkFDOUcsT0FBTyx1QkFBdUIsS0FBSyxzQkFBc0IsQ0FBQztZQUM1RCxDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcG9uZW50UmVmLFxuICBjcmVhdGVDb21wb25lbnQsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgSW5qZWN0b3IsXG4gIFR5cGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBhc3NpZ24gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzaGFyZVJlcGxheSwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQm90dG9tRHJhd2VyQ29tcG9uZW50IH0gZnJvbSAnLi9ib3R0b20tZHJhd2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEcmF3ZXJPcHRpb25zIH0gZnJvbSAnLi9ib3R0b20tZHJhd2VyLm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IERSQVdFUl9BTklNQVRJT05fVElNRSA9IDQwMDtcbmV4cG9ydCBjbGFzcyBCb3R0b21EcmF3ZXJSZWY8Qz4ge1xuICAvKipcbiAgICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgYm90dG9tIGRyYXdlciBiZWhpbmQgdGhlIHJlZmVyZW5jZSBpcyBjbG9zZWQuXG4gICAqL1xuICBnZXQgb25DbG9zZWQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNsb3NlZE9icyQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIG9mIHRoZSBjb21wb25lbnQgY3JlYXRlZC5cbiAgICovXG4gIGluc3RhbmNlOiBDO1xuXG4gIHByaXZhdGUgZHJhd2VyQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8Qm90dG9tRHJhd2VyQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGNsb3NlZFN1YmplY3QkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBjbG9zZWRPYnMkOiBPYnNlcnZhYmxlPHZvaWQ+ID0gdGhpcy5jbG9zZWRTdWJqZWN0JC5hc09ic2VydmFibGUoKS5waXBlKHNoYXJlUmVwbGF5KCkpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvbXBvbmVudDogVHlwZTxDPixcbiAgICBwcml2YXRlIGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgb3B0aW9ucz86IERyYXdlck9wdGlvbnM8Qz5cbiAgKSB7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuYXR0YWNoRHJhd2VyVG9WaWV3KGNvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBib3R0b20gZHJhd2VyIGJlaGluZCB0aGUgcmVmZXJlbmNlLlxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5kZXRhY2hEcmF3ZXJGcm9tVmlldygpO1xuICAgIHRoaXMuY2xvc2VkU3ViamVjdCQubmV4dCgpO1xuICAgIHRoaXMuY2xvc2VkU3ViamVjdCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoRHJhd2VyVG9WaWV3KGNvbXBvbmVudDogVHlwZTxDPikge1xuICAgIGNvbnN0IGVsZW1lbnRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEJvdHRvbURyYXdlclJlZiwgdXNlVmFsdWU6IHRoaXMgfV1cbiAgICB9KTtcblxuICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50KEJvdHRvbURyYXdlckNvbXBvbmVudCwge1xuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5hcHBsaWNhdGlvblJlZi5pbmplY3RvcixcbiAgICAgIGVsZW1lbnRJbmplY3RvclxuICAgIH0pO1xuXG4gICAgdGhpcy5hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmhvc3RWaWV3KTtcblxuICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5vcHRpb25zPy5ob3N0ID8/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLWNvbnRlbnQnKTtcbiAgICBob3N0RWxlbWVudC5hcHBlbmQoKDxFbWJlZGRlZFZpZXdSZWY8Qz4+dGhpcy5kcmF3ZXJDb21wb25lbnRSZWYuaG9zdFZpZXcpLnJvb3ROb2Rlc1swXSk7XG5cbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5kcmF3ZXJIb3N0LmNsZWFyKCk7XG4gICAgY29uc3QgY29udGVudENvbXBvbmVudFJlZiA9XG4gICAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5kcmF3ZXJIb3N0LmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQpO1xuICAgIGFzc2lnbihjb250ZW50Q29tcG9uZW50UmVmLmluc3RhbmNlLCB0aGlzLm9wdGlvbnM/LmluaXRpYWxTdGF0ZSk7XG5cbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmhhbmRsZU5hdmlnYXRpb24oKTtcblxuICAgIHJldHVybiBjb250ZW50Q29tcG9uZW50UmVmLmluc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRhY2hEcmF3ZXJGcm9tVmlldygpOiB2b2lkIHtcbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5oaWRlKCk7XG4gICAgdGhpcy5kZXRhY2hEcmF3ZXJXaXRoQW5pbWF0aW9uRGVsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0YWNoRHJhd2VyV2l0aEFuaW1hdGlvbkRlbGF5KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblJlZi5kZXRhY2hWaWV3KHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmID0gbnVsbDtcbiAgICB9LCBEUkFXRVJfQU5JTUFUSU9OX1RJTUUpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOYXZpZ2F0aW9uKCkge1xuICAgIGlmICghdGhpcy5vcHRpb25zIHx8ICEodGhpcy5vcHRpb25zLmNsb3NlT25OYXZpZ2F0aW9uID09PSBmYWxzZSkpIHtcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpLFxuICAgICAgICAgIGZpbHRlcigoeyB1cmw6IHRhcmdldFVybCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VXJsV2l0aG91dFBhcmFtcyA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0VXJsV2l0aG91dFBhcmFtcyA9IHRhcmdldFVybC5zcGxpdCgnPycpWzBdO1xuXG4gICAgICAgICAgICAvLyB0aGlzIGNoZWNrIGlzIG5vdCB0byBjbG9zZSB0aGUgZHJhd2VyIHdoZW4gdGhlIHF1ZXJ5IHBhcmFtcyBjaGFuZ2UsIGUuZy4gd2hlbiBmaWx0ZXIgaXMgYXBwbGllZCB0byB0aGUgbGlzdFxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRVcmxXaXRob3V0UGFyYW1zICE9PSB0YXJnZXRVcmxXaXRob3V0UGFyYW1zO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMub25DbG9zZWQkKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZSgpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90dG9tLWRyYXdlci1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2JvdHRvbS1kcmF3ZXIvYm90dG9tLWRyYXdlci1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGVBQWUsRUFFZixRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHbEUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBQ3pDLE1BQU0sT0FBTyxlQUFlO0lBQzFCOztPQUVHO0lBQ0gsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFZRCxZQUNFLFNBQWtCLEVBQ1YsY0FBOEIsRUFDOUIsTUFBYyxFQUNkLE9BQTBCO1FBRjFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFQNUIsbUJBQWMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QyxlQUFVLEdBQXFCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFRNUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVE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U0FBUyxFQUFFLEVBQUUsRUFBRTtnQkFDNUIsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlELE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFdkQsOEdBQThHO2dCQUM5RyxPQUFPLHVCQUF1QixLQUFLLHNCQUFzQixDQUFDO1lBQzVELENBQUMsQ0FBQyxFQUNGLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIGNyZWF0ZUNvbXBvbmVudCxcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbmplY3RvcixcbiAgVHlwZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHNoYXJlUmVwbGF5LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCb3R0b21EcmF3ZXJDb21wb25lbnQgfSBmcm9tICcuL2JvdHRvbS1kcmF3ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERyYXdlck9wdGlvbnMgfSBmcm9tICcuL2JvdHRvbS1kcmF3ZXIubW9kZWwnO1xuXG5leHBvcnQgY29uc3QgRFJBV0VSX0FOSU1BVElPTl9USU1FID0gNDAwO1xuZXhwb3J0IGNsYXNzIEJvdHRvbURyYXdlclJlZjxDPiB7XG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIHRoZSBib3R0b20gZHJhd2VyIGJlaGluZCB0aGUgcmVmZXJlbmNlIGlzIGNsb3NlZC5cbiAgICovXG4gIGdldCBvbkNsb3NlZCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2VkT2JzJDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudCBjcmVhdGVkLlxuICAgKi9cbiAgaW5zdGFuY2U6IEM7XG5cbiAgcHJpdmF0ZSBkcmF3ZXJDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxCb3R0b21EcmF3ZXJDb21wb25lbnQ+O1xuXG4gIHByaXZhdGUgY2xvc2VkU3ViamVjdCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIGNsb3NlZE9icyQ6IE9ic2VydmFibGU8dm9pZD4gPSB0aGlzLmNsb3NlZFN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmVSZXBsYXkoKSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29tcG9uZW50OiBUeXBlPEM+LFxuICAgIHByaXZhdGUgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBvcHRpb25zPzogRHJhd2VyT3B0aW9uczxDPlxuICApIHtcbiAgICB0aGlzLmluc3RhbmNlID0gdGhpcy5hdHRhY2hEcmF3ZXJUb1ZpZXcoY29tcG9uZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGJvdHRvbSBkcmF3ZXIgYmVoaW5kIHRoZSByZWZlcmVuY2UuXG4gICAqL1xuICBjbG9zZSgpIHtcbiAgICB0aGlzLmRldGFjaERyYXdlckZyb21WaWV3KCk7XG4gICAgdGhpcy5jbG9zZWRTdWJqZWN0JC5uZXh0KCk7XG4gICAgdGhpcy5jbG9zZWRTdWJqZWN0JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hEcmF3ZXJUb1ZpZXcoY29tcG9uZW50OiBUeXBlPEM+KSB7XG4gICAgY29uc3QgZWxlbWVudEluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQm90dG9tRHJhd2VyUmVmLCB1c2VWYWx1ZTogdGhpcyB9XVxuICAgIH0pO1xuXG4gICAgdGhpcy5kcmF3ZXJDb21wb25lbnRSZWYgPSBjcmVhdGVDb21wb25lbnQoQm90dG9tRHJhd2VyQ29tcG9uZW50LCB7XG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmFwcGxpY2F0aW9uUmVmLmluamVjdG9yLFxuICAgICAgZWxlbWVudEluamVjdG9yXG4gICAgfSk7XG5cbiAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLmF0dGFjaFZpZXcodGhpcy5kcmF3ZXJDb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSB0aGlzLm9wdGlvbnM/Lmhvc3QgPz8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4tY29udGVudCcpO1xuICAgIGhvc3RFbGVtZW50LmFwcGVuZCgoPEVtYmVkZGVkVmlld1JlZjxDPj50aGlzLmRyYXdlckNvbXBvbmVudFJlZi5ob3N0Vmlldykucm9vdE5vZGVzWzBdKTtcblxuICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmluc3RhbmNlLmRyYXdlckhvc3QuY2xlYXIoKTtcbiAgICBjb25zdCBjb250ZW50Q29tcG9uZW50UmVmID1cbiAgICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmluc3RhbmNlLmRyYXdlckhvc3QuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgYXNzaWduKGNvbnRlbnRDb21wb25lbnRSZWYuaW5zdGFuY2UsIHRoaXMub3B0aW9ucz8uaW5pdGlhbFN0YXRlKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnM/LmRpc2FibGVDbGlja091dHNpZGUpIHtcbiAgICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmluc3RhbmNlLmRpc2FibGVDbGlja091dHNpZGUgPSB0aGlzLm9wdGlvbnMuZGlzYWJsZUNsaWNrT3V0c2lkZTtcbiAgICB9XG5cbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmhhbmRsZU5hdmlnYXRpb24oKTtcblxuICAgIHJldHVybiBjb250ZW50Q29tcG9uZW50UmVmLmluc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRhY2hEcmF3ZXJGcm9tVmlldygpOiB2b2lkIHtcbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5oaWRlKCk7XG4gICAgdGhpcy5kZXRhY2hEcmF3ZXJXaXRoQW5pbWF0aW9uRGVsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0YWNoRHJhd2VyV2l0aEFuaW1hdGlvbkRlbGF5KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblJlZi5kZXRhY2hWaWV3KHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmID0gbnVsbDtcbiAgICB9LCBEUkFXRVJfQU5JTUFUSU9OX1RJTUUpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOYXZpZ2F0aW9uKCkge1xuICAgIGlmICghdGhpcy5vcHRpb25zIHx8ICEodGhpcy5vcHRpb25zLmNsb3NlT25OYXZpZ2F0aW9uID09PSBmYWxzZSkpIHtcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpLFxuICAgICAgICAgIGZpbHRlcigoeyB1cmw6IHRhcmdldFVybCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VXJsV2l0aG91dFBhcmFtcyA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0VXJsV2l0aG91dFBhcmFtcyA9IHRhcmdldFVybC5zcGxpdCgnPycpWzBdO1xuXG4gICAgICAgICAgICAvLyB0aGlzIGNoZWNrIGlzIG5vdCB0byBjbG9zZSB0aGUgZHJhd2VyIHdoZW4gdGhlIHF1ZXJ5IHBhcmFtcyBjaGFuZ2UsIGUuZy4gd2hlbiBmaWx0ZXIgaXMgYXBwbGllZCB0byB0aGUgbGlzdFxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRVcmxXaXRob3V0UGFyYW1zICE9PSB0YXJnZXRVcmxXaXRob3V0UGFyYW1zO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMub25DbG9zZWQkKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZSgpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==