@c8y/ngx-components 1021.62.2 → 1021.62.8

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 (73) hide show
  1. package/core/data-grid/data-grid.component.d.ts +7 -1
  2. package/core/data-grid/data-grid.component.d.ts.map +1 -1
  3. package/core/login/totp-auth.component.d.ts +1 -5
  4. package/core/login/totp-auth.component.d.ts.map +1 -1
  5. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +9 -3
  6. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
  7. package/esm2022/branding/shared/lazy/branding/branding.component.mjs +2 -2
  8. package/esm2022/context-dashboard/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.mjs +1 -1
  9. package/esm2022/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.mjs +1 -1
  10. package/esm2022/core/data-grid/data-grid.component.mjs +35 -16
  11. package/esm2022/core/login/totp-auth.component.mjs +2 -7
  12. package/esm2022/device-grid/device-grid.component.mjs +1 -1
  13. package/esm2022/device-profile/device-profile-list.component.mjs +1 -1
  14. package/esm2022/device-provisioned-certificates/device-tab-provisioned-certificates.component.mjs +48 -8
  15. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +1 -1
  16. package/esm2022/files-repository/files-repository.component.mjs +1 -1
  17. package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.mjs +2 -2
  18. package/esm2022/repository/configuration/list/configuration-list.component.mjs +1 -1
  19. package/esm2022/repository/firmware/list/firmware-list.component.mjs +1 -1
  20. package/esm2022/repository/software/list/software-list.component.mjs +1 -1
  21. package/esm2022/search/search-grid.component.mjs +1 -1
  22. package/esm2022/services/services-device-tab/services-device-tab.component.mjs +1 -1
  23. package/esm2022/sub-assets/sub-assets-grid.component.mjs +1 -1
  24. package/esm2022/tenants/tenant-list/tenant-list.component.mjs +1 -1
  25. package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +2 -2
  26. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +1 -1
  27. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  28. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +2 -2
  29. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  30. package/fesm2022/c8y-ngx-components-device-grid.mjs +1 -1
  31. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  32. package/fesm2022/c8y-ngx-components-device-profile.mjs +1 -1
  33. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  34. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +48 -8
  35. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  36. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +1 -1
  37. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  38. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1 -1
  39. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  40. package/fesm2022/c8y-ngx-components-files-repository.mjs +1 -1
  41. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  42. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +1 -1
  43. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
  44. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +1 -1
  45. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  46. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +1 -1
  47. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  48. package/fesm2022/c8y-ngx-components-repository-software.mjs +1 -1
  49. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  50. package/fesm2022/c8y-ngx-components-search.mjs +1 -1
  51. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  52. package/fesm2022/c8y-ngx-components-services.mjs +1 -1
  53. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  54. package/fesm2022/c8y-ngx-components-sub-assets.mjs +1 -1
  55. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  56. package/fesm2022/c8y-ngx-components-tenants.mjs +1 -1
  57. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  58. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +1 -1
  59. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  60. package/fesm2022/c8y-ngx-components.mjs +35 -21
  61. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  62. package/locales/de.po +0 -3
  63. package/locales/es.po +2 -4
  64. package/locales/fr.po +0 -3
  65. package/locales/ja_JP.po +0 -3
  66. package/locales/ko.po +0 -3
  67. package/locales/locales.pot +0 -3
  68. package/locales/nl.po +0 -3
  69. package/locales/pl.po +0 -3
  70. package/locales/pt_BR.po +0 -3
  71. package/locales/zh_CN.po +0 -3
  72. package/locales/zh_TW.po +0 -3
  73. package/package.json +1 -1
@@ -23,13 +23,8 @@ export class TotpAuthComponent {
23
23
  this.hasError = false;
24
24
  this.isSetup = false;
25
25
  }
26
- /**
27
- * In case of a setup we need the user to be authorized
28
- * first.
29
- */
30
- async ngOnInit() {
26
+ ngOnInit() {
31
27
  if (this.view === this.LOGIN_VIEWS.TotpSetup) {
32
- await this.loginService.switchLoginMode(this.credentials);
33
28
  this.isSetup = true;
34
29
  }
35
30
  }
@@ -72,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
72
67
  }], onCancel: [{
73
68
  type: Output
74
69
  }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90cC1hdXRoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvbG9naW4vdG90cC1hdXRoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvbG9naW4vdG90cC1hdXRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFnQixXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBTTFDLE1BQU0sT0FBTyxpQkFBaUI7SUFTNUIsWUFDUyxZQUEwQixFQUN6QixXQUF3QixFQUN4QixLQUFtQjtRQUZwQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBVG5CLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO0lBTWIsQ0FBQztJQUVKOzs7T0FHRztJQUNILEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDN0MsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUk7UUFDdEIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEMsQ0FBQztZQUNELE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFELE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLGlEQUFpRCxFQUFFLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1REFBdUQsQ0FBQyxDQUFDLENBQUM7WUFDdkYsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQzsrR0FoRFUsaUJBQWlCO21HQUFqQixpQkFBaUIsOElDWDlCLDhaQWtCQTs7NEZEUGEsaUJBQWlCO2tCQUo3QixTQUFTOytCQUNFLGVBQWU7c0lBSWhCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQ3JlZGVudGlhbHMsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5WaWV3cyB9IGZyb20gJy4vbG9naW4ubW9kZWwnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS10b3RwLWF1dGgnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG90cC1hdXRoLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUb3RwQXV0aENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbHM7XG4gIEBJbnB1dCgpIHZpZXc6IExvZ2luVmlld3M7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgTE9HSU5fVklFV1MgPSBMb2dpblZpZXdzO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIGhhc0Vycm9yID0gZmFsc2U7XG4gIGlzU2V0dXAgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogSW4gY2FzZSBvZiBhIHNldHVwIHdlIG5lZWQgdGhlIHVzZXIgdG8gYmUgYXV0aG9yaXplZFxuICAgKiBmaXJzdC5cbiAgICovXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnZpZXcgPT09IHRoaXMuTE9HSU5fVklFV1MuVG90cFNldHVwKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvZ2luU2VydmljZS5zd2l0Y2hMb2dpbk1vZGUodGhpcy5jcmVkZW50aWFscyk7XG4gICAgICB0aGlzLmlzU2V0dXAgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uVG90cFN1Y2Nlc3MoY29kZSkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgdGhpcy5jcmVkZW50aWFscy50ZmEgPSBjb2RlO1xuICAgICAgaWYgKHRoaXMuaXNTZXR1cCkge1xuICAgICAgICBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmFjdGl2YXRlVG90cCgpO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2Uuc3dpdGNoTG9naW5Nb2RlKHRoaXMuY3JlZGVudGlhbHMpO1xuICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2UudmVyaWZ5QXBwQWNjZXNzKCk7XG4gICAgICBhd2FpdCB0aGlzLmxvZ2luU2VydmljZS5hdXRoRnVsZmlsbGVkKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5hbGVydC5yZW1vdmVMYXN0RGFuZ2VyKCk7XG4gICAgICBpZiAoZS5kYXRhICYmIGUuZGF0YS5tZXNzYWdlID09PSAnQXV0aGVudGljYXRpb24gZmFpbGVkISA6IFVzZXIgYWNjb3VudCBpcyBsb2NrZWQnKSB7XG4gICAgICAgIHRoaXMuYWxlcnQud2FybmluZyhnZXR0ZXh0KCdBdXRoZW50aWNhdGlvbiBmYWlsZWQgZHVlIHRvOiB1c2VyIGFjY291bnQgaXMgbG9ja2VkLicpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrIGNlbnRlclwiXG4gIHRyYW5zbGF0ZVxuPlxuICBUd28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uXG48L2Rpdj5cblxuPGM4eS10b3RwLXNldHVwICpuZ0lmPVwiaXNTZXR1cFwiPlxuPC9jOHktdG90cC1zZXR1cD5cbjxjOHktdG90cC1jaGFsbGVuZ2VcbiAgW2lzTW9kYWxdPVwiZmFsc2VcIlxuICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgW2hhc0Vycm9yXT1cImhhc0Vycm9yXCJcbiAgW3ZlcmlmeV09XCJ2aWV3ID09PSBMT0dJTl9WSUVXUy5Ub3RwU2V0dXBcIlxuICAob25TdWNjZXNzKT1cIm9uVG90cFN1Y2Nlc3MoJGV2ZW50KVwiXG4gICh0b3RwVW5jb25maXJtZWRFbWl0dGVyKT1cIm9uQ2FuY2VsLmVtaXQoKVwiXG4+PC9jOHktdG90cC1jaGFsbGVuZ2U+XG5cbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90cC1hdXRoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvbG9naW4vdG90cC1hdXRoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvbG9naW4vdG90cC1hdXRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFnQixXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBTTFDLE1BQU0sT0FBTyxpQkFBaUI7SUFTNUIsWUFDUyxZQUEwQixFQUN6QixXQUF3QixFQUN4QixLQUFtQjtRQUZwQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBVG5CLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO0lBTWIsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSTtRQUN0QixJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDMUQsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssaURBQWlELEVBQUUsQ0FBQztnQkFDbkYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHVEQUF1RCxDQUFDLENBQUMsQ0FBQztZQUN2RixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDOytHQTNDVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw4SUNYOUIsOFpBa0JBOzs0RkRQYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsZUFBZTtzSUFJaEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDcmVkZW50aWFscywgVXNlclNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4vbG9naW4uc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblZpZXdzIH0gZnJvbSAnLi9sb2dpbi5tb2RlbCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXRvdHAtYXV0aCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90b3RwLWF1dGguY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRvdHBBdXRoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgY3JlZGVudGlhbHM6IElDcmVkZW50aWFscztcbiAgQElucHV0KCkgdmlldzogTG9naW5WaWV3cztcbiAgQE91dHB1dCgpIG9uQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBMT0dJTl9WSUVXUyA9IExvZ2luVmlld3M7XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgaGFzRXJyb3IgPSBmYWxzZTtcbiAgaXNTZXR1cCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnZpZXcgPT09IHRoaXMuTE9HSU5fVklFV1MuVG90cFNldHVwKSB7XG4gICAgICB0aGlzLmlzU2V0dXAgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uVG90cFN1Y2Nlc3MoY29kZSkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgdGhpcy5jcmVkZW50aWFscy50ZmEgPSBjb2RlO1xuICAgICAgaWYgKHRoaXMuaXNTZXR1cCkge1xuICAgICAgICBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmFjdGl2YXRlVG90cCgpO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2Uuc3dpdGNoTG9naW5Nb2RlKHRoaXMuY3JlZGVudGlhbHMpO1xuICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2UudmVyaWZ5QXBwQWNjZXNzKCk7XG4gICAgICBhd2FpdCB0aGlzLmxvZ2luU2VydmljZS5hdXRoRnVsZmlsbGVkKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5hbGVydC5yZW1vdmVMYXN0RGFuZ2VyKCk7XG4gICAgICBpZiAoZS5kYXRhICYmIGUuZGF0YS5tZXNzYWdlID09PSAnQXV0aGVudGljYXRpb24gZmFpbGVkISA6IFVzZXIgYWNjb3VudCBpcyBsb2NrZWQnKSB7XG4gICAgICAgIHRoaXMuYWxlcnQud2FybmluZyhnZXR0ZXh0KCdBdXRoZW50aWNhdGlvbiBmYWlsZWQgZHVlIHRvOiB1c2VyIGFjY291bnQgaXMgbG9ja2VkLicpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrIGNlbnRlclwiXG4gIHRyYW5zbGF0ZVxuPlxuICBUd28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uXG48L2Rpdj5cblxuPGM4eS10b3RwLXNldHVwICpuZ0lmPVwiaXNTZXR1cFwiPlxuPC9jOHktdG90cC1zZXR1cD5cbjxjOHktdG90cC1jaGFsbGVuZ2VcbiAgW2lzTW9kYWxdPVwiZmFsc2VcIlxuICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgW2hhc0Vycm9yXT1cImhhc0Vycm9yXCJcbiAgW3ZlcmlmeV09XCJ2aWV3ID09PSBMT0dJTl9WSUVXUy5Ub3RwU2V0dXBcIlxuICAob25TdWNjZXNzKT1cIm9uVG90cFN1Y2Nlc3MoJGV2ZW50KVwiXG4gICh0b3RwVW5jb25maXJtZWRFbWl0dGVyKT1cIm9uQ2FuY2VsLmVtaXQoKVwiXG4+PC9jOHktdG90cC1jaGFsbGVuZ2U+XG5cbiJdfQ==
@@ -147,7 +147,7 @@ export class DeviceGridComponent {
147
147
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
148
148
  useExisting: forwardRef(() => DeviceGridComponent)
149
149
  }
150
- ], viewQueries: [{ propertyName: "dataGrid", first: true, predicate: DataGridComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [infiniteScroll]=\"infiniteScroll\"\n [actionControls]=\"actionControls\"\n [selectable]=\"selectable\"\n [singleSelection]=\"singleSelection\"\n [bulkActionControls]=\"bulkActionControls\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n (itemsSelect)=\"itemsSelect.emit($event)\"\n [refresh]=\"refresh\"\n [showSearch]=\"showSearch && !childDeviceGrid\"\n [headerActionControls]=\"headerActionControls\"\n [activeClassName]=\"activeClassName\"\n c8yProductExperience\n inherit\n>\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'c8y-device-management'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : null\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n ></c8y-ui-empty-state>\n\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n</c8y-data-grid>\n", dependencies: [{ kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.EmptyStateContextDirective, selector: "[emptyStateContext]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "component", type: i2.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "directive", type: i2.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
150
+ ], viewQueries: [{ propertyName: "dataGrid", first: true, predicate: DataGridComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [infiniteScroll]=\"infiniteScroll\"\n [actionControls]=\"actionControls\"\n [selectable]=\"selectable\"\n [singleSelection]=\"singleSelection\"\n [bulkActionControls]=\"bulkActionControls\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n (itemsSelect)=\"itemsSelect.emit($event)\"\n [refresh]=\"refresh\"\n [showSearch]=\"showSearch && !childDeviceGrid\"\n [headerActionControls]=\"headerActionControls\"\n [activeClassName]=\"activeClassName\"\n c8yProductExperience\n inherit\n>\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'c8y-device-management'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : null\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n ></c8y-ui-empty-state>\n\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n</c8y-data-grid>\n", dependencies: [{ kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.EmptyStateContextDirective, selector: "[emptyStateContext]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "component", type: i2.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "hideReload"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "directive", type: i2.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
151
151
  }
152
152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceGridComponent, decorators: [{
153
153
  type: Component,
@@ -182,7 +182,7 @@ export class DeviceProfileListComponent {
182
182
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
183
183
  useExisting: forwardRef(() => DeviceProfileListComponent)
184
184
  }
185
- ], ngImport: i0, template: "<c8y-title>{{ 'Device profiles' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"c8y-device-profile\"\n label=\"{{ 'Device profiles' | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add device profile' | translate }}\"\n data-cy=\"device-profile-list--Add-device-profile\"\n (click)=\"createDeviceProfile()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add device profile' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/managing-device-data/#managing-device-profiles\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"'Device profiles' | translate\"\n [refresh]=\"refresh$\"\n [pagination]=\"pagination\"\n [columns]=\"columns\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'c8y-tools'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <p *ngIf=\"stats?.size === 0\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add device profile' | translate }}\"\n type=\"button\"\n (click)=\"createDeviceProfile()\"\n >\n {{ 'Add device profile' | translate }}\n </button>\n </p>\n </c8y-ui-empty-state>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "component", type: i2.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.EmptyStateContextDirective, selector: "[emptyStateContext]" }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "component", type: i2.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i2.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
185
+ ], ngImport: i0, template: "<c8y-title>{{ 'Device profiles' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"c8y-device-profile\"\n label=\"{{ 'Device profiles' | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add device profile' | translate }}\"\n data-cy=\"device-profile-list--Add-device-profile\"\n (click)=\"createDeviceProfile()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add device profile' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/managing-device-data/#managing-device-profiles\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"'Device profiles' | translate\"\n [refresh]=\"refresh$\"\n [pagination]=\"pagination\"\n [columns]=\"columns\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'c8y-tools'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <p *ngIf=\"stats?.size === 0\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add device profile' | translate }}\"\n type=\"button\"\n (click)=\"createDeviceProfile()\"\n >\n {{ 'Add device profile' | translate }}\n </button>\n </p>\n </c8y-ui-empty-state>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "component", type: i2.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.EmptyStateContextDirective, selector: "[emptyStateContext]" }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "component", type: i2.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "hideReload"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i2.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
186
186
  }
187
187
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceProfileListComponent, decorators: [{
188
188
  type: Component,
@@ -22,18 +22,58 @@ export class DeviceTabProvisionedCertificatesComponent {
22
22
  this.route = route;
23
23
  this.translateService = translateService;
24
24
  this.reloading = false;
25
- this.reload = new BehaviorSubject(null);
26
- this.provisionedCertificates = this.reload.pipe(tap(() => {
25
+ this.reload$ = new BehaviorSubject(null);
26
+ this.tableTitle = gettext('Provisioned certificates');
27
+ this.columns = [
28
+ {
29
+ name: 'serialNumber',
30
+ path: 'serialNumber',
31
+ header: gettext('Serial number')
32
+ },
33
+ {
34
+ name: 'validTill',
35
+ path: 'validTill',
36
+ header: gettext('Expiration date')
37
+ }
38
+ ];
39
+ this.rows$ = this.reload$.pipe(tap(() => {
27
40
  this.reloading = true;
28
- }), map(() => this.route.snapshot.parent.data.contextData), switchMap(device => this.deviceSerialsService.getDeviceProvisionedCertificates(device)), tap(() => {
41
+ }), map(() => this.route.snapshot.parent.data.contextData), switchMap(device => this.deviceSerialsService.getDeviceProvisionedCertificates(device)), map(provisionedCertificates => provisionedCertificates.map(cert => ({
42
+ ...cert,
43
+ id: cert.serialNumber
44
+ }))), tap(() => {
29
45
  this.reloading = false;
30
46
  }), shareReplay(1), finalize(() => {
31
47
  this.reloading = false;
32
48
  }));
49
+ this.pagination = {
50
+ pageSize: 20,
51
+ currentPage: 1
52
+ };
53
+ this.actionControls = [
54
+ {
55
+ type: 'REVOKE',
56
+ text: gettext('Revoke'),
57
+ icon: 'trash',
58
+ iconClasses: 'text-danger',
59
+ showOnHover: false,
60
+ callback: (item) => this.revokeProvisionedCertificate(item)
61
+ }
62
+ ];
63
+ this.displayOptions = {
64
+ filter: false,
65
+ striped: true,
66
+ hover: true,
67
+ bordered: false,
68
+ gridHeader: true
69
+ };
33
70
  this.PX_ACTIONS = PX_ACTIONS;
34
71
  }
35
72
  ngOnInit() {
36
- this.reload.next();
73
+ this.reload();
74
+ }
75
+ reload() {
76
+ this.reload$.next();
37
77
  }
38
78
  highlightDependingOnExpirationStatus(item) {
39
79
  const warningOffset = 24 * 60 * 60 * 1000 * 90; // 90 days
@@ -61,7 +101,7 @@ export class DeviceTabProvisionedCertificatesComponent {
61
101
  this.alertService.addServerFailure(error);
62
102
  }
63
103
  finally {
64
- this.reload.next();
104
+ this.reload();
65
105
  }
66
106
  }
67
107
  }
@@ -69,10 +109,10 @@ export class DeviceTabProvisionedCertificatesComponent {
69
109
  return await this.modalService.confirm(gettext('Revoke provisioned certificate'), this.translateService.instant(gettext(`You are about to revoke provisioned certificate {{ serialNumber }}. Do you want to proceed?`), { serialNumber }), Status.DANGER, { ok: gettext('Revoke'), cancel: gettext('Cancel') });
70
110
  }
71
111
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceTabProvisionedCertificatesComponent, deps: [{ token: i1.AlertService }, { token: i1.ModalService }, { token: i2.DeviceProvisionedCertificatesService }, { token: i3.CrlService }, { token: i4.ActivatedRoute }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DeviceTabProvisionedCertificatesComponent, selector: "device-tab-serials-component", ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"reload.next()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<!-- TODO: Add link to the mentioned documentation when it's available -->\n<c8y-ui-empty-state\n [icon]=\"'certificate'\"\n [title]=\"'No provisioned certificates to display.' | translate\"\n *ngIf=\"(provisionedCertificates | async)?.length === 0\"\n></c8y-ui-empty-state>\n\n<div\n [ngStyle]=\"{ width: '50%' }\"\n *ngIf=\"(provisionedCertificates | async)?.length > 0\"\n>\n <div class=\"bg-level-0\">\n <div class=\"card-header separator\">\n <div\n class=\"card-title\"\n translate\n >\n Provisioned certificates\n </div>\n </div>\n <div class=\"p-16\">\n <c8y-list-group class=\"m-b-24\">\n <div\n class=\"page-sticky-header hidden-xs c8y-list__item\"\n style=\"display: block !important\"\n >\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__body\">\n <div class=\"content-flex-60\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Serial No.' | translate }} \"\n >\n {{ 'Serial No.' | translate }}\n </span>\n </div>\n <div class=\"col-6\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Expiration date' | translate }}\"\n >\n {{ 'Expiration date' | translate }}\n </span>\n </div>\n <div class=\"col-1\"></div>\n </div>\n </div>\n </div>\n </div>\n\n <c8y-li\n *ngFor=\"let provisionedCertificate of provisionedCertificates | async; let i = index\"\n >\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-5\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Serial No.' | translate }}: {{ provisionedCertificate.serialNumber }}\"\n >\n <span\n class=\"text-label-small m-t-8 m-r-8 visible-xs-inline\"\n translate\n >\n Serial No.\n </span>\n {{ provisionedCertificate.serialNumber }}\n </div>\n </div>\n\n <div class=\"col-6\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Expiration date' | translate }}: {{\n provisionedCertificate.validTill | c8yDate\n }}\"\n >\n <span\n class=\"text-label-small m-t-8 m-r-8 visible-xs-inline\"\n translate\n >\n Expiration date\n </span>\n <small\n *ngIf=\"provisionedCertificate.validTill\"\n [ngClass]=\"highlightDependingOnExpirationStatus(provisionedCertificate)\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n *ngIf=\"!highlightDependingOnExpirationStatus(provisionedCertificate)\"\n ></i>\n <i\n class=\"m-r-4\"\n c8yIcon=\"warning\"\n *ngIf=\"highlightDependingOnExpirationStatus(provisionedCertificate)\"\n ></i>\n <span>{{ provisionedCertificate.validTill | c8yDate }}</span>\n </small>\n </div>\n </div>\n <div class=\"col-1\">\n <button\n class=\"btn btn-dot btn-dot--danger\"\n title=\"{{ 'Revoke' | translate }}\"\n type=\"button\"\n (click)=\"revokeProvisionedCertificate(provisionedCertificate)\"\n >\n <i c8yIcon=\"delete\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DatePipe, name: "c8yDate" }] }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DeviceTabProvisionedCertificatesComponent, selector: "device-tab-serials-component", ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"reload()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-data-grid\n [title]=\"tableTitle | translate\"\n [columns]=\"columns\"\n [rows]=\"rows$ | async\"\n [pagination]=\"pagination\"\n [actionControls]=\"actionControls\"\n [displayOptions]=\"displayOptions\"\n [hideReload]=\"true\"\n>\n <c8y-ui-empty-state\n [icon]=\"'certificate'\"\n [title]=\"'No provisioned certificates to display.' | translate\"\n *ngIf=\"(rows$ | async)?.length === 0\"\n ></c8y-ui-empty-state>\n\n <c8y-column name=\"serialNumber\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span\n class=\"text-truncate\"\n title=\"{{ context.property.header | translate }}: {{ context.value }}\"\n >\n {{ context.value }}\n </span>\n </ng-container>\n </c8y-column>\n\n <c8y-column name=\"validTill\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span\n class=\"text-truncate\"\n title=\"{{ context.property.header | translate }}: {{ context.value | c8yDate }}\"\n >\n <span\n *ngIf=\"context.value\"\n [ngClass]=\"highlightDependingOnExpirationStatus(context.item)\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n *ngIf=\"!highlightDependingOnExpirationStatus(context.item)\"\n ></i>\n <i\n class=\"m-r-4\"\n c8yIcon=\"warning\"\n *ngIf=\"highlightDependingOnExpirationStatus(context.item)\"\n ></i>\n <span>{{ context.value | c8yDate }}</span>\n </span>\n </span>\n </ng-container>\n </c8y-column>\n</c8y-data-grid>\n", dependencies: [{ kind: "component", type: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.CellRendererDefDirective, selector: "[c8yCellRendererDef]" }, { kind: "directive", type: i1.ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "component", type: i1.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "hideReload"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DatePipe, name: "c8yDate" }] }); }
73
113
  }
74
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceTabProvisionedCertificatesComponent, decorators: [{
75
115
  type: Component,
76
- args: [{ selector: 'device-tab-serials-component', template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"reload.next()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<!-- TODO: Add link to the mentioned documentation when it's available -->\n<c8y-ui-empty-state\n [icon]=\"'certificate'\"\n [title]=\"'No provisioned certificates to display.' | translate\"\n *ngIf=\"(provisionedCertificates | async)?.length === 0\"\n></c8y-ui-empty-state>\n\n<div\n [ngStyle]=\"{ width: '50%' }\"\n *ngIf=\"(provisionedCertificates | async)?.length > 0\"\n>\n <div class=\"bg-level-0\">\n <div class=\"card-header separator\">\n <div\n class=\"card-title\"\n translate\n >\n Provisioned certificates\n </div>\n </div>\n <div class=\"p-16\">\n <c8y-list-group class=\"m-b-24\">\n <div\n class=\"page-sticky-header hidden-xs c8y-list__item\"\n style=\"display: block !important\"\n >\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__body\">\n <div class=\"content-flex-60\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Serial No.' | translate }} \"\n >\n {{ 'Serial No.' | translate }}\n </span>\n </div>\n <div class=\"col-6\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Expiration date' | translate }}\"\n >\n {{ 'Expiration date' | translate }}\n </span>\n </div>\n <div class=\"col-1\"></div>\n </div>\n </div>\n </div>\n </div>\n\n <c8y-li\n *ngFor=\"let provisionedCertificate of provisionedCertificates | async; let i = index\"\n >\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-5\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Serial No.' | translate }}: {{ provisionedCertificate.serialNumber }}\"\n >\n <span\n class=\"text-label-small m-t-8 m-r-8 visible-xs-inline\"\n translate\n >\n Serial No.\n </span>\n {{ provisionedCertificate.serialNumber }}\n </div>\n </div>\n\n <div class=\"col-6\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Expiration date' | translate }}: {{\n provisionedCertificate.validTill | c8yDate\n }}\"\n >\n <span\n class=\"text-label-small m-t-8 m-r-8 visible-xs-inline\"\n translate\n >\n Expiration date\n </span>\n <small\n *ngIf=\"provisionedCertificate.validTill\"\n [ngClass]=\"highlightDependingOnExpirationStatus(provisionedCertificate)\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n *ngIf=\"!highlightDependingOnExpirationStatus(provisionedCertificate)\"\n ></i>\n <i\n class=\"m-r-4\"\n c8yIcon=\"warning\"\n *ngIf=\"highlightDependingOnExpirationStatus(provisionedCertificate)\"\n ></i>\n <span>{{ provisionedCertificate.validTill | c8yDate }}</span>\n </small>\n </div>\n </div>\n <div class=\"col-1\">\n <button\n class=\"btn btn-dot btn-dot--danger\"\n title=\"{{ 'Revoke' | translate }}\"\n type=\"button\"\n (click)=\"revokeProvisionedCertificate(provisionedCertificate)\"\n >\n <i c8yIcon=\"delete\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </div>\n </div>\n</div>\n" }]
116
+ args: [{ selector: 'device-tab-serials-component', template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"reload()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-data-grid\n [title]=\"tableTitle | translate\"\n [columns]=\"columns\"\n [rows]=\"rows$ | async\"\n [pagination]=\"pagination\"\n [actionControls]=\"actionControls\"\n [displayOptions]=\"displayOptions\"\n [hideReload]=\"true\"\n>\n <c8y-ui-empty-state\n [icon]=\"'certificate'\"\n [title]=\"'No provisioned certificates to display.' | translate\"\n *ngIf=\"(rows$ | async)?.length === 0\"\n ></c8y-ui-empty-state>\n\n <c8y-column name=\"serialNumber\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span\n class=\"text-truncate\"\n title=\"{{ context.property.header | translate }}: {{ context.value }}\"\n >\n {{ context.value }}\n </span>\n </ng-container>\n </c8y-column>\n\n <c8y-column name=\"validTill\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span\n class=\"text-truncate\"\n title=\"{{ context.property.header | translate }}: {{ context.value | c8yDate }}\"\n >\n <span\n *ngIf=\"context.value\"\n [ngClass]=\"highlightDependingOnExpirationStatus(context.item)\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n *ngIf=\"!highlightDependingOnExpirationStatus(context.item)\"\n ></i>\n <i\n class=\"m-r-4\"\n c8yIcon=\"warning\"\n *ngIf=\"highlightDependingOnExpirationStatus(context.item)\"\n ></i>\n <span>{{ context.value | c8yDate }}</span>\n </span>\n </span>\n </ng-container>\n </c8y-column>\n</c8y-data-grid>\n" }]
77
117
  }], ctorParameters: () => [{ type: i1.AlertService }, { type: i1.ModalService }, { type: i2.DeviceProvisionedCertificatesService }, { type: i3.CrlService }, { type: i4.ActivatedRoute }, { type: i5.TranslateService }] });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXRhYi1wcm92aXNpb25lZC1jZXJ0aWZpY2F0ZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2aWNlLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy9kZXZpY2UtdGFiLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9kZXZpY2UtcHJvdmlzaW9uZWQtY2VydGlmaWNhdGVzL2RldmljZS10YWItcHJvdmlzaW9uZWQtY2VydGlmaWNhdGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBa0IsTUFBTSxhQUFhLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQVF2RCxNQUFNLE9BQU8seUNBQXlDO0lBb0JwRCxZQUNVLFlBQTBCLEVBQzFCLFlBQTBCLEVBQzFCLG9CQUEwRCxFQUMxRCxVQUFzQixFQUN0QixLQUFxQixFQUNyQixnQkFBa0M7UUFMbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIs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Q0FBQyxZQUFZLENBQUMsT0FBTyxDQUNwQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsRUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDM0IsT0FBTyxDQUNMLDZGQUE2RixDQUM5RixFQUNELEVBQUUsWUFBWSxFQUFFLENBQ2pCLEVBQ0QsTUFBTSxDQUFDLE1BQU0sRUFDYixFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNyRCxDQUFDO0lBQ0osQ0FBQzsrR0EzRVUseUNBQXlDO21HQUF6Qyx5Q0FBeUMsb0VDZnRELG0ySUFvSUE7OzRGRHJIYSx5Q0FBeUM7a0JBSnJELFNBQVM7K0JBQ0UsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgZ2V0dGV4dCwgTW9kYWxTZXJ2aWNlLCBQWF9BQ1RJT05TLCBTdGF0dXMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IERldmljZVByb3Zpc2lvbmVkQ2VydGlmaWNhdGVzU2VydmljZSB9IGZyb20gJy4vZGV2aWNlLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENybFNlcnZpY2UsIElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgdGFwLCBmaW5hbGl6ZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFByb3Zpc2lvbmVkQ2VydGlmaWNhdGUgPSB7IHNlcmlhbE51bWJlcjogc3RyaW5nOyB2YWxpZFRpbGw6IHN0cmluZyB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZXZpY2UtdGFiLXNlcmlhbHMtY29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RldmljZS10YWItcHJvdmlzaW9uZWQtY2VydGlmaWNhdGVzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VUYWJQcm92aXNpb25lZENlcnRpZmljYXRlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHJlbG9hZGluZyA9IGZhbHNlO1xuICByZWxvYWQ6IEJlaGF2aW9yU3ViamVjdDx2b2lkPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIHByb3Zpc2lvbmVkQ2VydGlmaWNhdGVzOiBPYnNlcnZhYmxlPFByb3Zpc2lvbmVkQ2VydGlmaWNhdGVbXT4gPSB0aGlzLnJlbG9hZC5waXBlKFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLnJlbG9hZGluZyA9IHRydWU7XG4gICAgfSksXG4gICAgbWFwKCgpID0+IHRoaXMucm91dGUuc25hcHNob3QucGFyZW50LmRhdGEuY29udGV4dERhdGEgYXMgSU1hbmFnZWRPYmplY3QpLFxuICAgIHN3aXRjaE1hcChkZXZpY2UgPT4gdGhpcy5kZXZpY2VTZXJpYWxzU2VydmljZS5nZXREZXZpY2VQcm92aXNpb25lZENlcnRpZmljYXRlcyhkZXZpY2UpKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlbG9hZGluZyA9IGZhbHNlO1xuICAgIH0pXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IFBYX0FDVElPTlMgPSBQWF9BQ1RJT05TO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGRldmljZVNlcmlhbHNTZXJ2aWNlOiBEZXZpY2VQcm92aXNpb25lZENlcnRpZmljYXRlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjcmxTZXJ2aWNlOiBDcmxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWxvYWQubmV4dCgpO1xuICB9XG5cbiAgaGlnaGxpZ2h0RGVwZW5kaW5nT25FeHBpcmF0aW9uU3RhdHVzKGl0ZW06IFByb3Zpc2lvbmVkQ2VydGlmaWNhdGUpIHtcbiAgICBjb25zdCB3YXJuaW5nT2Zmc2V0ID0gMjQgKiA2MCAqIDYwICogMTAwMCAqIDkwOyAvLyA5MCBkYXlzXG4gICAgY29uc3QgdG9kYXlUaW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCB3YXJuaW5nVGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKyB3YXJuaW5nT2Zmc2V0O1xuICAgIGNvbnN0IG5vdEFmdGVyVGltZXN0YW1wID0gbmV3IERhdGUoaXRlbS52YWxpZFRpbGwpLmdldFRpbWUoKTtcbiAgICBjb25zdCBleHBpcmVkID0gbm90QWZ0ZXJUaW1lc3RhbXAgPCB0b2RheVRpbWVzdGFtcDtcbiAgICBjb25zdCBleHBpcmVzSW5MZXNzVGhhbjkwRGF5cyA9IG5vdEFmdGVyVGltZXN0YW1wIDwgd2FybmluZ1RpbWVzdGFtcDtcbiAgICBpZiAoZXhwaXJlZCkge1xuICAgICAgcmV0dXJuICd0ZXh0LWRhbmdlcic7XG4gICAgfVxuICAgIGlmIChleHBpcmVzSW5MZXNzVGhhbjkwRGF5cykge1xuICAgICAgcmV0dXJuICd0ZXh0LXdhcm5pbmcnO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBhc3luYyByZXZva2VQcm92aXNpb25lZENlcnRpZmljYXRlKHByb3Zpc2lvbmVkQ2VydGlmaWNhdGU6IFByb3Zpc2lvbmVkQ2VydGlmaWNhdGUpIHtcbiAgICBpZiAocHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc2VyaWFsTnVtYmVySW5IZXggPSBwcm92aXNpb25lZENlcnRpZmljYXRlLnNlcmlhbE51bWJlcjtcbiAgICAgICAgYXdhaXQgdGhpcy5jb25maXJtUmV2b2NhdGlvbihzZXJpYWxOdW1iZXJJbkhleCk7XG4gICAgICAgIGF3YWl0IHRoaXMuY3JsU2VydmljZS51cGxvYWRDcmxzKFt7IHNlcmlhbE51bWJlckluSGV4IH1dKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5yZWxvYWQubmV4dCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29uZmlybVJldm9jYXRpb24oc2VyaWFsTnVtYmVyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2UuY29uZmlybShcbiAgICAgIGdldHRleHQoJ1Jldm9rZSBwcm92aXNpb25lZCBjZXJ0aWZpY2F0ZScpLFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgYFlvdSBhcmUgYWJvdXQgdG8gcmV2b2tlIHByb3Zpc2lvbmVkIGNlcnRpZmljYXRlIHt7IHNlcmlhbE51bWJlciB9fS4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gXG4gICAgICAgICksXG4gICAgICAgIHsgc2VyaWFsTnVtYmVyIH1cbiAgICAgICksXG4gICAgICBTdGF0dXMuREFOR0VSLFxuICAgICAgeyBvazogZ2V0dGV4dCgnUmV2b2tlJyksIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJykgfVxuICAgICk7XG4gIH1cbn1cbiIsIjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHRpdGxlPVwie3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJyZWxvYWQubmV4dCgpXCJcbiAgPlxuICAgIDxpXG4gICAgICBjOHlJY29uPVwicmVmcmVzaFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdpY29uLXNwaW4nOiByZWxvYWRpbmcgfVwiXG4gICAgPjwvaT5cbiAgICB7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPCEtLSBUT0RPOiBBZGQgbGluayB0byB0aGUgbWVudGlvbmVkIGRvY3VtZW50YXRpb24gd2hlbiBpdCdzIGF2YWlsYWJsZSAtLT5cbjxjOHktdWktZW1wdHktc3RhdGVcbiAgW2ljb25dPVwiJ2NlcnRpZmljYXRlJ1wiXG4gIFt0aXRsZV09XCInTm8gcHJvdmlzaW9uZWQgY2VydGlmaWNhdGVzIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gICpuZ0lmPVwiKHByb3Zpc2lvbmVkQ2VydGlmaWNhdGVzIHwgYXN5bmMpPy5sZW5ndGggPT09IDBcIlxuPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuXG48ZGl2XG4gIFtuZ1N0eWxlXT1cInsgd2lkdGg6ICc1MCUnIH1cIlxuICAqbmdJZj1cIihwcm92aXNpb25lZENlcnRpZmljYXRlcyB8IGFzeW5jKT8ubGVuZ3RoID4gMFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJiZy1sZXZlbC0wXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNhcmQtdGl0bGVcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgUHJvdmlzaW9uZWQgY2VydGlmaWNhdGVzXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicC0xNlwiPlxuICAgICAgPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwibS1iLTI0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInBhZ2Utc3RpY2t5LWhlYWRlciBoaWRkZW4teHMgYzh5LWxpc3RfX2l0ZW1cIlxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogYmxvY2sgIWltcG9ydGFudFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2Jsb2NrXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2JvZHlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZmxleC02MFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCIge3sgJ1NlcmlhbCBOby4nIHwgdHJhbnNsYXRlIH19IFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdTZXJpYWwgTm8uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRXhwaXJhdGlvbiBkYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdFeHBpcmF0aW9uIGRhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxjOHktbGlcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZSBvZiBwcm92aXNpb25lZENlcnRpZmljYXRlcyB8IGFzeW5jOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktbGktYm9keSBjbGFzcz1cImNvbnRlbnQtZmxleC02MFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NlcmlhbCBOby4nIHwgdHJhbnNsYXRlIH19OiB7eyBwcm92aXNpb25lZENlcnRpZmljYXRlLnNlcmlhbE51bWJlciB9fVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsIG0tdC04IG0tci04IHZpc2libGUteHMtaW5saW5lXCJcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFNlcmlhbCBOby5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAge3sgcHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZS5zZXJpYWxOdW1iZXIgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0V4cGlyYXRpb24gZGF0ZScgfCB0cmFuc2xhdGUgfX06IHt7XG4gICAgICAgICAgICAgICAgICBwcm92aXNpb25lZENlcnRpZmljYXRlLnZhbGlkVGlsbCB8IGM4eURhdGVcbiAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsIG0tdC04IG0tci04IHZpc2libGUteHMtaW5saW5lXCJcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb24gZGF0ZVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZS52YWxpZFRpbGxcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaGlnaGxpZ2h0RGVwZW5kaW5nT25FeHBpcmF0aW9uU3RhdHVzKHByb3Zpc2lvbmVkQ2VydGlmaWNhdGUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgICAgICAgICAgYzh5SWNvbj1cImNhbGVuZGFyXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlnaGxpZ2h0RGVwZW5kaW5nT25FeHBpcmF0aW9uU3RhdHVzKHByb3Zpc2lvbmVkQ2VydGlmaWNhdGUpXCJcbiAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgICAgICAgICAgYzh5SWNvbj1cIndhcm5pbmdcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhpZ2hsaWdodERlcGVuZGluZ09uRXhwaXJhdGlvblN0YXR1cyhwcm92aXNpb25lZENlcnRpZmljYXRlKVwiXG4gICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZS52YWxpZFRpbGwgfCBjOHlEYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTFcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3QgYnRuLWRvdC0tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdSZXZva2UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmV2b2tlUHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZShwcm92aXNpb25lZENlcnRpZmljYXRlKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiZGVsZXRlXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgIDwvYzh5LWxpPlxuICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXRhYi1wcm92aXNpb25lZC1jZXJ0aWZpY2F0ZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2aWNlLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy9kZXZpY2UtdGFiLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9kZXZpY2UtcHJvdmlzaW9uZWQtY2VydGlmaWNhdGVzL2RldmljZS10YWItcHJvdmlzaW9uZWQtY2VydGlmaWNhdGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUVMLFlBQVksRUFHWixPQUFPLEVBQ1AsWUFBWSxFQUVaLFVBQVUsRUFFVixNQUFNLEVBQ1AsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBa0IsTUFBTSxhQUFhLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQVF2RCxNQUFNLE9BQU8seUNBQXlDO0lBNkRwRCxZQUNVLFlBQTBCLEVBQzFCLFlBQTBCLEVBQzFCLG9CQUEwRCxFQUMxRCxVQUFzQixFQUN0QixLQUFxQixFQUNyQixnQkFBa0M7UUFMbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIs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LE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUMzQixPQUFPLENBQ0wsNkZBQTZGLENBQzlGLEVBQ0QsRUFBRSxZQUFZLEVBQUUsQ0FDakIsRUFDRCxNQUFNLENBQUMsTUFBTSxFQUNiLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQ3JELENBQUM7SUFDSixDQUFDOytHQXhIVSx5Q0FBeUM7bUdBQXpDLHlDQUF5QyxvRUMxQnRELG82REFtRUE7OzRGRHpDYSx5Q0FBeUM7a0JBSnJELFNBQVM7K0JBQ0UsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvbkNvbnRyb2wsXG4gIEFsZXJ0U2VydmljZSxcbiAgQ29sdW1uLFxuICBEaXNwbGF5T3B0aW9ucyxcbiAgZ2V0dGV4dCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBQYWdpbmF0aW9uLFxuICBQWF9BQ1RJT05TLFxuICBSb3csXG4gIFN0YXR1c1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IERldmljZVByb3Zpc2lvbmVkQ2VydGlmaWNhdGVzU2VydmljZSB9IGZyb20gJy4vZGV2aWNlLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENybFNlcnZpY2UsIElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgdGFwLCBmaW5hbGl6ZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFByb3Zpc2lvbmVkQ2VydGlmaWNhdGUgPSB7IHNlcmlhbE51bWJlcjogc3RyaW5nOyB2YWxpZFRpbGw6IHN0cmluZyB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZXZpY2UtdGFiLXNlcmlhbHMtY29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RldmljZS10YWItcHJvdmlzaW9uZWQtY2VydGlmaWNhdGVzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VUYWJQcm92aXNpb25lZENlcnRpZmljYXRlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHJlbG9hZGluZyA9IGZhbHNlO1xuICByZWxvYWQkOiBCZWhhdmlvclN1YmplY3Q8dm9pZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIHRhYmxlVGl0bGUgPSBnZXR0ZXh0KCdQcm92aXNpb25lZCBjZXJ0aWZpY2F0ZXMnKTtcbiAgY29sdW1uczogQ29sdW1uW10gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ3NlcmlhbE51bWJlcicsXG4gICAgICBwYXRoOiAnc2VyaWFsTnVtYmVyJyxcbiAgICAgIGhlYWRlcjogZ2V0dGV4dCgnU2VyaWFsIG51bWJlcicpXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAndmFsaWRUaWxsJyxcbiAgICAgIHBhdGg6ICd2YWxpZFRpbGwnLFxuICAgICAgaGVhZGVyOiBnZXR0ZXh0KCdFeHBpcmF0aW9uIGRhdGUnKVxuICAgIH1cbiAgXTtcbiAgcm93cyQ6IE9ic2VydmFibGU8QXJyYXk8Um93ICYgUHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZT4+ID0gdGhpcy5yZWxvYWQkLnBpcGUoXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMucmVsb2FkaW5nID0gdHJ1ZTtcbiAgICB9KSxcbiAgICBtYXAoKCkgPT4gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YSBhcyBJTWFuYWdlZE9iamVjdCksXG4gICAgc3dpdGNoTWFwKGRldmljZSA9PiB0aGlzLmRldmljZVNlcmlhbHNTZXJ2aWNlLmdldERldmljZVByb3Zpc2lvbmVkQ2VydGlmaWNhdGVzKGRldmljZSkpLFxuICAgIG1hcChwcm92aXNpb25lZENlcnRpZmljYXRlcyA9PlxuICAgICAgcHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZXMubWFwKGNlcnQgPT4gKHtcbiAgICAgICAgLi4uY2VydCxcbiAgICAgICAgaWQ6IGNlcnQuc2VyaWFsTnVtYmVyXG4gICAgICB9KSlcbiAgICApLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLnJlbG9hZGluZyA9IGZhbHNlO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgIHRoaXMucmVsb2FkaW5nID0gZmFsc2U7XG4gICAgfSlcbiAgKTtcbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHtcbiAgICBwYWdlU2l6ZTogMjAsXG4gICAgY3VycmVudFBhZ2U6IDFcbiAgfTtcbiAgYWN0aW9uQ29udHJvbHM6IEFjdGlvbkNvbnRyb2xbXSA9IFtcbiAgICB7XG4gICAgICB0eXBlOiAnUkVWT0tFJyxcbiAgICAgIHRleHQ6IGdldHRleHQoJ1Jldm9rZScpLFxuICAgICAgaWNvbjogJ3RyYXNoJyxcbiAgICAgIGljb25DbGFzc2VzOiAndGV4dC1kYW5nZXInLFxuICAgICAgc2hvd09uSG92ZXI6IGZhbHNlLFxuICAgICAgY2FsbGJhY2s6IChpdGVtOiBSb3cgJiBQcm92aXNpb25lZENlcnRpZmljYXRlKSA9PiB0aGlzLnJldm9rZVByb3Zpc2lvbmVkQ2VydGlmaWNhdGUoaXRlbSlcbiAgICB9XG4gIF07XG4gIGRpc3BsYXlPcHRpb25zOiBEaXNwbGF5T3B0aW9ucyA9IHtcbiAgICBmaWx0ZXI6IGZhbHNlLFxuICAgIHN0cmlwZWQ6IHRydWUsXG4gICAgaG92ZXI6IHRydWUsXG4gICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgIGdyaWRIZWFkZXI6IHRydWVcbiAgfTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgUFhfQUNUSU9OUyA9IFBYX0FDVElPTlM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGV2aWNlU2VyaWFsc1NlcnZpY2U6IERldmljZVByb3Zpc2lvbmVkQ2VydGlmaWNhdGVzU2VydmljZSxcbiAgICBwcml2YXRlIGNybFNlcnZpY2U6IENybFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMucmVsb2FkJC5uZXh0KCk7XG4gIH1cblxuICBoaWdobGlnaHREZXBlbmRpbmdPbkV4cGlyYXRpb25TdGF0dXMoaXRlbTogUHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZSkge1xuICAgIGNvbnN0IHdhcm5pbmdPZmZzZXQgPSAyNCAqIDYwICogNjAgKiAxMDAwICogOTA7IC8vIDkwIGRheXNcbiAgICBjb25zdCB0b2RheVRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHdhcm5pbmdUaW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHdhcm5pbmdPZmZzZXQ7XG4gICAgY29uc3Qgbm90QWZ0ZXJUaW1lc3RhbXAgPSBuZXcgRGF0ZShpdGVtLnZhbGlkVGlsbCkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGV4cGlyZWQgPSBub3RBZnRlclRpbWVzdGFtcCA8IHRvZGF5VGltZXN0YW1wO1xuICAgIGNvbnN0IGV4cGlyZXNJbkxlc3NUaGFuOTBEYXlzID0gbm90QWZ0ZXJUaW1lc3RhbXAgPCB3YXJuaW5nVGltZXN0YW1wO1xuICAgIGlmIChleHBpcmVkKSB7XG4gICAgICByZXR1cm4gJ3RleHQtZGFuZ2VyJztcbiAgICB9XG4gICAgaWYgKGV4cGlyZXNJbkxlc3NUaGFuOTBEYXlzKSB7XG4gICAgICByZXR1cm4gJ3RleHQtd2FybmluZyc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGFzeW5jIHJldm9rZVByb3Zpc2lvbmVkQ2VydGlmaWNhdGUocHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZTogUHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZSkge1xuICAgIGlmIChwcm92aXNpb25lZENlcnRpZmljYXRlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzZXJpYWxOdW1iZXJJbkhleCA9IHByb3Zpc2lvbmVkQ2VydGlmaWNhdGUuc2VyaWFsTnVtYmVyO1xuICAgICAgICBhd2FpdCB0aGlzLmNvbmZpcm1SZXZvY2F0aW9uKHNlcmlhbE51bWJlckluSGV4KTtcbiAgICAgICAgYXdhaXQgdGhpcy5jcmxTZXJ2aWNlLnVwbG9hZENybHMoW3sgc2VyaWFsTnVtYmVySW5IZXggfV0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29uZmlybVJldm9jYXRpb24oc2VyaWFsTnVtYmVyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2UuY29uZmlybShcbiAgICAgIGdldHRleHQoJ1Jldm9rZSBwcm92aXNpb25lZCBjZXJ0aWZpY2F0ZScpLFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgYFlvdSBhcmUgYWJvdXQgdG8gcmV2b2tlIHByb3Zpc2lvbmVkIGNlcnRpZmljYXRlIHt7IHNlcmlhbE51bWJlciB9fS4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gXG4gICAgICAgICksXG4gICAgICAgIHsgc2VyaWFsTnVtYmVyIH1cbiAgICAgICksXG4gICAgICBTdGF0dXMuREFOR0VSLFxuICAgICAgeyBvazogZ2V0dGV4dCgnUmV2b2tlJyksIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJykgfVxuICAgICk7XG4gIH1cbn1cbiIsIjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHRpdGxlPVwie3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJyZWxvYWQoKVwiXG4gID5cbiAgICA8aVxuICAgICAgYzh5SWNvbj1cInJlZnJlc2hcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogcmVsb2FkaW5nIH1cIlxuICAgID48L2k+XG4gICAge3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktZGF0YS1ncmlkXG4gIFt0aXRsZV09XCJ0YWJsZVRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gIFtyb3dzXT1cInJvd3MkIHwgYXN5bmNcIlxuICBbcGFnaW5hdGlvbl09XCJwYWdpbmF0aW9uXCJcbiAgW2FjdGlvbkNvbnRyb2xzXT1cImFjdGlvbkNvbnRyb2xzXCJcbiAgW2Rpc3BsYXlPcHRpb25zXT1cImRpc3BsYXlPcHRpb25zXCJcbiAgW2hpZGVSZWxvYWRdPVwidHJ1ZVwiXG4+XG4gIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICBbaWNvbl09XCInY2VydGlmaWNhdGUnXCJcbiAgICBbdGl0bGVdPVwiJ05vIHByb3Zpc2lvbmVkIGNlcnRpZmljYXRlcyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICAgICpuZ0lmPVwiKHJvd3MkIHwgYXN5bmMpPy5sZW5ndGggPT09IDBcIlxuICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG5cbiAgPGM4eS1jb2x1bW4gbmFtZT1cInNlcmlhbE51bWJlclwiPlxuICAgIDxuZy1jb250YWluZXIgKmM4eUNlbGxSZW5kZXJlckRlZj1cImxldCBjb250ZXh0XCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICB0aXRsZT1cInt7IGNvbnRleHQucHJvcGVydHkuaGVhZGVyIHwgdHJhbnNsYXRlIH19OiB7eyBjb250ZXh0LnZhbHVlIH19XCJcbiAgICAgID5cbiAgICAgICAge3sgY29udGV4dC52YWx1ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2M4eS1jb2x1bW4+XG5cbiAgPGM4eS1jb2x1bW4gbmFtZT1cInZhbGlkVGlsbFwiPlxuICAgIDxuZy1jb250YWluZXIgKmM4eUNlbGxSZW5kZXJlckRlZj1cImxldCBjb250ZXh0XCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICB0aXRsZT1cInt7IGNvbnRleHQucHJvcGVydHkuaGVhZGVyIHwgdHJhbnNsYXRlIH19OiB7eyBjb250ZXh0LnZhbHVlIHwgYzh5RGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJjb250ZXh0LnZhbHVlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJoaWdobGlnaHREZXBlbmRpbmdPbkV4cGlyYXRpb25TdGF0dXMoY29udGV4dC5pdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICAgICAgICBjOHlJY29uPVwiY2FsZW5kYXJcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaGlnaGxpZ2h0RGVwZW5kaW5nT25FeHBpcmF0aW9uU3RhdHVzKGNvbnRleHQuaXRlbSlcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwibS1yLTRcIlxuICAgICAgICAgICAgYzh5SWNvbj1cIndhcm5pbmdcIlxuICAgICAgICAgICAgKm5nSWY9XCJoaWdobGlnaHREZXBlbmRpbmdPbkV4cGlyYXRpb25TdGF0dXMoY29udGV4dC5pdGVtKVwiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8c3Bhbj57eyBjb250ZXh0LnZhbHVlIHwgYzh5RGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2M4eS1jb2x1bW4+XG48L2M4eS1kYXRhLWdyaWQ+XG4iXX0=
@@ -472,7 +472,7 @@ export class ApplicationPluginsComponent {
472
472
  });
473
473
  }
474
474
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApplicationPluginsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.EcosystemService }, { token: i3.BsModalService }, { token: i4.PluginsService }, { token: i4.AlertService }, { token: i4.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
475
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApplicationPluginsComponent, selector: "c8y-app-plugins", inputs: { appId: "appId" }, viewQueries: [{ propertyName: "dataGrid", first: true, predicate: DataGridComponent, descendants: true }], ngImport: i0, template: "<c8y-title>{{ app | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/application/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"app | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Plugins' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"!(isStandard$ | async)\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reset to default plugins' | translate }}\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n (click)=\"resetToDefault()\"\n >\n <i c8yIcon=\"undo\"></i>\n {{ 'Reset to default' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Install plugins' | translate }}\"\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install plugins' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<ng-container *ngIf=\"orphanedPlugins$ | async as orphanedPlugins\">\n <c8y-action-bar-item\n *ngIf=\"orphanedPlugins?.length\"\n [placement]=\"'right'\"\n >\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Clean up orphaned plugins' | translate }}\"\n (click)=\"cleanupOrphanedPlugins(orphanedPlugins)\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n >\n <i c8yIcon=\"erase\"></i>\n {{ 'Clean up orphaned plugins' | translate }}\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<div class=\"content-fullpage d-flex d-col border-top\">\n <c8y-data-grid\n class=\"d-contents\"\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [rows]=\"installedPlugins$ | async\"\n [pagination]=\"pagination\"\n [selectable]=\"true\"\n [actionControls]=\"actionControls\"\n [bulkActionControls]=\"bulkActionControls\"\n [headerActionControls]=\"headerActionControls\"\n (onReload)=\"refresh()\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'plugin'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <p *ngIf=\"stats?.size === 0\">\n <button\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Install plugins' | translate }}\"\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n translate\n >\n Install plugins\n </button>\n </p>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "component", type: i4.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i4.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i4.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i4.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i4.EmptyStateContextDirective, selector: "[emptyStateContext]" }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: i4.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.HumanizeAppNamePipe, name: "humanizeAppName" }] }); }
475
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApplicationPluginsComponent, selector: "c8y-app-plugins", inputs: { appId: "appId" }, viewQueries: [{ propertyName: "dataGrid", first: true, predicate: DataGridComponent, descendants: true }], ngImport: i0, template: "<c8y-title>{{ app | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/application/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"app | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Plugins' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"!(isStandard$ | async)\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reset to default plugins' | translate }}\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n (click)=\"resetToDefault()\"\n >\n <i c8yIcon=\"undo\"></i>\n {{ 'Reset to default' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Install plugins' | translate }}\"\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install plugins' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<ng-container *ngIf=\"orphanedPlugins$ | async as orphanedPlugins\">\n <c8y-action-bar-item\n *ngIf=\"orphanedPlugins?.length\"\n [placement]=\"'right'\"\n >\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Clean up orphaned plugins' | translate }}\"\n (click)=\"cleanupOrphanedPlugins(orphanedPlugins)\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n >\n <i c8yIcon=\"erase\"></i>\n {{ 'Clean up orphaned plugins' | translate }}\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<div class=\"content-fullpage d-flex d-col border-top\">\n <c8y-data-grid\n class=\"d-contents\"\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [rows]=\"installedPlugins$ | async\"\n [pagination]=\"pagination\"\n [selectable]=\"true\"\n [actionControls]=\"actionControls\"\n [bulkActionControls]=\"bulkActionControls\"\n [headerActionControls]=\"headerActionControls\"\n (onReload)=\"refresh()\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'plugin'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <p *ngIf=\"stats?.size === 0\">\n <button\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Install plugins' | translate }}\"\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n translate\n >\n Install plugins\n </button>\n </p>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "component", type: i4.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i4.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i4.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i4.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i4.EmptyStateContextDirective, selector: "[emptyStateContext]" }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "hideReload"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: i4.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.HumanizeAppNamePipe, name: "humanizeAppName" }] }); }
476
476
  }
477
477
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApplicationPluginsComponent, decorators: [{
478
478
  type: Component,
@@ -149,7 +149,7 @@ export class FilesRepositoryComponent {
149
149
  await this.modalService.confirm(title, body, status, labels);
150
150
  }
151
151
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilesRepositoryComponent, deps: [{ token: i1.FilesRepositoryService }, { token: i2.InventoryBinaryService }, { token: i3.ModalService }, { token: i3.AlertService }, { token: i4.BsModalService }, { token: i3.FilesService }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
152
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FilesRepositoryComponent, selector: "c8y-files-repository", viewQueries: [{ propertyName: "dataGrid", first: true, predicate: DataGridComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-title>\n {{ title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n [label]=\"managementTitle | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"title | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Upload files' | translate }}\"\n *c8yIfAllowed=\"['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE']; allowAny: true\"\n (click)=\"openFileUploadComponent()\"\n data-cy=\"c8y-files-repository--open-file-upload-component\"\n >\n <i c8yIcon=\"upload\"></i>\n {{ 'Upload files' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/standard-tenant/managing-data/#file-repository\"></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [infiniteScroll]=\"infiniteScroll\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [actionControls]=\"actionControls\"\n [selectable]=\"selectable\"\n [showSearch]=\"true\"\n [refresh]=\"refresh\"\n [bulkActionControls]=\"bulkActionControls\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'c8y-archive'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <p *ngIf=\"stats?.size === 0\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Upload file' | translate }}\"\n type=\"button\"\n (click)=\"openFileUploadComponent()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Upload file' | translate }}\n </button>\n </p>\n </c8y-ui-empty-state>\n\n <c8y-column name=\"name\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span title=\"{{ context.value }}\">\n <div class=\"d-flex j-c-between a-i-center\">\n {{ context.value }}\n <c8y-file-preview\n class=\"m-l-auto\"\n [mo]=\"context.item\"\n >\n <button\n class=\"btn btn-emphasis btn-icon\"\n [title]=\"'Preview file' | translate\"\n type=\"button\"\n customButton\n >\n <i c8yIcon=\"search\"></i>\n </button>\n </c8y-file-preview>\n </div>\n </span>\n </ng-container>\n </c8y-column>\n\n <c8y-column name=\"length\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span title=\"{{ context.value }} B\">\n {{ context.value | bytes }}\n </span>\n </ng-container>\n </c8y-column>\n\n <c8y-column name=\"lastUpdated\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span title=\"{{ context.value | c8yDate }}\">\n {{ context.value | c8yDate }}\n </span>\n </ng-container>\n </c8y-column>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.EmptyStateContextDirective, selector: "[emptyStateContext]" }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.IfAllowedDirective, selector: "[c8yIfAllowed]", inputs: ["c8yIfAllowed", "c8yIfAllowedAllowAny"] }, { kind: "directive", type: i3.CellRendererDefDirective, selector: "[c8yCellRendererDef]" }, { kind: "directive", type: i3.ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "component", type: i3.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: i7.FilePreviewComponent, selector: "c8y-file-preview", inputs: ["mo"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.DatePipe, name: "c8yDate" }, { kind: "pipe", type: i3.BytesPipe, name: "bytes" }] }); }
152
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FilesRepositoryComponent, selector: "c8y-files-repository", viewQueries: [{ propertyName: "dataGrid", first: true, predicate: DataGridComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-title>\n {{ title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n [label]=\"managementTitle | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"title | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Upload files' | translate }}\"\n *c8yIfAllowed=\"['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE']; allowAny: true\"\n (click)=\"openFileUploadComponent()\"\n data-cy=\"c8y-files-repository--open-file-upload-component\"\n >\n <i c8yIcon=\"upload\"></i>\n {{ 'Upload files' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/standard-tenant/managing-data/#file-repository\"></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [infiniteScroll]=\"infiniteScroll\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [actionControls]=\"actionControls\"\n [selectable]=\"selectable\"\n [showSearch]=\"true\"\n [refresh]=\"refresh\"\n [bulkActionControls]=\"bulkActionControls\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'c8y-archive'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <p *ngIf=\"stats?.size === 0\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Upload file' | translate }}\"\n type=\"button\"\n (click)=\"openFileUploadComponent()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Upload file' | translate }}\n </button>\n </p>\n </c8y-ui-empty-state>\n\n <c8y-column name=\"name\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span title=\"{{ context.value }}\">\n <div class=\"d-flex j-c-between a-i-center\">\n {{ context.value }}\n <c8y-file-preview\n class=\"m-l-auto\"\n [mo]=\"context.item\"\n >\n <button\n class=\"btn btn-emphasis btn-icon\"\n [title]=\"'Preview file' | translate\"\n type=\"button\"\n customButton\n >\n <i c8yIcon=\"search\"></i>\n </button>\n </c8y-file-preview>\n </div>\n </span>\n </ng-container>\n </c8y-column>\n\n <c8y-column name=\"length\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span title=\"{{ context.value }} B\">\n {{ context.value | bytes }}\n </span>\n </ng-container>\n </c8y-column>\n\n <c8y-column name=\"lastUpdated\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span title=\"{{ context.value | c8yDate }}\">\n {{ context.value | c8yDate }}\n </span>\n </ng-container>\n </c8y-column>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.EmptyStateContextDirective, selector: "[emptyStateContext]" }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.IfAllowedDirective, selector: "[c8yIfAllowed]", inputs: ["c8yIfAllowed", "c8yIfAllowedAllowAny"] }, { kind: "directive", type: i3.CellRendererDefDirective, selector: "[c8yCellRendererDef]" }, { kind: "directive", type: i3.ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "component", type: i3.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "hideReload"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: i7.FilePreviewComponent, selector: "c8y-file-preview", inputs: ["mo"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.DatePipe, name: "c8yDate" }, { kind: "pipe", type: i3.BytesPipe, name: "bytes" }] }); }
153
153
  }
154
154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilesRepositoryComponent, decorators: [{
155
155
  type: Component,
@@ -201,7 +201,7 @@ export class RemoteAccessConfigurationListComponent {
201
201
  }
202
202
  }
203
203
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RemoteAccessConfigurationListComponent, deps: [{ token: i1.RemoteAccessService }, { token: i2.ActivatedRoute }, { token: i3.ModalService }, { token: i3.AlertService }, { token: i4.BsModalService }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
204
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RemoteAccessConfigurationListComponent, isStandalone: true, selector: "c8y-remote-access-configuration-list", ngImport: i0, template: "<c8y-title translate>Remote access</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n (click)=\"addEndpoint()\"\n [disabled]=\"!protocolProviders?.length\"\n [attr.data-cy]=\"'remoteAccessConfigurationList--add-endpoint'\"\n >\n <i [c8yIcon]=\"'plus-circle'\"></i>\n <span translate>Add endpoint</span>\n </button>\n</c8y-action-bar-item>\n\n<div class=\"content-fullpage d-flex d-col border-top\">\n <c8y-data-grid\n [title]=\"gridTitle\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n (onReload)=\"reload()\"\n [actionControls]=\"actionControls\"\n [displayOptions]=\"displayOptions\"\n >\n <c8y-ui-empty-state\n [icon]=\"'window-restore'\"\n [title]=\"'No endpoints configured.' | translate\"\n [subtitle]=\"'Click below to add your first endpoint.' | translate\"\n [horizontal]=\"false\"\n >\n <button\n class=\"btn btn-default\"\n (click)=\"addEndpoint()\"\n translate\n >\n Add endpoint\n </button>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "ngmodule", type: DataGridModule }, { kind: "component", type: i3.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
204
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RemoteAccessConfigurationListComponent, isStandalone: true, selector: "c8y-remote-access-configuration-list", ngImport: i0, template: "<c8y-title translate>Remote access</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n (click)=\"addEndpoint()\"\n [disabled]=\"!protocolProviders?.length\"\n [attr.data-cy]=\"'remoteAccessConfigurationList--add-endpoint'\"\n >\n <i [c8yIcon]=\"'plus-circle'\"></i>\n <span translate>Add endpoint</span>\n </button>\n</c8y-action-bar-item>\n\n<div class=\"content-fullpage d-flex d-col border-top\">\n <c8y-data-grid\n [title]=\"gridTitle\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n (onReload)=\"reload()\"\n [actionControls]=\"actionControls\"\n [displayOptions]=\"displayOptions\"\n >\n <c8y-ui-empty-state\n [icon]=\"'window-restore'\"\n [title]=\"'No endpoints configured.' | translate\"\n [subtitle]=\"'Click below to add your first endpoint.' | translate\"\n [horizontal]=\"false\"\n >\n <button\n class=\"btn btn-default\"\n (click)=\"addEndpoint()\"\n translate\n >\n Add endpoint\n </button>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "ngmodule", type: DataGridModule }, { kind: "component", type: i3.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "hideReload"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
205
205
  }
206
206
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RemoteAccessConfigurationListComponent, decorators: [{
207
207
  type: Component,
@@ -215,4 +215,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
215
215
  C8yTranslatePipe
216
216
  ], template: "<c8y-title translate>Remote access</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n (click)=\"addEndpoint()\"\n [disabled]=\"!protocolProviders?.length\"\n [attr.data-cy]=\"'remoteAccessConfigurationList--add-endpoint'\"\n >\n <i [c8yIcon]=\"'plus-circle'\"></i>\n <span translate>Add endpoint</span>\n </button>\n</c8y-action-bar-item>\n\n<div class=\"content-fullpage d-flex d-col border-top\">\n <c8y-data-grid\n [title]=\"gridTitle\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n (onReload)=\"reload()\"\n [actionControls]=\"actionControls\"\n [displayOptions]=\"displayOptions\"\n >\n <c8y-ui-empty-state\n [icon]=\"'window-restore'\"\n [title]=\"'No endpoints configured.' | translate\"\n [subtitle]=\"'Click below to add your first endpoint.' | translate\"\n [horizontal]=\"false\"\n >\n <button\n class=\"btn btn-default\"\n (click)=\"addEndpoint()\"\n translate\n >\n Add endpoint\n </button>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n" }]
217
217
  }], ctorParameters: () => [{ type: i1.RemoteAccessService }, { type: i2.ActivatedRoute }, { type: i3.ModalService }, { type: i3.AlertService }, { type: i4.BsModalService }, { type: i5.TranslateService }] });
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWFjY2Vzcy1jb25maWd1cmF0aW9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcmVtb3RlLWFjY2Vzcy9jb25maWd1cmF0aW9ucy9yZW1vdGUtYWNjZXNzLWNvbmZpZ3VyYXRpb24tbGlzdC9yZW1vdGUtYWNjZXNzLWNvbmZpZ3VyYXRpb24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9yZW1vdGUtYWNjZXNzL2NvbmZpZ3VyYXRpb25zL3JlbW90ZS1hY2Nlc3MtY29uZmlndXJhdGlvbi1saXN0L3JlbW90ZS1hY2Nlc3MtY29uZmlndXJhdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFDTCxzQkFBc0IsRUFFdEIsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBRWhCLGNBQWMsRUFFZCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxhQUFhLEVBQ2IsWUFBWSxFQUVaLE1BQU0sRUFDTixjQUFjLEVBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBR0wsbUJBQW1CLEVBQ3BCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDM0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQzFJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFD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T25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBY3Rpb25CYXJJdGVtQ29tcG9uZW50LFxuICBBY3Rpb25Db250cm9sLFxuICBBbGVydFNlcnZpY2UsXG4gIEJ1aWx0SW5BY3Rpb25UeXBlLFxuICBDOHlUcmFuc2xhdGVEaXJlY3RpdmUsXG4gIEM4eVRyYW5zbGF0ZVBpcGUsXG4gIENvbHVtbixcbiAgRGF0YUdyaWRNb2R1bGUsXG4gIERpc3BsYXlPcHRpb25zLFxuICBFbXB0eUNvbXBvbmVudCxcbiAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgZ2V0dGV4dCxcbiAgSWNvbkRpcmVjdGl2ZSxcbiAgTW9kYWxTZXJ2aWNlLFxuICBQYWdpbmF0aW9uLFxuICBTdGF0dXMsXG4gIFRpdGxlQ29tcG9uZW50XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbixcbiAgUmVtb3RlQWNjZXNzUHJvdG9jb2xQcm92aWRlcixcbiAgUmVtb3RlQWNjZXNzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3JlbW90ZS1hY2Nlc3MvZGF0YSc7XG5pbXBvcnQgeyBSZW1vdGVBY2Nlc3NDb25uZWN0QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9yZW1vdGUtYWNjZXNzLWNvbm5lY3QtYnV0dG9uL3JlbW90ZS1hY2Nlc3MtY29ubmVjdC1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBSZW1vdGVBY2Nlc3NQaWNrUHJvdG9jb2xNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL3JlbW90ZS1hY2Nlc3MtcGljay1wcm90b2NvbC1tb2RhbC9yZW1vdGUtYWNjZXNzLXBpY2stcHJvdG9jb2wtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25EZXZpY2VHcmlkQ29sdW1uIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kZXZpY2UtZ3JpZCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1yZW1vdGUtYWNjZXNzLWNvbmZpZ3VyYXRpb24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZW1vdGUtYWNjZXNzLWNvbmZpZ3VyYXRpb24tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBEYXRhR3JpZE1vZHVsZSxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBDOHlUcmFuc2xhdGVEaXJlY3RpdmUsXG4gICAgQWN0aW9uQmFySXRlbUNvbXBvbmVudCxcbiAgICBJY29uRGlyZWN0aXZlLFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgQzh5VHJhbnNsYXRlUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcm93czogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbltdID0gW107XG4gIGNvbHVtbnM6IENvbHVtbltdID0gW1xuICAgIG5ldyBJY29uRGV2aWNlR3JpZENvbHVtbihcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyQ2VsbFJlbmRlcmVyQ29tcG9uZW50OiBFbXB0eUNvbXBvbmVudFxuICAgICAgfSxcbiAgICAgIGNvbnRleHQgPT4ge1xuICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMucHJvdG9jb2xQcm92aWRlcnMuZmluZChwID0+IHAucHJvdG9jb2xOYW1lID09PSBjb250ZXh0Lml0ZW0ucHJvdG9jb2wpO1xuICAgICAgICByZXR1cm4gcHJvdmlkZXI/LnByb3RvY29sSWNvbiB8fCAnbGFwdG9wJztcbiAgICAgIH1cbiAgICApLFxuICAgIHtcbiAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgIGhlYWRlcjogZ2V0dGV4dCgnRW5kcG9pbnQnKSxcbiAgICAgIHBhdGg6ICduYW1lJ1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2hvc3RuYW1lJyxcbiAgICAgIGhlYWRlcjogZ2V0dGV4dCgnSG9zdCcpLFxuICAgICAgcGF0aDogJ2hvc3RuYW1lJ1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3BvcnQnLFxuICAgICAgaGVhZGVyOiBnZXR0ZXh0KCdQb3J0JyksXG4gICAgICBwYXRoOiAncG9ydCdcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdwcm90b2NvbCcsXG4gICAgICBoZWFkZXI6IGdldHRleHQoJ1Byb3RvY29sJyksXG4gICAgICBwYXRoOiAncHJvdG9jb2wnXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnY29ubmVjdCcsXG4gICAgICBoZWFkZXI6IGdldHRleHQoJ0Nvbm5lY3QnKSxcbiAgICAgIGNlbGxSZW5kZXJlckNvbXBvbmVudDogUmVtb3RlQWNjZXNzQ29ubmVjdEJ1dHRvbkNvbXBvbmVudFxuICAgIH1cbiAgXTtcbiAgYWN0aW9uQ29udHJvbHM6IEFjdGlvbkNvbnRyb2xbXSA9IFtcbiAgICB7XG4gICAgICB0eXBlOiBCdWlsdEluQWN0aW9uVHlwZS5FZGl0LFxuICAgICAgY2FsbGJhY2s6IGFzeW5jIChlbnRyeTogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMuZ2V0UHJvdG9jb2xQcm92aWRlckZvckNvbmZpZ3VyYXRpb24oZW50cnkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbGV0IHJlc3VsdDogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbjtcbiAgICAgICAgICBpZiAocHJvdmlkZXIuZWRpdEVuZHBvaW50KSB7XG4gICAgICAgICAgICByZXN1bHQgPSBhd2FpdCBwcm92aWRlci5lZGl0RW5kcG9pbnQodGhpcy5kZXZpY2VJZCwgZW50cnkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmRlZmF1bHRFZGl0RW5kcG9pbnQodGhpcy5kZXZpY2VJZCwgZW50cnkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKGdldHRleHQoJ0VuZHBvaW50IHNhdmVkLicpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdGYWlsZWQgdG8gc2F2ZSBlbmRwb2ludC4nKSwgZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6IEJ1aWx0SW5BY3Rpb25UeXBlLkRlbGV0ZSxcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoZW50cnk6IFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2UuY29uZmlybShcbiAgICAgICAgICBnZXR0ZXh0KCdEZWxldGUgZW5kcG9pbnQnKSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgIGdldHRleHQoXG4gICAgICAgICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSBlbmRwb2ludCBcInt7IGVuZHBvaW50TmFtZSB9fVwiLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkP2BcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB7IGVuZHBvaW50TmFtZTogZW50cnkubmFtZSB9XG4gICAgICAgICAgKSxcbiAgICAgICAgICBTdGF0dXMuREFOR0VSLFxuICAgICAgICAgIHsgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSwgb2s6IGdldHRleHQoJ0RlbGV0ZScpIH1cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMuZ2V0UHJvdG9jb2xQcm92aWRlckZvckNvbmZpZ3VyYXRpb24oZW50cnkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgcHJvdmlkZXIucmVtb3ZlRW5kcG9pbnQodGhpcy5kZXZpY2VJZCwgZW50cnkpO1xuICAgICAgICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhnZXR0ZXh0KCdFbmRwb2ludCBkZWxldGVkLicpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdGYWlsZWQgdG8gZGVsZXRlIGVuZHBvaW50LicpLCBlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbiAgZGV2aWNlSWQ6IHN0cmluZztcbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHtcbiAgICBwYWdlU2l6ZTogMTAsXG4gICAgY3VycmVudFBhZ2U6IDFcbiAgfTtcbiAgZGlzcGxheU9wdGlvbnM6IERpc3BsYXlPcHRpb25zID0ge1xuICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICBzdHJpcGVkOiB0cnVlLFxuICAgIGZpbHRlcjogdHJ1ZSxcbiAgICBncmlkSGVhZGVyOiB0cnVlLFxuICAgIGhvdmVyOiB0cnVlXG4gIH07XG4gIHByb3RvY29sUHJvdmlkZXJzOiBSZW1vdGVBY2Nlc3NQcm90b2NvbFByb3ZpZGVyW10gPSBbXTtcbiAgZ3JpZFRpdGxlID0gZ2V0dGV4dCgnUmVtb3RlIGFjY2VzcyBlbmRwb2ludHMnKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbW90ZUFjY2VzczogUmVtb3RlQWNjZXNzU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5wcm90b2NvbFByb3ZpZGVycyA9IHRoaXMucmVtb3RlQWNjZXNzLmdldFByb3RvY29sUHJvdmlkZXJzKCk7XG4gICAgdGhpcy5kZXZpY2VJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUucGFyZW50LnNuYXBzaG90LnBhcmFtcy5pZDtcbiAgICBjb25zdCBjb25uZWN0Q29sdW0gPSB0aGlzLmNvbHVtbnMuZmluZChjID0+IGMubmFtZSA9PT0gJ2Nvbm5lY3QnKTtcbiAgICBpZiAoY29ubmVjdENvbHVtKSB7XG4gICAgICAoPGFueT5jb25uZWN0Q29sdW0pLnRhcmdldCA9IHRoaXMuZGV2aWNlSWQ7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZWxvYWQoKTtcbiAgfVxuXG4gIGFzeW5jIHJlbG9hZCgpIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9ucyA9IGF3YWl0IHRoaXMucmVtb3RlQWNjZXNzLmxpc3RDb25maWd1cmF0aW9ucyh0aGlzLmRldmljZUlkKTtcbiAgICBjb25zdCBzdXBwb3J0ZWRQcm90b2NvbHMgPSB0aGlzLnByb3RvY29sUHJvdmlkZXJzLm1hcChwID0+IHAucHJvdG9jb2xOYW1lKTtcbiAgICB0aGlzLnJvd3MgPSBjb25maWd1cmF0aW9ucy5maWx0ZXIoYyA9PiBzdXBwb3J0ZWRQcm90b2NvbHMuaW5jbHVkZXMoYy5wcm90b2NvbCkpO1xuICB9XG5cbiAgYXN5bmMgYWRkRW5kcG9pbnQoKSB7XG4gICAgbGV0IHByb3ZpZGVyOiBSZW1vdGVBY2Nlc3NQcm90b2NvbFByb3ZpZGVyID0gbnVsbDtcbiAgICBpZiAodGhpcy5wcm90b2NvbFByb3ZpZGVycy5sZW5ndGggPiAxKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhSZW1vdGVBY2Nlc3NQaWNrUHJvdG9jb2xNb2RhbENvbXBvbmVudCk7XG4gICAgICAgIHByb3ZpZGVyID0gYXdhaXQgbW9kYWxSZWYuY29udGVudC5yZXN1bHQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIG1vZGFsIGNsb3NlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3RvY29sUHJvdmlkZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcHJvdmlkZXIgPSB0aGlzLnByb3RvY29sUHJvdmlkZXJzWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBhZGRNb2RhbFJlc3VsdDogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbiA9IG51bGw7XG4gICAgICBpZiAocHJvdmlkZXIuYWRkRW5kcG9pbnQpIHtcbiAgICAgICAgYWRkTW9kYWxSZXN1bHQgPSBhd2FpdCBwcm92aWRlci5hZGRFbmRwb2ludCh0aGlzLmRldmljZUlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZE1vZGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5kZWZhdWx0QWRkRW5kcG9pbnQodGhpcy5kZXZpY2VJZCwgcHJvdmlkZXIpO1xuICAgICAgfVxuICAgICAgaWYgKCFhZGRNb2RhbFJlc3VsdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MoZ2V0dGV4dCgnRW5kcG9pbnQgYWRkZWQuJykpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICAgIHRoaXMuYWxlcnQuZGFuZ2VyKGdldHRleHQoJ0ZhaWxlZCB0byBhZGQgZW5kcG9pbnQuJyksIGUpO1xuICAgIH1cbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgZ2V0UHJvdG9jb2xQcm92aWRlckZvckNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbikge1xuICAgIHJldHVybiB0aGlzLnByb3RvY29sUHJvdmlkZXJzLmZpbmQocCA9PiBwLnByb3RvY29sTmFtZSA9PT0gY29uZmlndXJhdGlvbi5wcm90b2NvbCk7XG4gIH1cblxuICBhc3luYyBkZWZhdWx0RWRpdEVuZHBvaW50KGRldmljZUlkOiBzdHJpbmcsIGNvbmZpZ3VyYXRpb246IFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb24pIHtcbiAgICBjb25zdCBtb2RhbFJlc3VsdCA9IGF3YWl0IHRoaXMub3BlbkJhc2ljRW5kcG9pbnRNb2RhbChjb25maWd1cmF0aW9uKTtcbiAgICBpZiAoIW1vZGFsUmVzdWx0KSB7XG4gICAgICByZXR1cm4gbW9kYWxSZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVtb3RlQWNjZXNzLnVwZGF0ZUNvbmZpZ3VyYXRpb24oZGV2aWNlSWQsIG1vZGFsUmVzdWx0KTtcbiAgfVxuXG4gIGFzeW5jIGRlZmF1bHRBZGRFbmRwb2ludChkZXZpY2VJZDogc3RyaW5nLCBwcm92aWRlcjogUmVtb3RlQWNjZXNzUHJvdG9jb2xQcm92aWRlcikge1xuICAgIGxldCBkZWZhdWx0Q29uZmlnID0geyBwcm90b2NvbDogcHJvdmlkZXIucHJvdG9jb2xOYW1lIH07XG4gICAgaWYgKHByb3ZpZGVyLmdldERlZmF1bHRFbmRwb2ludENvbmZpZ3VyYXRpb24pIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRDb25maWdGcm9tUHJvdmlkZXIgPSBhd2FpdCBwcm92aWRlci5nZXREZWZhdWx0RW5kcG9pbnRDb25maWd1cmF0aW9uKCk7XG4gICAgICBkZWZhdWx0Q29uZmlnID0geyAuLi5kZWZhdWx0Q29uZmlnLCAuLi5kZWZhdWx0Q29uZmlnRnJvbVByb3ZpZGVyIH07XG4gICAgfVxuICAgIGNvbnN0IG1vZGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5vcGVuQmFzaWNFbmRwb2ludE1vZGFsKGRlZmF1bHRDb25maWcpO1xuICAgIGlmICghbW9kYWxSZXN1bHQpIHtcbiAgICAgIHJldHVybiBtb2RhbFJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZW1vdGVBY2Nlc3MuYWRkQ29uZmlndXJhdGlvbihkZXZpY2VJZCwgbW9kYWxSZXN1bHQpO1xuICB9XG5cbiAgYXN5bmMgb3BlbkJhc2ljRW5kcG9pbnRNb2RhbChcbiAgICBjdXJyZW50Q29uZmlndXJhdGlvbjogUGFydGlhbDxSZW1vdGVBY2Nlc3NDb25maWd1cmF0aW9uPlxuICApOiBQcm9taXNlPFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb24gfCBudWxsPiB7XG4gICAgY29uc3QgeyBSZW1vdGVBY2Nlc3NCYXNpY0VuZHBvaW50TW9kYWxDb21wb25lbnQgfSA9IGF3YWl0IGltcG9ydChcbiAgICAgICdAYzh5L25neC1jb21wb25lbnRzL3JlbW90ZS1hY2Nlc3Mvc2hhcmVkJ1xuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3coUmVtb3RlQWNjZXNzQmFzaWNFbmRwb2ludE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICAgIGluaXRpYWxTdGF0ZTogeyBjdXJyZW50VmFsdWU6IGN1cnJlbnRDb25maWd1cmF0aW9uIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIChhd2FpdCBtb2RhbFJlZi5jb250ZW50LnJlc3VsdCkgYXMgUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBtb2RhbCBjbG9zZWRcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiPGM4eS10aXRsZSB0cmFuc2xhdGU+UmVtb3RlIGFjY2VzczwvYzh5LXRpdGxlPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICAoY2xpY2spPVwiYWRkRW5kcG9pbnQoKVwiXG4gICAgW2Rpc2FibGVkXT1cIiFwcm90b2NvbFByb3ZpZGVycz8ubGVuZ3RoXCJcbiAgICBbYXR0ci5kYXRhLWN5XT1cIidyZW1vdGVBY2Nlc3NDb25maWd1cmF0aW9uTGlzdC0tYWRkLWVuZHBvaW50J1wiXG4gID5cbiAgICA8aSBbYzh5SWNvbl09XCIncGx1cy1jaXJjbGUnXCI+PC9pPlxuICAgIDxzcGFuIHRyYW5zbGF0ZT5BZGQgZW5kcG9pbnQ8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48ZGl2IGNsYXNzPVwiY29udGVudC1mdWxscGFnZSBkLWZsZXggZC1jb2wgYm9yZGVyLXRvcFwiPlxuICA8Yzh5LWRhdGEtZ3JpZFxuICAgIFt0aXRsZV09XCJncmlkVGl0bGVcIlxuICAgIFtyb3dzXT1cInJvd3NcIlxuICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgIFtwYWdpbmF0aW9uXT1cInBhZ2luYXRpb25cIlxuICAgIChvblJlbG9hZCk9XCJyZWxvYWQoKVwiXG4gICAgW2FjdGlvbkNvbnRyb2xzXT1cImFjdGlvbkNvbnRyb2xzXCJcbiAgICBbZGlzcGxheU9wdGlvbnNdPVwiZGlzcGxheU9wdGlvbnNcIlxuICA+XG4gICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgW2ljb25dPVwiJ3dpbmRvdy1yZXN0b3JlJ1wiXG4gICAgICBbdGl0bGVdPVwiJ05vIGVuZHBvaW50cyBjb25maWd1cmVkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3N1YnRpdGxlXT1cIidDbGljayBiZWxvdyB0byBhZGQgeW91ciBmaXJzdCBlbmRwb2ludC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtob3Jpem9udGFsXT1cImZhbHNlXCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgKGNsaWNrKT1cImFkZEVuZHBvaW50KClcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgQWRkIGVuZHBvaW50XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgPC9jOHktZGF0YS1ncmlkPlxuPC9kaXY+XG4iXX0=
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWFjY2Vzcy1jb25maWd1cmF0aW9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcmVtb3RlLWFjY2Vzcy9jb25maWd1cmF0aW9ucy9yZW1vdGUtYWNjZXNzLWNvbmZpZ3VyYXRpb24tbGlzdC9yZW1vdGUtYWNjZXNzLWNvbmZpZ3VyYXRpb24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9yZW1vdGUtYWNjZXNzL2NvbmZpZ3VyYXRpb25zL3JlbW90ZS1hY2Nlc3MtY29uZmlndXJhdGlvbi1saXN0L3JlbW90ZS1hY2Nlc3MtY29uZmlndXJhdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFDTCxzQkFBc0IsRUFFdEIsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBRWhCLGNBQWMsRUFFZCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxhQUFhLEVBQ2IsWUFBWSxFQUVaLE1BQU0sRUFDTixjQUFjLEVBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBR0wsbUJBQW1CLEVBQ3BCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDM0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQzFJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFD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T25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBY3Rpb25CYXJJdGVtQ29tcG9uZW50LFxuICBBY3Rpb25Db250cm9sLFxuICBBbGVydFNlcnZpY2UsXG4gIEJ1aWx0SW5BY3Rpb25UeXBlLFxuICBDOHlUcmFuc2xhdGVEaXJlY3RpdmUsXG4gIEM4eVRyYW5zbGF0ZVBpcGUsXG4gIENvbHVtbixcbiAgRGF0YUdyaWRNb2R1bGUsXG4gIERpc3BsYXlPcHRpb25zLFxuICBFbXB0eUNvbXBvbmVudCxcbiAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgZ2V0dGV4dCxcbiAgSWNvbkRpcmVjdGl2ZSxcbiAgTW9kYWxTZXJ2aWNlLFxuICBQYWdpbmF0aW9uLFxuICBTdGF0dXMsXG4gIFRpdGxlQ29tcG9uZW50XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbixcbiAgUmVtb3RlQWNjZXNzUHJvdG9jb2xQcm92aWRlcixcbiAgUmVtb3RlQWNjZXNzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3JlbW90ZS1hY2Nlc3MvZGF0YSc7XG5pbXBvcnQgeyBSZW1vdGVBY2Nlc3NDb25uZWN0QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9yZW1vdGUtYWNjZXNzLWNvbm5lY3QtYnV0dG9uL3JlbW90ZS1hY2Nlc3MtY29ubmVjdC1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBSZW1vdGVBY2Nlc3NQaWNrUHJvdG9jb2xNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL3JlbW90ZS1hY2Nlc3MtcGljay1wcm90b2NvbC1tb2RhbC9yZW1vdGUtYWNjZXNzLXBpY2stcHJvdG9jb2wtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25EZXZpY2VHcmlkQ29sdW1uIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kZXZpY2UtZ3JpZCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1yZW1vdGUtYWNjZXNzLWNvbmZpZ3VyYXRpb24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZW1vdGUtYWNjZXNzLWNvbmZpZ3VyYXRpb24tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBEYXRhR3JpZE1vZHVsZSxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBDOHlUcmFuc2xhdGVEaXJlY3RpdmUsXG4gICAgQWN0aW9uQmFySXRlbUNvbXBvbmVudCxcbiAgICBJY29uRGlyZWN0aXZlLFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgQzh5VHJhbnNsYXRlUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcm93czogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbltdID0gW107XG4gIGNvbHVtbnM6IENvbHVtbltdID0gW1xuICAgIG5ldyBJY29uRGV2aWNlR3JpZENvbHVtbihcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyQ2VsbFJlbmRlcmVyQ29tcG9uZW50OiBFbXB0eUNvbXBvbmVudFxuICAgICAgfSxcbiAgICAgIGNvbnRleHQgPT4ge1xuICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMucHJvdG9jb2xQcm92aWRlcnMuZmluZChwID0+IHAucHJvdG9jb2xOYW1lID09PSBjb250ZXh0Lml0ZW0ucHJvdG9jb2wpO1xuICAgICAgICByZXR1cm4gcHJvdmlkZXI/LnByb3RvY29sSWNvbiB8fCAnbGFwdG9wJztcbiAgICAgIH1cbiAgICApLFxuICAgIHtcbiAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgIGhlYWRlcjogZ2V0dGV4dCgnRW5kcG9pbnQnKSxcbiAgICAgIHBhdGg6ICduYW1lJ1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2hvc3RuYW1lJyxcbiAgICAgIGhlYWRlcjogZ2V0dGV4dCgnSG9zdCcpLFxuICAgICAgcGF0aDogJ2hvc3RuYW1lJ1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3BvcnQnLFxuICAgICAgaGVhZGVyOiBnZXR0ZXh0KCdQb3J0JyksXG4gICAgICBwYXRoOiAncG9ydCdcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdwcm90b2NvbCcsXG4gICAgICBoZWFkZXI6IGdldHRleHQoJ1Byb3RvY29sJyksXG4gICAgICBwYXRoOiAncHJvdG9jb2wnXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnY29ubmVjdCcsXG4gICAgICBoZWFkZXI6IGdldHRleHQoJ0Nvbm5lY3QnKSxcbiAgICAgIGNlbGxSZW5kZXJlckNvbXBvbmVudDogUmVtb3RlQWNjZXNzQ29ubmVjdEJ1dHRvbkNvbXBvbmVudFxuICAgIH1cbiAgXTtcbiAgYWN0aW9uQ29udHJvbHM6IEFjdGlvbkNvbnRyb2xbXSA9IFtcbiAgICB7XG4gICAgICB0eXBlOiBCdWlsdEluQWN0aW9uVHlwZS5FZGl0LFxuICAgICAgY2FsbGJhY2s6IGFzeW5jIChlbnRyeTogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMuZ2V0UHJvdG9jb2xQcm92aWRlckZvckNvbmZpZ3VyYXRpb24oZW50cnkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbGV0IHJlc3VsdDogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbjtcbiAgICAgICAgICBpZiAocHJvdmlkZXIuZWRpdEVuZHBvaW50KSB7XG4gICAgICAgICAgICByZXN1bHQgPSBhd2FpdCBwcm92aWRlci5lZGl0RW5kcG9pbnQodGhpcy5kZXZpY2VJZCwgZW50cnkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmRlZmF1bHRFZGl0RW5kcG9pbnQodGhpcy5kZXZpY2VJZCwgZW50cnkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKGdldHRleHQoJ0VuZHBvaW50IHNhdmVkLicpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdGYWlsZWQgdG8gc2F2ZSBlbmRwb2ludC4nKSwgZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6IEJ1aWx0SW5BY3Rpb25UeXBlLkRlbGV0ZSxcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoZW50cnk6IFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2UuY29uZmlybShcbiAgICAgICAgICBnZXR0ZXh0KCdEZWxldGUgZW5kcG9pbnQnKSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgIGdldHRleHQoXG4gICAgICAgICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSBlbmRwb2ludCBcInt7IGVuZHBvaW50TmFtZSB9fVwiLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkP2BcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB7IGVuZHBvaW50TmFtZTogZW50cnkubmFtZSB9XG4gICAgICAgICAgKSxcbiAgICAgICAgICBTdGF0dXMuREFOR0VSLFxuICAgICAgICAgIHsgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSwgb2s6IGdldHRleHQoJ0RlbGV0ZScpIH1cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMuZ2V0UHJvdG9jb2xQcm92aWRlckZvckNvbmZpZ3VyYXRpb24oZW50cnkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgcHJvdmlkZXIucmVtb3ZlRW5kcG9pbnQodGhpcy5kZXZpY2VJZCwgZW50cnkpO1xuICAgICAgICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhnZXR0ZXh0KCdFbmRwb2ludCBkZWxldGVkLicpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdGYWlsZWQgdG8gZGVsZXRlIGVuZHBvaW50LicpLCBlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbiAgZGV2aWNlSWQ6IHN0cmluZztcbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHtcbiAgICBwYWdlU2l6ZTogMTAsXG4gICAgY3VycmVudFBhZ2U6IDFcbiAgfTtcbiAgZGlzcGxheU9wdGlvbnM6IERpc3BsYXlPcHRpb25zID0ge1xuICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICBzdHJpcGVkOiB0cnVlLFxuICAgIGZpbHRlcjogdHJ1ZSxcbiAgICBncmlkSGVhZGVyOiB0cnVlLFxuICAgIGhvdmVyOiB0cnVlXG4gIH07XG4gIHByb3RvY29sUHJvdmlkZXJzOiBSZW1vdGVBY2Nlc3NQcm90b2NvbFByb3ZpZGVyW10gPSBbXTtcbiAgZ3JpZFRpdGxlID0gZ2V0dGV4dCgnUmVtb3RlIGFjY2VzcyBlbmRwb2ludHMnKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbW90ZUFjY2VzczogUmVtb3RlQWNjZXNzU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5wcm90b2NvbFByb3ZpZGVycyA9IHRoaXMucmVtb3RlQWNjZXNzLmdldFByb3RvY29sUHJvdmlkZXJzKCk7XG4gICAgdGhpcy5kZXZpY2VJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUucGFyZW50LnNuYXBzaG90LnBhcmFtcy5pZDtcbiAgICBjb25zdCBjb25uZWN0Q29sdW0gPSB0aGlzLmNvbHVtbnMuZmluZChjID0+IGMubmFtZSA9PT0gJ2Nvbm5lY3QnKTtcbiAgICBpZiAoY29ubmVjdENvbHVtKSB7XG4gICAgICAoPGFueT5jb25uZWN0Q29sdW0pLnRhcmdldCA9IHRoaXMuZGV2aWNlSWQ7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZWxvYWQoKTtcbiAgfVxuXG4gIGFzeW5jIHJlbG9hZCgpIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9ucyA9IGF3YWl0IHRoaXMucmVtb3RlQWNjZXNzLmxpc3RDb25maWd1cmF0aW9ucyh0aGlzLmRldmljZUlkKTtcbiAgICBjb25zdCBzdXBwb3J0ZWRQcm90b2NvbHMgPSB0aGlzLnByb3RvY29sUHJvdmlkZXJzLm1hcChwID0+IHAucHJvdG9jb2xOYW1lKTtcbiAgICB0aGlzLnJvd3MgPSBjb25maWd1cmF0aW9ucy5maWx0ZXIoYyA9PiBzdXBwb3J0ZWRQcm90b2NvbHMuaW5jbHVkZXMoYy5wcm90b2NvbCkpO1xuICB9XG5cbiAgYXN5bmMgYWRkRW5kcG9pbnQoKSB7XG4gICAgbGV0IHByb3ZpZGVyOiBSZW1vdGVBY2Nlc3NQcm90b2NvbFByb3ZpZGVyID0gbnVsbDtcbiAgICBpZiAodGhpcy5wcm90b2NvbFByb3ZpZGVycy5sZW5ndGggPiAxKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhSZW1vdGVBY2Nlc3NQaWNrUHJvdG9jb2xNb2RhbENvbXBvbmVudCk7XG4gICAgICAgIHByb3ZpZGVyID0gYXdhaXQgbW9kYWxSZWYuY29udGVudC5yZXN1bHQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIG1vZGFsIGNsb3NlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3RvY29sUHJvdmlkZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcHJvdmlkZXIgPSB0aGlzLnByb3RvY29sUHJvdmlkZXJzWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBhZGRNb2RhbFJlc3VsdDogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbiA9IG51bGw7XG4gICAgICBpZiAocHJvdmlkZXIuYWRkRW5kcG9pbnQpIHtcbiAgICAgICAgYWRkTW9kYWxSZXN1bHQgPSBhd2FpdCBwcm92aWRlci5hZGRFbmRwb2ludCh0aGlzLmRldmljZUlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZE1vZGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5kZWZhdWx0QWRkRW5kcG9pbnQodGhpcy5kZXZpY2VJZCwgcHJvdmlkZXIpO1xuICAgICAgfVxuICAgICAgaWYgKCFhZGRNb2RhbFJlc3VsdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MoZ2V0dGV4dCgnRW5kcG9pbnQgYWRkZWQuJykpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICAgIHRoaXMuYWxlcnQuZGFuZ2VyKGdldHRleHQoJ0ZhaWxlZCB0byBhZGQgZW5kcG9pbnQuJyksIGUpO1xuICAgIH1cbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgZ2V0UHJvdG9jb2xQcm92aWRlckZvckNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbikge1xuICAgIHJldHVybiB0aGlzLnByb3RvY29sUHJvdmlkZXJzLmZpbmQocCA9PiBwLnByb3RvY29sTmFtZSA9PT0gY29uZmlndXJhdGlvbi5wcm90b2NvbCk7XG4gIH1cblxuICBhc3luYyBkZWZhdWx0RWRpdEVuZHBvaW50KGRldmljZUlkOiBzdHJpbmcsIGNvbmZpZ3VyYXRpb246IFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb24pIHtcbiAgICBjb25zdCBtb2RhbFJlc3VsdCA9IGF3YWl0IHRoaXMub3BlbkJhc2ljRW5kcG9pbnRNb2RhbChjb25maWd1cmF0aW9uKTtcbiAgICBpZiAoIW1vZGFsUmVzdWx0KSB7XG4gICAgICByZXR1cm4gbW9kYWxSZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVtb3RlQWNjZXNzLnVwZGF0ZUNvbmZpZ3VyYXRpb24oZGV2aWNlSWQsIG1vZGFsUmVzdWx0KTtcbiAgfVxuXG4gIGFzeW5jIGRlZmF1bHRBZGRFbmRwb2ludChkZXZpY2VJZDogc3RyaW5nLCBwcm92aWRlcjogUmVtb3RlQWNjZXNzUHJvdG9jb2xQcm92aWRlcikge1xuICAgIGxldCBkZWZhdWx0Q29uZmlnID0geyBwcm90b2NvbDogcHJvdmlkZXIucHJvdG9jb2xOYW1lIH07XG4gICAgaWYgKHByb3ZpZGVyLmdldERlZmF1bHRFbmRwb2ludENvbmZpZ3VyYXRpb24pIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRDb25maWdGcm9tUHJvdmlkZXIgPSBhd2FpdCBwcm92aWRlci5nZXREZWZhdWx0RW5kcG9pbnRDb25maWd1cmF0aW9uKCk7XG4gICAgICBkZWZhdWx0Q29uZmlnID0geyAuLi5kZWZhdWx0Q29uZmlnLCAuLi5kZWZhdWx0Q29uZmlnRnJvbVByb3ZpZGVyIH07XG4gICAgfVxuICAgIGNvbnN0IG1vZGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5vcGVuQmFzaWNFbmRwb2ludE1vZGFsKGRlZmF1bHRDb25maWcpO1xuICAgIGlmICghbW9kYWxSZXN1bHQpIHtcbiAgICAgIHJldHVybiBtb2RhbFJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZW1vdGVBY2Nlc3MuYWRkQ29uZmlndXJhdGlvbihkZXZpY2VJZCwgbW9kYWxSZXN1bHQpO1xuICB9XG5cbiAgYXN5bmMgb3BlbkJhc2ljRW5kcG9pbnRNb2RhbChcbiAgICBjdXJyZW50Q29uZmlndXJhdGlvbjogUGFydGlhbDxSZW1vdGVBY2Nlc3NDb25maWd1cmF0aW9uPlxuICApOiBQcm9taXNlPFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb24gfCBudWxsPiB7XG4gICAgY29uc3QgeyBSZW1vdGVBY2Nlc3NCYXNpY0VuZHBvaW50TW9kYWxDb21wb25lbnQgfSA9IGF3YWl0IGltcG9ydChcbiAgICAgICdAYzh5L25neC1jb21wb25lbnRzL3JlbW90ZS1hY2Nlc3Mvc2hhcmVkJ1xuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3coUmVtb3RlQWNjZXNzQmFzaWNFbmRwb2ludE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICAgIGluaXRpYWxTdGF0ZTogeyBjdXJyZW50VmFsdWU6IGN1cnJlbnRDb25maWd1cmF0aW9uIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIChhd2FpdCBtb2RhbFJlZi5jb250ZW50LnJlc3VsdCkgYXMgUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBtb2RhbCBjbG9zZWRcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiPGM4eS10aXRsZSB0cmFuc2xhdGU+UmVtb3RlIGFjY2VzczwvYzh5LXRpdGxlPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICAoY2xpY2spPVwiYWRkRW5kcG9pbnQoKVwiXG4gICAgW2Rpc2FibGVkXT1cIiFwcm90b2NvbFByb3ZpZGVycz8ubGVuZ3RoXCJcbiAgICBbYXR0ci5kYXRhLWN5XT1cIidyZW1vdGVBY2Nlc3NDb25maWd1cmF0aW9uTGlzdC0tYWRkLWVuZHBvaW50J1wiXG4gID5cbiAgICA8aSBbYzh5SWNvbl09XCIncGx1cy1jaXJjbGUnXCI+PC9pPlxuICAgIDxzcGFuIHRyYW5zbGF0ZT5BZGQgZW5kcG9pbnQ8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48ZGl2IGNsYXNzPVwiY29udGVudC1mdWxscGFnZSBkLWZsZXggZC1jb2wgYm9yZGVyLXRvcFwiPlxuICA8Yzh5LWRhdGEtZ3JpZFxuICAgIFt0aXRsZV09XCJncmlkVGl0bGVcIlxuICAgIFtyb3dzXT1cInJvd3NcIlxuICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgIFtwYWdpbmF0aW9uXT1cInBhZ2luYXRpb25cIlxuICAgIChvblJlbG9hZCk9XCJyZWxvYWQoKVwiXG4gICAgW2FjdGlvbkNvbnRyb2xzXT1cImFjdGlvbkNvbnRyb2xzXCJcbiAgICBbZGlzcGxheU9wdGlvbnNdPVwiZGlzcGxheU9wdGlvbnNcIlxuICA+XG4gICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgW2ljb25dPVwiJ3dpbmRvdy1yZXN0b3JlJ1wiXG4gICAgICBbdGl0bGVdPVwiJ05vIGVuZHBvaW50cyBjb25maWd1cmVkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3N1YnRpdGxlXT1cIidDbGljayBiZWxvdyB0byBhZGQgeW91ciBmaXJzdCBlbmRwb2ludC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtob3Jpem9udGFsXT1cImZhbHNlXCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgKGNsaWNrKT1cImFkZEVuZHBvaW50KClcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgQWRkIGVuZHBvaW50XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgPC9jOHktZGF0YS1ncmlkPlxuPC9kaXY+XG4iXX0=
@@ -200,7 +200,7 @@ export class ConfigurationListComponent {
200
200
  return column.name;
201
201
  }
202
202
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigurationListComponent, deps: [{ token: i1.AlertService }, { token: i1.DataGridService }, { token: i2.RepositoryService }, { token: i3.BsModalService }, { token: i1.ModalService }, { token: i4.TranslateService }, { token: i5.InventoryBinaryService }], target: i0.ɵɵFactoryTarget.Component }); }
203
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ConfigurationListComponent, selector: "c8y-configuration-list", viewQueries: [{ propertyName: "filter", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<c8y-title>\n <span\n class=\"m-r-4\"\n translate\n >\n Configuration repository\n </span>\n <small>\n {{ size$ | async }}\n <span translate>snapshots</span>\n </small>\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"gears\"\n label=\"{{ 'Configuration repository' | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add configuration snapshot' | translate }}\"\n type=\"button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add configuration snapshot' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/managing-device-data/#managing-configurations\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"'Configurations' | translate\"\n [refresh]=\"refresh$\"\n [pagination]=\"pagination\"\n [columns]=\"columns\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'gears'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <ng-container *ngIf=\"stats?.size === 0\">\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add configuration snapshot' | translate }}\"\n type=\"button\"\n (click)=\"add()\"\n >\n {{ 'Add configuration snapshot' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/managing-device-data/#managing-configurations\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </ng-container>\n </c8y-ui-empty-state>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1.EmptyStateContextDirective, selector: "[emptyStateContext]" }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1.ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "component", type: i1.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i1.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i1.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i1.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] }); }
203
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ConfigurationListComponent, selector: "c8y-configuration-list", viewQueries: [{ propertyName: "filter", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<c8y-title>\n <span\n class=\"m-r-4\"\n translate\n >\n Configuration repository\n </span>\n <small>\n {{ size$ | async }}\n <span translate>snapshots</span>\n </small>\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"gears\"\n label=\"{{ 'Configuration repository' | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add configuration snapshot' | translate }}\"\n type=\"button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add configuration snapshot' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/managing-device-data/#managing-configurations\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"'Configurations' | translate\"\n [refresh]=\"refresh$\"\n [pagination]=\"pagination\"\n [columns]=\"columns\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'gears'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <ng-container *ngIf=\"stats?.size === 0\">\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add configuration snapshot' | translate }}\"\n type=\"button\"\n (click)=\"add()\"\n >\n {{ 'Add configuration snapshot' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/managing-device-data/#managing-configurations\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </ng-container>\n </c8y-ui-empty-state>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1.EmptyStateContextDirective, selector: "[emptyStateContext]" }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1.ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "component", type: i1.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "hideReload"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i1.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i1.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i1.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] }); }
204
204
  }
205
205
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigurationListComponent, decorators: [{
206
206
  type: Component,