@c8y/ngx-components 1019.2.4 → 1019.2.9

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 (170) hide show
  1. package/NOTICES +26 -0
  2. package/core/common/forOf.directive.d.ts +10 -1
  3. package/core/common/forOf.directive.d.ts.map +1 -1
  4. package/core/common/geo.service.d.ts +9 -0
  5. package/core/common/geo.service.d.ts.map +1 -0
  6. package/core/common/index.d.ts +1 -0
  7. package/core/common/index.d.ts.map +1 -1
  8. package/core/common/load-more.component.d.ts +1 -0
  9. package/core/common/load-more.component.d.ts.map +1 -1
  10. package/core/core.module.d.ts +50 -49
  11. package/core/core.module.d.ts.map +1 -1
  12. package/core/index.d.ts +1 -0
  13. package/core/index.d.ts.map +1 -1
  14. package/core/realtime/realtime-button.component.d.ts +5 -2
  15. package/core/realtime/realtime-button.component.d.ts.map +1 -1
  16. package/core/router/context-route.service.d.ts +6 -5
  17. package/core/router/context-route.service.d.ts.map +1 -1
  18. package/core/time-interval/index.d.ts +3 -0
  19. package/core/time-interval/index.d.ts.map +1 -0
  20. package/core/time-interval/time-interval.component.d.ts +26 -0
  21. package/core/time-interval/time-interval.component.d.ts.map +1 -0
  22. package/core/time-interval/time-interval.model.d.ts +33 -0
  23. package/core/time-interval/time-interval.model.d.ts.map +1 -0
  24. package/esm2022/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +1 -1
  25. package/esm2022/core/audit-log/audit-log.component.mjs +1 -1
  26. package/esm2022/core/bootstrap/bootstrap.component.mjs +3 -3
  27. package/esm2022/core/common/forOf.directive.mjs +18 -2
  28. package/esm2022/core/common/geo.service.mjs +30 -0
  29. package/esm2022/core/common/index.mjs +2 -1
  30. package/esm2022/core/common/load-more.component.mjs +5 -2
  31. package/esm2022/core/core.module.mjs +11 -7
  32. package/esm2022/core/dynamic-forms/typeahead/typeahead.type.component.mjs +1 -1
  33. package/esm2022/core/index.mjs +2 -1
  34. package/esm2022/core/realtime/realtime-button.component.mjs +10 -4
  35. package/esm2022/core/router/context-route.service.mjs +10 -4
  36. package/esm2022/core/search/search-input.component.mjs +1 -1
  37. package/esm2022/core/time-interval/index.mjs +3 -0
  38. package/esm2022/core/time-interval/time-interval.component.mjs +85 -0
  39. package/esm2022/core/time-interval/time-interval.model.mjs +54 -0
  40. package/esm2022/datapoint-library/list/datapoint-library-list.component.mjs +2 -2
  41. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +1 -1
  42. package/esm2022/device-profile/device-profile-list.component.mjs +1 -1
  43. package/esm2022/device-profile/device-tab-profile/device-tab-profile.component.mjs +1 -1
  44. package/esm2022/device-shell/shell/shell.component.mjs +1 -1
  45. package/esm2022/diagnostics/diagnostics.component.mjs +1 -1
  46. package/esm2022/ecosystem/applications/install-from-package/install-from-package.component.mjs +1 -1
  47. package/esm2022/ecosystem/shared/package-version-select/package-version-select.component.mjs +1 -1
  48. package/esm2022/location/location.component.mjs +1 -1
  49. package/esm2022/map/cluster-map.component.mjs +7 -7
  50. package/esm2022/map/map.component.mjs +92 -36
  51. package/esm2022/map/map.model.mjs +3 -2
  52. package/esm2022/operations/bulk-operations-list/bulk-operations-list.component.mjs +1 -1
  53. package/esm2022/operations/bulk-single-operations-list/single-operations-list.component.mjs +1 -1
  54. package/esm2022/operations/operations-list/operations-list.component.mjs +1 -1
  55. package/esm2022/operations/operations-timeline/operations-timeline.component.mjs +1 -1
  56. package/esm2022/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.mjs +1 -1
  57. package/esm2022/operations/stepper-bulk-type-device-profile/select-device-profile-step.component.mjs +1 -1
  58. package/esm2022/operations/stepper-bulk-type-firmware/select-firmware.component.mjs +1 -1
  59. package/esm2022/operations/stepper-bulk-type-firmware/version-or-patch.component.mjs +1 -1
  60. package/esm2022/operations/stepper-bulk-type-software/select-software-step.component.mjs +1 -1
  61. package/esm2022/protocol-lpwan/lpwan-set-connections.component.mjs +1 -1
  62. package/esm2022/protocol-lpwan/lpwan-set-device-protocol.component.mjs +1 -1
  63. package/esm2022/repository/configuration/list/configuration-detail.component.mjs +1 -1
  64. package/esm2022/repository/configuration/list/configuration-list.component.mjs +1 -1
  65. package/esm2022/repository/firmware/list/add-firmware-modal.component.mjs +1 -1
  66. package/esm2022/repository/firmware/list/add-firmware-patch-modal.component.mjs +1 -1
  67. package/esm2022/repository/firmware/list/firmware-details.component.mjs +1 -1
  68. package/esm2022/repository/firmware/list/firmware-list.component.mjs +1 -1
  69. package/esm2022/repository/shared/software-type/software-type.component.mjs +1 -1
  70. package/esm2022/repository/software/device-tab/device-software-list.component.mjs +1 -1
  71. package/esm2022/repository/software/list/add-software-modal.component.mjs +1 -1
  72. package/esm2022/repository/software/list/columns/software-type.filtering-form-renderer.component.mjs +1 -1
  73. package/esm2022/repository/software/list/software-details.component.mjs +1 -1
  74. package/esm2022/sub-assets/location/asset-location.component.mjs +1 -1
  75. package/esm2022/tracking/c8y-ngx-components-tracking.mjs +5 -0
  76. package/esm2022/tracking/index.mjs +6 -0
  77. package/esm2022/tracking/tracking-marker-popup.component.mjs +34 -0
  78. package/esm2022/tracking/tracking-tab.guard.mjs +25 -0
  79. package/esm2022/tracking/tracking.component.mjs +92 -0
  80. package/esm2022/tracking/tracking.feature.mjs +16 -0
  81. package/esm2022/tracking/tracking.service.mjs +124 -0
  82. package/esm2022/trusted-certificates/crl/crl-settings.component.mjs +5 -5
  83. package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +1 -1
  84. package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +2 -2
  85. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +1 -1
  86. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  87. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +1 -1
  88. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  89. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +1 -1
  90. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  91. package/fesm2022/c8y-ngx-components-device-profile.mjs +2 -2
  92. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  93. package/fesm2022/c8y-ngx-components-device-shell.mjs +1 -1
  94. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-diagnostics.mjs +1 -1
  96. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  97. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +1 -1
  98. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  99. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1 -1
  100. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  101. package/fesm2022/c8y-ngx-components-location.mjs +1 -1
  102. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  103. package/fesm2022/c8y-ngx-components-map.mjs +95 -38
  104. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  105. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +1 -1
  106. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  107. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +1 -1
  108. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  109. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +1 -1
  110. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  111. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +1 -1
  112. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  113. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +1 -1
  114. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  115. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +1 -1
  116. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  117. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +2 -2
  118. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  119. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +1 -1
  120. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  121. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +2 -2
  122. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  123. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +2 -2
  124. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  125. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +4 -4
  126. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  127. package/fesm2022/c8y-ngx-components-repository-shared.mjs +1 -1
  128. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  129. package/fesm2022/c8y-ngx-components-repository-software.mjs +4 -4
  130. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  131. package/fesm2022/c8y-ngx-components-sub-assets.mjs +1 -1
  132. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  133. package/fesm2022/c8y-ngx-components-tracking.mjs +271 -0
  134. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -0
  135. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +5 -5
  136. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  137. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +1 -1
  138. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  139. package/fesm2022/c8y-ngx-components.mjs +204 -16
  140. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  141. package/locales/de.po +158 -83
  142. package/locales/en.po +6 -0
  143. package/locales/es.po +361 -205
  144. package/locales/fr.po +342 -186
  145. package/locales/locales.pot +40 -7
  146. package/locales/nl.po +326 -170
  147. package/locales/pl.po +60 -59
  148. package/locales/pt_BR.po +342 -186
  149. package/map/cluster-map.component.d.ts +3 -3
  150. package/map/cluster-map.component.d.ts.map +1 -1
  151. package/map/map.component.d.ts +17 -7
  152. package/map/map.component.d.ts.map +1 -1
  153. package/map/map.model.d.ts +14 -6
  154. package/map/map.model.d.ts.map +1 -1
  155. package/package.json +1 -1
  156. package/tracking/c8y-ngx-components-tracking.d.ts.map +1 -0
  157. package/tracking/index.d.ts +6 -0
  158. package/tracking/index.d.ts.map +1 -0
  159. package/tracking/tracking-marker-popup.component.d.ts +17 -0
  160. package/tracking/tracking-marker-popup.component.d.ts.map +1 -0
  161. package/tracking/tracking-tab.guard.d.ts +12 -0
  162. package/tracking/tracking-tab.guard.d.ts.map +1 -0
  163. package/tracking/tracking.component.d.ts +33 -0
  164. package/tracking/tracking.component.d.ts.map +1 -0
  165. package/tracking/tracking.feature.d.ts +3 -0
  166. package/tracking/tracking.feature.d.ts.map +1 -0
  167. package/tracking/tracking.service.d.ts +38 -0
  168. package/tracking/tracking.service.d.ts.map +1 -0
  169. package/trusted-certificates/crl/crl-settings.component.d.ts +1 -1
  170. package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
@@ -12,6 +12,7 @@ import { ClipboardModule } from './clipboard/clipboard.module';
12
12
  import { CommonModule } from './common/common.module';
13
13
  import { DashboardModule } from './dashboard/dashboard.module';
14
14
  import { DataGridModule } from './data-grid/data-grid.module';
15
+ import { DatePickerModule } from './date-picker/date-picker.module';
15
16
  import { DateTimePickerModule } from './date-time-picker/date-time-picker.module';
16
17
  import { DeviceStatusModule } from './device-status/device-status.module';
17
18
  import { DocsModule } from './docs/docs.module';
@@ -19,9 +20,8 @@ import { DrawerModule } from './drawer/drawer.module';
19
20
  import { DropAreaModule } from './drop-area/drop-area.module';
20
21
  import { DynamicComponentModule } from './dynamic-component/dynamic-component.module';
21
22
  import { DynamicFormsModule } from './dynamic-forms/dynamic-forms.module';
22
- import { FilePickerModule } from './file-picker/file-picker.module';
23
23
  import { FilePickerFormControlModule } from './file-picker-form-control/file-picker-form-control.module';
24
- import { DatePickerModule } from './date-picker/date-picker.module';
24
+ import { FilePickerModule } from './file-picker/file-picker.module';
25
25
  import { FormsModule as c8yFormsModule } from './forms/forms.module';
26
26
  import { HeaderModule } from './header/header.module';
27
27
  import { HelpModule } from './help/help.module';
@@ -42,6 +42,7 @@ import { SelectModalModule } from './select-modal/select-modal.module';
42
42
  import { SelectModule } from './select/select.module';
43
43
  import { StepperModule as c8yStepperModule } from './stepper/stepper.module';
44
44
  import { TabsModule } from './tabs/tabs.module';
45
+ import { TimeIntervalComponent } from './time-interval/time-interval.component';
45
46
  import { TimePickerModule } from './time-picker/time-picker.module';
46
47
  import { UiSettingsModule } from './ui-settings/ui-settings.module';
47
48
  import { UserModule } from './user/user.module';
@@ -56,7 +57,7 @@ export class CoreModule {
56
57
  };
57
58
  }
58
59
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
59
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: CoreModule, exports: [ApplicationModule,
60
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: CoreModule, imports: [TimeIntervalComponent], exports: [ApplicationModule,
60
61
  ActionBarModule,
61
62
  ActionModule,
62
63
  AlertModule,
@@ -103,8 +104,9 @@ export class CoreModule {
103
104
  DrawerModule,
104
105
  NavigatorTopModule,
105
106
  NavigatorBottomModule,
106
- UiSettingsModule] }); }
107
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreModule, imports: [ApplicationModule,
107
+ UiSettingsModule,
108
+ TimeIntervalComponent] }); }
109
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreModule, imports: [TimeIntervalComponent, ApplicationModule,
108
110
  ActionBarModule,
109
111
  ActionModule,
110
112
  AlertModule,
@@ -156,6 +158,7 @@ export class CoreModule {
156
158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreModule, decorators: [{
157
159
  type: NgModule,
158
160
  args: [{
161
+ imports: [TimeIntervalComponent],
159
162
  exports: [
160
163
  ApplicationModule,
161
164
  ActionBarModule,
@@ -204,8 +207,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
204
207
  DrawerModule,
205
208
  NavigatorTopModule,
206
209
  NavigatorBottomModule,
207
- UiSettingsModule
210
+ UiSettingsModule,
211
+ TimeIntervalComponent
208
212
  ]
209
213
  }]
210
214
  }] });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL2NvcmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENB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QVU7a0JBcER0QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxXQUFXO3dCQUNYLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixVQUFVO3dCQUNWLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0QixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLDJCQUEyQjt3QkFDM0IsZ0JBQWdCO3dCQUNoQix1QkFBdUI7d0JBQ3ZCLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLHVCQUF1Qjt3QkFDdkIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsZ0JBQWdCO3FCQUNqQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25CYXJNb2R1bGUgfSBmcm9tICcuL2FjdGlvbi1iYXIvYWN0aW9uLWJhci5tb2R1bGUnO1xuaW1wb3J0IHsgQWN0aW9uTW9kdWxlIH0gZnJvbSAnLi9hY3Rpb24vYWN0aW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBBbGVydE1vZHVsZSB9IGZyb20gJy4vYWxlcnQvYWxlcnQubW9kdWxlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTW9kdWxlIH0gZnJvbSAnLi9hcHBsaWNhdGlvbi9hcHBsaWNhdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgQXNzZXRUeXBlc01vZHVsZSB9IGZyb20gJy4vYXNzZXQtdHlwZXMvYXNzZXQtdHlwZXMubW9kdWxlJztcbmltcG9ydCB7IEF1ZGl0TG9nTW9kdWxlIH0gZnJvbSAnLi9hdWRpdC1sb2cvYXVkaXQtbG9nLm1vZHVsZSc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbk1vZHVsZSB9IGZyb20gJy4vYXV0aGVudGljYXRpb24vYXV0aGVudGljYXRpb24ubW9kdWxlJztcbmltcG9ydCB7IEJvb3RzdHJhcE1vZHVsZSB9IGZyb20gJy4vYm9vdHN0cmFwL2Jvb3RzdHJhcC5tb2R1bGUnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYk1vZHVsZSB9IGZyb20gJy4vYnJlYWRjcnVtYi9icmVhZGNydW1iLm1vZHVsZSc7XG5pbXBvcnQgeyBDbGlwYm9hcmRNb2R1bGUgfSBmcm9tICcuL2NsaXBib2FyZC9jbGlwYm9hcmQubW9kdWxlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJy4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xuaW1wb3J0IHsgRGFzaGJvYXJkTW9kdWxlIH0gZnJvbSAnLi9kYXNoYm9hcmQvZGFzaGJvYXJkLm1vZHVsZSc7XG5pbXBvcnQgeyBEYXRhR3JpZE1vZHVsZSB9IGZyb20gJy4vZGF0YS1ncmlkL2RhdGEtZ3JpZC5tb2R1bGUnO1xuaW1wb3J0IHsgRGF0ZVRpbWVQaWNrZXJNb2R1bGUgfSBmcm9tICcuL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHsgRGV2aWNlU3RhdHVzTW9kdWxlIH0gZnJvbSAnLi9kZXZpY2Utc3RhdHVzL2RldmljZS1zdGF0dXMubW9kdWxlJztcbmltcG9ydCB7IERvY3NNb2R1bGUgfSBmcm9tICcuL2RvY3MvZG9jcy5tb2R1bGUnO1xuaW1wb3J0IHsgRHJhd2VyTW9kdWxlIH0gZnJvbSAnLi9kcmF3ZXIvZHJhd2VyLm1vZHVsZSc7XG5pbXBvcnQgeyBEcm9wQXJlYU1vZHVsZSB9IGZyb20gJy4vZHJvcC1hcmVhL2Ryb3AtYXJlYS5tb2R1bGUnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQubW9kdWxlJztcbmltcG9ydCB7IER5bmFtaWNGb3Jtc01vZHVsZSB9IGZyb20gJy4vZHluYW1pYy1mb3Jtcy9keW5hbWljLWZvcm1zLm1vZHVsZSc7XG5pbXBvcnQgeyBGaWxlUGlja2VyTW9kdWxlIH0gZnJvbSAnLi9maWxlLXBpY2tlci9maWxlLXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHsgRmlsZVBpY2tlckZvcm1Db250cm9sTW9kdWxlIH0gZnJvbSAnLi9maWxlLXBpY2tlci1mb3JtLWNvbnRyb2wvZmlsZS1waWNrZXItZm9ybS1jb250cm9sLm1vZHVsZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyTW9kdWxlIH0gZnJvbSAnLi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgYXMgYzh5Rm9ybXNNb2R1bGUgfSBmcm9tICcuL2Zvcm1zL2Zvcm1zLm1vZHVsZSc7XG5pbXBvcnQgeyBIZWFkZXJNb2R1bGUgfSBmcm9tICcuL2hlYWRlci9oZWFkZXIubW9kdWxlJztcbmltcG9ydCB7IEhlbHBNb2R1bGUgfSBmcm9tICcuL2hlbHAvaGVscC5tb2R1bGUnO1xuaW1wb3J0IHsgTGlzdERpc3BsYXlTd2l0Y2hNb2R1bGUgfSBmcm9tICcuL2xpc3QtZGlzcGxheS1zd2l0Y2gvbGlzdC1kaXNwbGF5LXN3aXRjaC5tb2R1bGUnO1xuaW1wb3J0IHsgTGlzdEdyb3VwTW9kdWxlIH0gZnJvbSAnLi9saXN0LWdyb3VwL2xpc3QtZ3JvdXAubW9kdWxlJztcbmltcG9ydCB7IExvZ2luTW9kdWxlIH0gZnJvbSAnLi9sb2dpbi9sb2dpbi5tb2R1bGUnO1xuaW1wb3J0IHsgTW9kYWxNb2R1bGUgfSBmcm9tICcuL21vZGFsL21vZGFsLm1vZHVsZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JCb3R0b21Nb2R1bGUgfSBmcm9tICcuL25hdmlnYXRvci9uYXZpZ2F0b3ItYm90dG9tL25hdmlnYXRvci1ib3R0b20ubW9kdWxlJztcbmltcG9ydCB7IE5hdmlnYXRvclRvcE1vZHVsZSB9IGZyb20gJy4vbmF2aWdhdG9yL25hdmlnYXRvci10b3AvbmF2aWdhdG9yLXRvcC5tb2R1bGUnO1xuaW1wb3J0IHsgTmF2aWdhdG9yTW9kdWxlIH0gZnJvbSAnLi9uYXZpZ2F0b3IvbmF2aWdhdG9yLm1vZHVsZSc7XG5pbXBvcnQgeyBQbHVnaW5zTW9kdWxlIH0gZnJvbSAnLi9wbHVnaW5zL3BsdWdpbnMubW9kdWxlJztcbmltcG9ydCB7IFByb2R1Y3RFeHBlcmllbmNlTW9kdWxlIH0gZnJvbSAnLi9wcm9kdWN0LWV4cGVyaWVuY2UvcHJvZHVjdC1leHBlcmllbmNlLm1vZHVsZSc7XG5pbXBvcnQgeyBQcm9wZXJ0aWVzTGlzdE1vZHVsZSB9IGZyb20gJy4vcHJvcGVydGllcy1saXN0L3Byb3BlcnRpZXMtbGlzdC5tb2R1bGUnO1xuaW1wb3J0IHsgUmFuZ2VEaXNwbGF5TW9kdWxlIH0gZnJvbSAnLi9yYW5nZS1kaXNwbGF5L3JhbmdlLWRpc3BsYXkubW9kdWxlJztcbmltcG9ydCB7IFJlYWx0aW1lTW9kdWxlIH0gZnJvbSAnLi9yZWFsdGltZS9yZWFsdGltZS5tb2R1bGUnO1xuaW1wb3J0IHsgQ29yZVNlYXJjaE1vZHVsZSB9IGZyb20gJy4vc2VhcmNoL3NlYXJjaC5tb2R1bGUnO1xuaW1wb3J0IHsgU2VsZWN0TW9kYWxNb2R1bGUgfSBmcm9tICcuL3NlbGVjdC1tb2RhbC9zZWxlY3QtbW9kYWwubW9kdWxlJztcbmltcG9ydCB7IFNlbGVjdE1vZHVsZSB9IGZyb20gJy4vc2VsZWN0L3NlbGVjdC5tb2R1bGUnO1xuaW1wb3J0IHsgU3RlcHBlck1vZHVsZSBhcyBjOHlTdGVwcGVyTW9kdWxlIH0gZnJvbSAnLi9zdGVwcGVyL3N0ZXBwZXIubW9kdWxlJztcbmltcG9ydCB7IFRhYnNNb2R1bGUgfSBmcm9tICcuL3RhYnMvdGFicy5tb2R1bGUnO1xuaW1wb3J0IHsgVGltZVBpY2tlck1vZHVsZSB9IGZyb20gJy4vdGltZS1waWNrZXIvdGltZS1waWNrZXIubW9kdWxlJztcbmltcG9ydCB7IFVpU2V0dGluZ3NNb2R1bGUgfSBmcm9tICcuL3VpLXNldHRpbmdzL3VpLXNldHRpbmdzLm1vZHVsZSc7XG5pbXBvcnQgeyBVc2VyTW9kdWxlIH0gZnJvbSAnLi91c2VyL3VzZXIubW9kdWxlJztcbmltcG9ydCB7IFZlcnNpb25Nb2R1bGUgfSBmcm9tICcuL3ZlcnNpb24vdmVyc2lvbi5tb2R1bGUnO1xuaW1wb3J0IHsgV2l6YXJkTW9kdWxlIH0gZnJvbSAnLi93aXphcmQvd2l6YXJkLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtcbiAgICBBcHBsaWNhdGlvbk1vZHVsZSxcbiAgICBBY3Rpb25CYXJNb2R1bGUsXG4gICAgQWN0aW9uTW9kdWxlLFxuICAgIEFsZXJ0TW9kdWxlLFxuICAgIEF1ZGl0TG9nTW9kdWxlLFxuICAgIEJvb3RzdHJhcE1vZHVsZSxcbiAgICBCcmVhZGNydW1iTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEYXRhR3JpZE1vZHVsZSxcbiAgICBEcm9wQXJlYU1vZHVsZSxcbiAgICBIZWFkZXJNb2R1bGUsXG4gICAgTG9naW5Nb2R1bGUsXG4gICAgTW9kYWxNb2R1bGUsXG4gICAgTmF2aWdhdG9yTW9kdWxlLFxuICAgIEF1dGhlbnRpY2F0aW9uTW9kdWxlLFxuICAgIENvcmVTZWFyY2hNb2R1bGUsXG4gICAgU2VsZWN0TW9kdWxlLFxuICAgIFRhYnNNb2R1bGUsXG4gICAgVXNlck1vZHVsZSxcbiAgICBjOHlGb3Jtc01vZHVsZSxcbiAgICBEZXZpY2VTdGF0dXNNb2R1bGUsXG4gICAgRG9jc01vZHVsZSxcbiAgICBjOHlTdGVwcGVyTW9kdWxlLFxuICAgIER5bmFtaWNDb21wb25lbnRNb2R1bGUsXG4gICAgRGFzaGJvYXJkTW9kdWxlLFxuICAgIExpc3RHcm91cE1vZHVsZSxcbiAgICBTZWxlY3RNb2RhbE1vZHVsZSxcbiAgICBGaWxlUGlja2VyTW9kdWxlLFxuICAgIEZpbGVQaWNrZXJGb3JtQ29udHJvbE1vZHVsZSxcbiAgICBEYXRlUGlja2VyTW9kdWxlLFxuICAgIFByb2R1Y3RFeHBlcmllbmNlTW9kdWxlLFxuICAgIEhlbHBNb2R1bGUsXG4gICAgUmVhbHRpbWVNb2R1bGUsXG4gICAgUmFuZ2VEaXNwbGF5TW9kdWxlLFxuICAgIExpc3REaXNwbGF5U3dpdGNoTW9kdWxlLFxuICAgIFdpemFyZE1vZHVsZSxcbiAgICBQbHVnaW5zTW9kdWxlLFxuICAgIER5bmFtaWNGb3Jtc01vZHVsZSxcbiAgICBQcm9wZXJ0aWVzTGlzdE1vZHVsZSxcbiAgICBBc3NldFR5cGVzTW9kdWxlLFxuICAgIERhdGVUaW1lUGlja2VyTW9kdWxlLFxuICAgIFRpbWVQaWNrZXJNb2R1bGUsXG4gICAgQ2xpcGJvYXJkTW9kdWxlLFxuICAgIFZlcnNpb25Nb2R1bGUsXG4gICAgRHJhd2VyTW9kdWxlLFxuICAgIE5hdmlnYXRvclRvcE1vZHVsZSxcbiAgICBOYXZpZ2F0b3JCb3R0b21Nb2R1bGUsXG4gICAgVWlTZXR0aW5nc01vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENvcmVNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPENvcmVNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IENvcmVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFsuLi5Db21tb25Nb2R1bGUucHJvdmlkZXJzKCksIC4uLkxvZ2luTW9kdWxlLnByb3ZpZGVycygpXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL2NvcmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0Is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QWdCO1lBQ2hCLGVBQWU7WUFDZixhQUFhO1lBQ2IsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixxQkFBcUI7WUFDckIsZ0JBQWdCOzs0RkFJUCxVQUFVO2tCQXREdEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDaEMsT0FBTyxFQUFFO3dCQUNQLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsMkJBQTJCO3dCQUMzQixnQkFBZ0I7d0JBQ2hCLHVCQUF1Qjt3QkFDdkIsVUFBVTt3QkFDVixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2QixZQUFZO3dCQUNaLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjtxQkFDdEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uQmFyTW9kdWxlIH0gZnJvbSAnLi9hY3Rpb24tYmFyL2FjdGlvbi1iYXIubW9kdWxlJztcbmltcG9ydCB7IEFjdGlvbk1vZHVsZSB9IGZyb20gJy4vYWN0aW9uL2FjdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgQWxlcnRNb2R1bGUgfSBmcm9tICcuL2FsZXJ0L2FsZXJ0Lm1vZHVsZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbk1vZHVsZSB9IGZyb20gJy4vYXBwbGljYXRpb24vYXBwbGljYXRpb24ubW9kdWxlJztcbmltcG9ydCB7IEFzc2V0VHlwZXNNb2R1bGUgfSBmcm9tICcuL2Fzc2V0LXR5cGVzL2Fzc2V0LXR5cGVzLm1vZHVsZSc7XG5pbXBvcnQgeyBBdWRpdExvZ01vZHVsZSB9IGZyb20gJy4vYXVkaXQtbG9nL2F1ZGl0LWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2R1bGUgfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uL2F1dGhlbnRpY2F0aW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBCb290c3RyYXBNb2R1bGUgfSBmcm9tICcuL2Jvb3RzdHJhcC9ib290c3RyYXAubW9kdWxlJztcbmltcG9ydCB7IEJyZWFkY3J1bWJNb2R1bGUgfSBmcm9tICcuL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkTW9kdWxlIH0gZnJvbSAnLi9jbGlwYm9hcmQvY2xpcGJvYXJkLm1vZHVsZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICcuL2NvbW1vbi9jb21tb24ubW9kdWxlJztcbmltcG9ydCB7IERhc2hib2FyZE1vZHVsZSB9IGZyb20gJy4vZGFzaGJvYXJkL2Rhc2hib2FyZC5tb2R1bGUnO1xuaW1wb3J0IHsgRGF0YUdyaWRNb2R1bGUgfSBmcm9tICcuL2RhdGEtZ3JpZC9kYXRhLWdyaWQubW9kdWxlJztcbmltcG9ydCB7IERhdGVQaWNrZXJNb2R1bGUgfSBmcm9tICcuL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLm1vZHVsZSc7XG5pbXBvcnQgeyBEYXRlVGltZVBpY2tlck1vZHVsZSB9IGZyb20gJy4vZGF0ZS10aW1lLXBpY2tlci9kYXRlLXRpbWUtcGlja2VyLm1vZHVsZSc7XG5pbXBvcnQgeyBEZXZpY2VTdGF0dXNNb2R1bGUgfSBmcm9tICcuL2RldmljZS1zdGF0dXMvZGV2aWNlLXN0YXR1cy5tb2R1bGUnO1xuaW1wb3J0IHsgRG9jc01vZHVsZSB9IGZyb20gJy4vZG9jcy9kb2NzLm1vZHVsZSc7XG5pbXBvcnQgeyBEcmF3ZXJNb2R1bGUgfSBmcm9tICcuL2RyYXdlci9kcmF3ZXIubW9kdWxlJztcbmltcG9ydCB7IERyb3BBcmVhTW9kdWxlIH0gZnJvbSAnLi9kcm9wLWFyZWEvZHJvcC1hcmVhLm1vZHVsZSc7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1zTW9kdWxlIH0gZnJvbSAnLi9keW5hbWljLWZvcm1zL2R5bmFtaWMtZm9ybXMubW9kdWxlJztcbmltcG9ydCB7IEZpbGVQaWNrZXJGb3JtQ29udHJvbE1vZHVsZSB9IGZyb20gJy4vZmlsZS1waWNrZXItZm9ybS1jb250cm9sL2ZpbGUtcGlja2VyLWZvcm0tY29udHJvbC5tb2R1bGUnO1xuaW1wb3J0IHsgRmlsZVBpY2tlck1vZHVsZSB9IGZyb20gJy4vZmlsZS1waWNrZXIvZmlsZS1waWNrZXIubW9kdWxlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIGFzIGM4eUZvcm1zTW9kdWxlIH0gZnJvbSAnLi9mb3Jtcy9mb3Jtcy5tb2R1bGUnO1xuaW1wb3J0IHsgSGVhZGVyTW9kdWxlIH0gZnJvbSAnLi9oZWFkZXIvaGVhZGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBIZWxwTW9kdWxlIH0gZnJvbSAnLi9oZWxwL2hlbHAubW9kdWxlJztcbmltcG9ydCB7IExpc3REaXNwbGF5U3dpdGNoTW9kdWxlIH0gZnJvbSAnLi9saXN0LWRpc3BsYXktc3dpdGNoL2xpc3QtZGlzcGxheS1zd2l0Y2gubW9kdWxlJztcbmltcG9ydCB7IExpc3RHcm91cE1vZHVsZSB9IGZyb20gJy4vbGlzdC1ncm91cC9saXN0LWdyb3VwLm1vZHVsZSc7XG5pbXBvcnQgeyBMb2dpbk1vZHVsZSB9IGZyb20gJy4vbG9naW4vbG9naW4ubW9kdWxlJztcbmltcG9ydCB7IE1vZGFsTW9kdWxlIH0gZnJvbSAnLi9tb2RhbC9tb2RhbC5tb2R1bGUnO1xuaW1wb3J0IHsgTmF2aWdhdG9yQm90dG9tTW9kdWxlIH0gZnJvbSAnLi9uYXZpZ2F0b3IvbmF2aWdhdG9yLWJvdHRvbS9uYXZpZ2F0b3ItYm90dG9tLm1vZHVsZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JUb3BNb2R1bGUgfSBmcm9tICcuL25hdmlnYXRvci9uYXZpZ2F0b3ItdG9wL25hdmlnYXRvci10b3AubW9kdWxlJztcbmltcG9ydCB7IE5hdmlnYXRvck1vZHVsZSB9IGZyb20gJy4vbmF2aWdhdG9yL25hdmlnYXRvci5tb2R1bGUnO1xuaW1wb3J0IHsgUGx1Z2luc01vZHVsZSB9IGZyb20gJy4vcGx1Z2lucy9wbHVnaW5zLm1vZHVsZSc7XG5pbXBvcnQgeyBQcm9kdWN0RXhwZXJpZW5jZU1vZHVsZSB9IGZyb20gJy4vcHJvZHVjdC1leHBlcmllbmNlL3Byb2R1Y3QtZXhwZXJpZW5jZS5tb2R1bGUnO1xuaW1wb3J0IHsgUHJvcGVydGllc0xpc3RNb2R1bGUgfSBmcm9tICcuL3Byb3BlcnRpZXMtbGlzdC9wcm9wZXJ0aWVzLWxpc3QubW9kdWxlJztcbmltcG9ydCB7IFJhbmdlRGlzcGxheU1vZHVsZSB9IGZyb20gJy4vcmFuZ2UtZGlzcGxheS9yYW5nZS1kaXNwbGF5Lm1vZHVsZSc7XG5pbXBvcnQgeyBSZWFsdGltZU1vZHVsZSB9IGZyb20gJy4vcmVhbHRpbWUvcmVhbHRpbWUubW9kdWxlJztcbmltcG9ydCB7IENvcmVTZWFyY2hNb2R1bGUgfSBmcm9tICcuL3NlYXJjaC9zZWFyY2gubW9kdWxlJztcbmltcG9ydCB7IFNlbGVjdE1vZGFsTW9kdWxlIH0gZnJvbSAnLi9zZWxlY3QtbW9kYWwvc2VsZWN0LW1vZGFsLm1vZHVsZSc7XG5pbXBvcnQgeyBTZWxlY3RNb2R1bGUgfSBmcm9tICcuL3NlbGVjdC9zZWxlY3QubW9kdWxlJztcbmltcG9ydCB7IFN0ZXBwZXJNb2R1bGUgYXMgYzh5U3RlcHBlck1vZHVsZSB9IGZyb20gJy4vc3RlcHBlci9zdGVwcGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBUYWJzTW9kdWxlIH0gZnJvbSAnLi90YWJzL3RhYnMubW9kdWxlJztcbmltcG9ydCB7IFRpbWVJbnRlcnZhbENvbXBvbmVudCB9IGZyb20gJy4vdGltZS1pbnRlcnZhbC90aW1lLWludGVydmFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyTW9kdWxlIH0gZnJvbSAnLi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHsgVWlTZXR0aW5nc01vZHVsZSB9IGZyb20gJy4vdWktc2V0dGluZ3MvdWktc2V0dGluZ3MubW9kdWxlJztcbmltcG9ydCB7IFVzZXJNb2R1bGUgfSBmcm9tICcuL3VzZXIvdXNlci5tb2R1bGUnO1xuaW1wb3J0IHsgVmVyc2lvbk1vZHVsZSB9IGZyb20gJy4vdmVyc2lvbi92ZXJzaW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBXaXphcmRNb2R1bGUgfSBmcm9tICcuL3dpemFyZC93aXphcmQubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1RpbWVJbnRlcnZhbENvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtcbiAgICBBcHBsaWNhdGlvbk1vZHVsZSxcbiAgICBBY3Rpb25CYXJNb2R1bGUsXG4gICAgQWN0aW9uTW9kdWxlLFxuICAgIEFsZXJ0TW9kdWxlLFxuICAgIEF1ZGl0TG9nTW9kdWxlLFxuICAgIEJvb3RzdHJhcE1vZHVsZSxcbiAgICBCcmVhZGNydW1iTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEYXRhR3JpZE1vZHVsZSxcbiAgICBEcm9wQXJlYU1vZHVsZSxcbiAgICBIZWFkZXJNb2R1bGUsXG4gICAgTG9naW5Nb2R1bGUsXG4gICAgTW9kYWxNb2R1bGUsXG4gICAgTmF2aWdhdG9yTW9kdWxlLFxuICAgIEF1dGhlbnRpY2F0aW9uTW9kdWxlLFxuICAgIENvcmVTZWFyY2hNb2R1bGUsXG4gICAgU2VsZWN0TW9kdWxlLFxuICAgIFRhYnNNb2R1bGUsXG4gICAgVXNlck1vZHVsZSxcbiAgICBjOHlGb3Jtc01vZHVsZSxcbiAgICBEZXZpY2VTdGF0dXNNb2R1bGUsXG4gICAgRG9jc01vZHVsZSxcbiAgICBjOHlTdGVwcGVyTW9kdWxlLFxuICAgIER5bmFtaWNDb21wb25lbnRNb2R1bGUsXG4gICAgRGFzaGJvYXJkTW9kdWxlLFxuICAgIExpc3RHcm91cE1vZHVsZSxcbiAgICBTZWxlY3RNb2RhbE1vZHVsZSxcbiAgICBGaWxlUGlja2VyTW9kdWxlLFxuICAgIEZpbGVQaWNrZXJGb3JtQ29udHJvbE1vZHVsZSxcbiAgICBEYXRlUGlja2VyTW9kdWxlLFxuICAgIFByb2R1Y3RFeHBlcmllbmNlTW9kdWxlLFxuICAgIEhlbHBNb2R1bGUsXG4gICAgUmVhbHRpbWVNb2R1bGUsXG4gICAgUmFuZ2VEaXNwbGF5TW9kdWxlLFxuICAgIExpc3REaXNwbGF5U3dpdGNoTW9kdWxlLFxuICAgIFdpemFyZE1vZHVsZSxcbiAgICBQbHVnaW5zTW9kdWxlLFxuICAgIER5bmFtaWNGb3Jtc01vZHVsZSxcbiAgICBQcm9wZXJ0aWVzTGlzdE1vZHVsZSxcbiAgICBBc3NldFR5cGVzTW9kdWxlLFxuICAgIERhdGVUaW1lUGlja2VyTW9kdWxlLFxuICAgIFRpbWVQaWNrZXJNb2R1bGUsXG4gICAgQ2xpcGJvYXJkTW9kdWxlLFxuICAgIFZlcnNpb25Nb2R1bGUsXG4gICAgRHJhd2VyTW9kdWxlLFxuICAgIE5hdmlnYXRvclRvcE1vZHVsZSxcbiAgICBOYXZpZ2F0b3JCb3R0b21Nb2R1bGUsXG4gICAgVWlTZXR0aW5nc01vZHVsZSxcbiAgICBUaW1lSW50ZXJ2YWxDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDb3JlTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxDb3JlTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBDb3JlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbLi4uQ29tbW9uTW9kdWxlLnByb3ZpZGVycygpLCAuLi5Mb2dpbk1vZHVsZS5wcm92aWRlcnMoKV1cbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -73,7 +73,7 @@ export class TypeaheadTypeComponent extends FieldType {
73
73
  }));
74
74
  }
75
75
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TypeaheadTypeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TypeaheadTypeComponent, selector: "c8y-typeahead-type", usesInheritance: true, ngImport: i0, template: "<c8y-typeahead\n [required]=\"to?.required || false\"\n [placeholder]=\"placeholder$ | async\"\n [displayProperty]=\"to?.displayProperty\"\n [selected]=\"selected\"\n [allowFreeEntries]=\"to?.allowFreeEntries || false\"\n [container]=\"to?.container || ''\"\n [disabled]=\"to?.disabled\"\n (onSearch)=\"setPipe($event)\"\n [formControl]=\"formControl\"\n [class.is-invalid]=\"showError\"\n [formlyAttributes]=\"field\">\n <c8y-li *c8yFor=\"let opt of to?.c8yForOptions; loadMore: to?.loadMore || 'auto'; pipe: filterPipe; notFound: notFoundTemplate; loadingTemplate: loading;\"\n (click)=\"selectOption(opt); setPipe('')\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [attr.role]=\"'menuitem'\">\n <c8y-highlight [text]=\"opt[labelProp]\" [pattern]=\"pattern\"></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"pattern.length > 0 && !match\">\n <p><strong translate>No match found.</strong></p>\n </c8y-li>\n </ng-template>\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-8 p-relative\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n</c8y-typeahead>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i5.LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "component", type: i8.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: i9.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i10.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TypeaheadTypeComponent, selector: "c8y-typeahead-type", usesInheritance: true, ngImport: i0, template: "<c8y-typeahead\n [required]=\"to?.required || false\"\n [placeholder]=\"placeholder$ | async\"\n [displayProperty]=\"to?.displayProperty\"\n [selected]=\"selected\"\n [allowFreeEntries]=\"to?.allowFreeEntries || false\"\n [container]=\"to?.container || ''\"\n [disabled]=\"to?.disabled\"\n (onSearch)=\"setPipe($event)\"\n [formControl]=\"formControl\"\n [class.is-invalid]=\"showError\"\n [formlyAttributes]=\"field\">\n <c8y-li *c8yFor=\"let opt of to?.c8yForOptions; loadMore: to?.loadMore || 'auto'; pipe: filterPipe; notFound: notFoundTemplate; loadingTemplate: loading;\"\n (click)=\"selectOption(opt); setPipe('')\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [attr.role]=\"'menuitem'\">\n <c8y-highlight [text]=\"opt[labelProp]\" [pattern]=\"pattern\"></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"pattern.length > 0 && !match\">\n <p><strong translate>No match found.</strong></p>\n </c8y-li>\n </ng-template>\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-8 p-relative\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n</c8y-typeahead>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForLoadMoreComponent"] }, { kind: "component", type: i5.LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "component", type: i8.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: i9.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i10.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
77
77
  }
78
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TypeaheadTypeComponent, decorators: [{
79
79
  type: Component,
@@ -43,6 +43,7 @@ export * from './wizard/index';
43
43
  export * from './properties-list/index';
44
44
  export * from './core.module';
45
45
  export * from './wizard/index';
46
+ export * from './time-interval/index';
46
47
  export * from './date-time-picker/index';
47
48
  export * from './time-picker/index';
48
49
  export * from './asset-types/index';
@@ -53,4 +54,4 @@ export * from './version/index';
53
54
  export * from './drawer/index';
54
55
  export * from './ui-settings/index';
55
56
  export * from './shared/hooks';
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb24vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24tYmFyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vYWxlcnQvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9ib290c3RyYXAvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1iL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vYm90dG9tLWRyYXdlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2hlYWRlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2kxOG4vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2dpbi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGFsL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbmF2aWdhdG9yL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aGVudGljYXRpb24vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZHJvcC1hcmVhL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS1waWNrZXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXBpY2tlci1mb3JtLWNvbnRyb2wvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlLXBpY2tlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3Jtcy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2RldmljZS1zdGF0dXMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9kb2NzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1mb3Jtcy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2R5bmFtaWMtY29tcG9uZW50L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZGFzaGJvYXJkL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vc3RlcHBlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xpc3QtZ3JvdXAvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9xdWlja2xpbmsvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm92aWRlci1jb25maWd1cmF0aW9uL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1ncmlkL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0LW1vZGFsL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZHVjdC1leHBlcmllbmNlL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vaGVscC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3JlYWx0aW1lL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2lucy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3JhbmdlLWRpc3BsYXkvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXR1cC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3dpemFyZC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3BlcnRpZXMtbGlzdC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vd2l6YXJkL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS10aW1lLXBpY2tlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3RpbWUtcGlja2VyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vYXNzZXQtdHlwZXMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9hdWRpdC1sb2cvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0LWRpc3BsYXktc3dpdGNoL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vY2xpcGJvYXJkL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vdmVyc2lvbi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2RyYXdlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3VpLXNldHRpbmdzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vc2hhcmVkL2hvb2tzJztcbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcHBsaWNhdGlvbi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi1iYXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9hbGVydC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2Jvb3RzdHJhcC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9ib3R0b20tZHJhd2VyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vaGVhZGVyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vaTE4bi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xvZ2luL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kYWwvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0b3IvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoZW50aWNhdGlvbi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3RhYnMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wLWFyZWEvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXBpY2tlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtcGlja2VyLWZvcm0tY29udHJvbC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGUtcGlja2VyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3JvdXRlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1zL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZGV2aWNlLXN0YXR1cy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2RvY3MvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljLWZvcm1zL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoYm9hcmQvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGVwcGVyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbGlzdC1ncm91cC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3F1aWNrbGluay9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGVyLWNvbmZpZ3VyYXRpb24vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhLWdyaWQvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QtbW9kYWwvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9kdWN0LWV4cGVyaWVuY2UvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcmVhbHRpbWUvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW5zL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcmFuZ2UtZGlzcGxheS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3NldHVwL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vd2l6YXJkL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcHJvcGVydGllcy1saXN0L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vY29yZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi93aXphcmQvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi90aW1lLWludGVydmFsL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS10aW1lLXBpY2tlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3RpbWUtcGlja2VyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vYXNzZXQtdHlwZXMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9hdWRpdC1sb2cvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0LWRpc3BsYXktc3dpdGNoL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vY2xpcGJvYXJkL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vdmVyc2lvbi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2RyYXdlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3VpLXNldHRpbmdzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vc2hhcmVkL2hvb2tzJztcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Component, Input } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { gettext } from '../i18n/gettext';
3
3
  import { RealtimeService } from './realtime.service';
4
4
  import * as i0 from "@angular/core";
@@ -8,6 +8,7 @@ export class RealtimeButtonComponent {
8
8
  constructor() {
9
9
  this.label = gettext('Realtime');
10
10
  this.title = gettext('Toggle realtime');
11
+ this.onToggle = new EventEmitter();
11
12
  }
12
13
  get active() {
13
14
  return !!this.service && this.service.active;
@@ -15,19 +16,24 @@ export class RealtimeButtonComponent {
15
16
  toggle() {
16
17
  if (this.service) {
17
18
  this.active ? this.service.stop() : this.service.start();
19
+ this.onToggle.emit(this.active);
18
20
  }
19
21
  }
20
22
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RealtimeButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: { service: "service", label: "label", title: "title" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"btn btn-link c8y-realtime\"\n title=\"{{ title | translate }}\"\n (click)=\"toggle()\"\n>\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: active, inactive: !active }\"></span>\n <span>{{ label | translate }}</span>\n</button>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
23
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: { service: "service", label: "label", title: "title", disabled: "disabled" }, outputs: { onToggle: "onToggle" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"btn btn-link c8y-realtime\"\n [title]=\"title | translate\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\"\n>\n <span\n class=\"c8y-pulse\"\n [ngClass]=\"{ active: active, inactive: !active }\"\n ></span>\n <span>{{ label | translate }}</span>\n</button>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
22
24
  }
23
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RealtimeButtonComponent, decorators: [{
24
26
  type: Component,
25
- args: [{ selector: 'c8y-realtime-btn', template: "<button\n type=\"button\"\n class=\"btn btn-link c8y-realtime\"\n title=\"{{ title | translate }}\"\n (click)=\"toggle()\"\n>\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: active, inactive: !active }\"></span>\n <span>{{ label | translate }}</span>\n</button>\n" }]
27
+ args: [{ selector: 'c8y-realtime-btn', template: "<button\n type=\"button\"\n class=\"btn btn-link c8y-realtime\"\n [title]=\"title | translate\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\"\n>\n <span\n class=\"c8y-pulse\"\n [ngClass]=\"{ active: active, inactive: !active }\"\n ></span>\n <span>{{ label | translate }}</span>\n</button>\n" }]
26
28
  }], propDecorators: { service: [{
27
29
  type: Input
28
30
  }], label: [{
29
31
  type: Input
30
32
  }], title: [{
31
33
  type: Input
34
+ }], disabled: [{
35
+ type: Input
36
+ }], onToggle: [{
37
+ type: Output
32
38
  }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhbHRpbWUtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcmVhbHRpbWUvcmVhbHRpbWUtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvcmVhbHRpbWUvcmVhbHRpbWUtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFNckQsTUFBTSxPQUFPLHVCQUF1QjtJQUpwQztRQVFFLFVBQUssR0FBVyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEMsVUFBSyxHQUFXLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBVzVDO0lBVEMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzFEO0lBQ0gsQ0FBQzsrR0FoQlUsdUJBQXVCO21HQUF2Qix1QkFBdUIsd0hDUnBDLGlSQVNBOzs0RkREYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0Usa0JBQWtCOzhCQUs1QixPQUFPO3NCQUROLEtBQUs7Z0JBR04sS0FBSztzQkFESixLQUFLO2dCQUdOLEtBQUs7c0JBREosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuL2dldHRleHQnO1xuaW1wb3J0IHsgUmVhbHRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9yZWFsdGltZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXJlYWx0aW1lLWJ0bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWFsdGltZS1idXR0b24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFJlYWx0aW1lQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgc2VydmljZTogUmVhbHRpbWVTZXJ2aWNlPGFueT47XG4gIEBJbnB1dCgpXG4gIGxhYmVsOiBzdHJpbmcgPSBnZXR0ZXh0KCdSZWFsdGltZScpO1xuICBASW5wdXQoKVxuICB0aXRsZTogc3RyaW5nID0gZ2V0dGV4dCgnVG9nZ2xlIHJlYWx0aW1lJyk7XG5cbiAgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnNlcnZpY2UgJiYgdGhpcy5zZXJ2aWNlLmFjdGl2ZTtcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLmFjdGl2ZSA/IHRoaXMuc2VydmljZS5zdG9wKCkgOiB0aGlzLnNlcnZpY2Uuc3RhcnQoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgdHlwZT1cImJ1dHRvblwiXG4gIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGM4eS1yZWFsdGltZVwiXG4gIHRpdGxlPVwie3sgdGl0bGUgfCB0cmFuc2xhdGUgfX1cIlxuICAoY2xpY2spPVwidG9nZ2xlKClcIlxuPlxuICA8c3BhbiBjbGFzcz1cImM4eS1wdWxzZVwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBhY3RpdmUsIGluYWN0aXZlOiAhYWN0aXZlIH1cIj48L3NwYW4+XG4gIDxzcGFuPnt7IGxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhbHRpbWUtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcmVhbHRpbWUvcmVhbHRpbWUtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvcmVhbHRpbWUvcmVhbHRpbWUtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQU1yRCxNQUFNLE9BQU8sdUJBQXVCO0lBSnBDO1FBUUUsVUFBSyxHQUFXLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVwQyxVQUFLLEdBQVcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFLM0MsYUFBUSxHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO0tBWXREO0lBVkMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7K0dBdEJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLGlMQ1JwQyxzVEFhQTs7NEZETGEsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLGtCQUFrQjs4QkFLNUIsT0FBTztzQkFETixLQUFLO2dCQUdOLEtBQUs7c0JBREosS0FBSztnQkFHTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IFJlYWx0aW1lU2VydmljZSB9IGZyb20gJy4vcmVhbHRpbWUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1yZWFsdGltZS1idG4nLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVhbHRpbWUtYnV0dG9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBSZWFsdGltZUJ1dHRvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHNlcnZpY2U6IFJlYWx0aW1lU2VydmljZTx1bmtub3duPjtcbiAgQElucHV0KClcbiAgbGFiZWw6IHN0cmluZyA9IGdldHRleHQoJ1JlYWx0aW1lJyk7XG4gIEBJbnB1dCgpXG4gIHRpdGxlOiBzdHJpbmcgPSBnZXR0ZXh0KCdUb2dnbGUgcmVhbHRpbWUnKTtcbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgQE91dHB1dCgpXG4gIG9uVG9nZ2xlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnNlcnZpY2UgJiYgdGhpcy5zZXJ2aWNlLmFjdGl2ZTtcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLmFjdGl2ZSA/IHRoaXMuc2VydmljZS5zdG9wKCkgOiB0aGlzLnNlcnZpY2Uuc3RhcnQoKTtcbiAgICAgIHRoaXMub25Ub2dnbGUuZW1pdCh0aGlzLmFjdGl2ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8YnV0dG9uXG4gIHR5cGU9XCJidXR0b25cIlxuICBjbGFzcz1cImJ0biBidG4tbGluayBjOHktcmVhbHRpbWVcIlxuICBbdGl0bGVdPVwidGl0bGUgfCB0cmFuc2xhdGVcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAoY2xpY2spPVwidG9nZ2xlKClcIlxuPlxuICA8c3BhblxuICAgIGNsYXNzPVwiYzh5LXB1bHNlXCJcbiAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogYWN0aXZlLCBpbmFjdGl2ZTogIWFjdGl2ZSB9XCJcbiAgPjwvc3Bhbj5cbiAgPHNwYW4+e3sgbGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG48L2J1dHRvbj5cbiJdfQ==
@@ -1,5 +1,5 @@
1
- import { Injector, Injectable } from '@angular/core';
2
- import { ActivationEnd, NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';
1
+ import { Injectable, Injector } from '@angular/core';
2
+ import { ActivatedRoute, ActivationEnd, NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';
3
3
  import { ApiService } from '@c8y/ngx-components/api';
4
4
  import { NEVER, Subject } from 'rxjs';
5
5
  import { filter, merge, switchMap } from 'rxjs/operators';
@@ -41,7 +41,7 @@ export class ContextRouteService {
41
41
  * @param activatedRoute The current activated route.
42
42
  */
43
43
  getContextData(activatedRoute) {
44
- const data = this.getContextDataSnapshot(activatedRoute.snapshot);
44
+ const data = this.getContextDataSnapshot(this.getSnapshot(activatedRoute));
45
45
  if (data?.context) {
46
46
  return data;
47
47
  }
@@ -133,6 +133,12 @@ export class ContextRouteService {
133
133
  const id = viewContexts.findIndex(context => `/${context.replace(':id', '')}` === urlWithoutId);
134
134
  return viewContexts[id];
135
135
  }
136
+ getSnapshot(activatedRoute) {
137
+ return activatedRoute instanceof ActivatedRoute ||
138
+ !!activatedRoute?.snapshot
139
+ ? activatedRoute.snapshot
140
+ : activatedRoute;
141
+ }
136
142
  getContextDataSnapshot(activatedRoute) {
137
143
  const data = !activatedRoute.parent || activatedRoute.data.context
138
144
  ? activatedRoute.data
@@ -148,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
148
154
  providedIn: 'root'
149
155
  }]
150
156
  }], ctorParameters: function () { return [{ type: i1.RouterTabsResolver }, { type: i2.TabsService }, { type: i3.Router }, { type: i4.ApiService }, { type: i0.Injector }]; } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1yb3V0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9yb3V0ZXIvY29udGV4dC1yb3V0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFHTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGNBQWMsRUFDZCxNQUFNLEVBR1AsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsVUFBVSxFQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQU03RCxNQUFNLE9BQU8sbUJBQW1CO0lBWTlCLFlBQ1UsWUFBZ0MsRUFDaEMsV0FBd0IsRUFDeEIsTUFBYyxFQUNkLFVBQXNCLEVBQ3RCLFFBQWtCO1FBSmxCLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBZHBCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNyQyxh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QyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0ExSlUsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBJbmplY3RhYmxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgQWN0aXZhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgUFJJTUFSWV9PVVRMRVQsXG4gIFJvdXRlcixcbiAgVXJsU2VnbWVudEdyb3VwLFxuICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlLCBBcGlDYWxsIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hcGknO1xuaW1wb3J0IHsgTkVWRVIsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtZXJnZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29udGV4dERhdGEgfSBmcm9tICcuL3JvdXRlci5tb2RlbCc7XG5pbXBvcnQgeyBUYWIgfSBmcm9tICcuLi90YWJzL3RhYi5tb2RlbCc7XG5pbXBvcnQgeyBUYWJzU2VydmljZSB9IGZyb20gJy4uL3RhYnMvdGFicy5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlclRhYnNSZXNvbHZlciB9IGZyb20gJy4vcm91dGVyLXRhYnMucmVzb2x2ZXInO1xuaW1wb3J0IHsgVmlld0NvbnRleHQgfSBmcm9tICcuL3JvdXRlci5tb2RlbCc7XG5pbXBvcnQgeyBWaWV3Q29udGV4dFNlcnZpY2VzIH0gZnJvbSAnLi92aWV3LWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dFJvdXRlU2VydmljZSB7XG4gIHByaXZhdGUgZGF0YVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHJvdXRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGxhc3RBZGRlZFRhYnMgPSBbXTtcbiAgcHJpdmF0ZSByZWZyZXNoVHJpZ2dlciA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgSURfUkVHRVggPSAvKFswLTldKykvO1xuXG4gIC8qKlxuICAgKiBMYXN0IGNvbnRleHQgZGF0YSBzbmFwc2hvdFxuICAgKi9cbiAgYWN0aXZhdGVkQ29udGV4dERhdGE6IENvbnRleHREYXRhID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRhYnNSZXNvbHZlcjogUm91dGVyVGFic1Jlc29sdmVyLFxuICAgIHByaXZhdGUgdGFic1NlcnZpY2U6IFRhYnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgQWN0aXZhdGlvbkVuZCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogQWN0aXZhdGlvbkVuZCkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50Q29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dERhdGFTbmFwc2hvdChldmVudC5zbmFwc2hvdCk7XG4gICAgICAgIGlmIChjdXJyZW50Q29udGV4dCkge1xuICAgICAgICAgIHRoaXMuYWN0aXZhdGVkQ29udGV4dERhdGEgPSBjdXJyZW50Q29udGV4dCBhcyBDb250ZXh0RGF0YTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIGN1cnJlbnQgY29udGV4dCBkYXRhLiBJZiBubyBjb250ZXh0IHdhcyBmb3VuZCwgbnVsbCBpcyByZXR1cm5lZC5cbiAgICpcbiAgICogQHBhcmFtIGFjdGl2YXRlZFJvdXRlIFRoZSBjdXJyZW50IGFjdGl2YXRlZCByb3V0ZS5cbiAgICovXG4gIGdldENvbnRleHREYXRhKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IENvbnRleHREYXRhIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRDb250ZXh0RGF0YVNuYXBzaG90KGFjdGl2YXRlZFJvdXRlLnNuYXBzaG90KTtcbiAgICBpZiAoZGF0YT8uY29udGV4dCkge1xuICAgICAgcmV0dXJuIGRhdGEgYXMgQ29udGV4dERhdGE7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0Q29udGV4dFJvdXRlKGNvbnRleHREYXRhOiBDb250ZXh0RGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbnRleHREYXRhLmNvbnRleHQucmVwbGFjZSgnOmlkJywgY29udGV4dERhdGEuY29udGV4dERhdGEuaWQgYXMgc3RyaW5nKTtcbiAgfVxuXG4gIGluaXQocm91dGU6IEFjdGl2YXRlZFJvdXRlKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoKSk7XG5cbiAgICB0aGlzLmRhdGFTdWJzY3JpcHRpb24gPSByb3V0ZS5kYXRhXG4gICAgICAucGlwZShcbiAgICAgICAgbWVyZ2UodGhpcy51cGRhdGVkQ29udGV4dChyb3V0ZSksIHRoaXMucmVmcmVzaFRyaWdnZXIpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy50YWJzUmVzb2x2ZXIucmVzb2x2ZShyb3V0ZS5zbmFwc2hvdCkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRhYnMgPT4gdGhpcy51cGRhdGVUYWJzKHRhYnMpKTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmxhc3RBZGRlZFRhYnMuZm9yRWFjaCh0ID0+IHRoaXMudGFic1NlcnZpY2UucmVtb3ZlKHQpKTtcbiAgfVxuXG4gIHJlZnJlc2hDb250ZXh0KCkge1xuICAgIHRoaXMucmVmcmVzaFRyaWdnZXIubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSBuZXcgY29udGV4dERhdGEgaW4gdGhlIEFjdGl2YXRlZFJvdXRlLlxuICAgKiBAcGFyYW0gYWN0aXZhdGVkUm91dGUgVGhlIGN1cnJlbnQgYWN0aXZhdGVkIHJvdXRlLlxuICAgKiBAcGFyYW0gY29udGV4dERhdGEgTmV3IGNvbnRleHREYXRhLlxuICAgKi9cbiAgc2V0Q29udGV4dChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIGNvbnRleHREYXRhOiBJSWRlbnRpZmllZCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGEgPVxuICAgICAgIWFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmVudCB8fCBhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhLmNvbnRleHRcbiAgICAgICAgPyBhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhXG4gICAgICAgIDogYWN0aXZhdGVkUm91dGUucGFyZW50LnNuYXBzaG90LmRhdGE7XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZGF0YS5jb250ZXh0RGF0YSA9IHsgLi4uY29udGV4dERhdGEgfTtcbiAgfVxuXG4gIHVwZGF0ZWRDb250ZXh0KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IE9ic2VydmFibGU8QXBpQ2FsbD4ge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gcm91dGUuc25hcHNob3Q7XG4gICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gVmlld0NvbnRleHRTZXJ2aWNlcy5jb250ZXh0VG9TZXJ2aWNlKGRhdGEuY29udGV4dCk7XG4gICAgaWYgKHNlcnZpY2VJbnN0YW5jZSkge1xuICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFxuICAgICAgICBzZXJ2aWNlSW5zdGFuY2UgYXMgVHlwZTxJbnN0YW5jZVR5cGU8dHlwZW9mIHNlcnZpY2VJbnN0YW5jZT4+XG4gICAgICApO1xuICAgICAgY29uc3QgZGV0YWlsc1VybFJlZ2V4ID0gKHNlcnZpY2UgYXMgdHlwZW9mIHNlcnZpY2UgJiB7IGdldERldGFpbFVybD86ICguLi5hcmdzKSA9PiBzdHJpbmcgfSlcbiAgICAgICAgLmdldERldGFpbFVybChkYXRhLmNvbnRleHREYXRhKVxuICAgICAgICAucmVwbGFjZSgvXFxkKy9nLCAnP1xcXFxkKicpO1xuICAgICAgY29uc3QgY29udGV4dFJlZ2V4ID0gbmV3IFJlZ0V4cChkZXRhaWxzVXJsUmVnZXgsICdpJyk7XG4gICAgICBjb25zdCBjaGlsZHJlblJlZ2V4ID0gbmV3IFJlZ0V4cChgJHtkZXRhaWxzVXJsUmVnZXh9L2NoaWxkYCwgJ2knKTtcbiAgICAgIGNvbnN0IGZpbHRlclJlc3BvbnNlID0gKHsgdXJsLCBtZXRob2QgfSkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZXh0Q2hhbmdlZCA9IGNvbnRleHRSZWdleC50ZXN0KHVybCkgJiYgWydQT1NUJywgJ1BVVCddLmluY2x1ZGVzKG1ldGhvZCk7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuQWZmZWN0ZWQgPSBjaGlsZHJlblJlZ2V4LnRlc3QodXJsKSAmJiBbJ1BPU1QnLCAnREVMRVRFJ10uaW5jbHVkZXMobWV0aG9kKTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHRDaGFuZ2VkIHx8IGNoaWxkcmVuQWZmZWN0ZWQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5ob29rUmVzcG9uc2UoZmlsdGVyUmVzcG9uc2UpO1xuICAgIH1cbiAgICByZXR1cm4gTkVWRVI7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYnModGFicyA9IFtdKSB7XG4gICAgdGhpcy5sYXN0QWRkZWRUYWJzLmZvckVhY2godCA9PiB0aGlzLnRhYnNTZXJ2aWNlLnJlbW92ZSh0KSk7XG4gICAgdGhpcy5sYXN0QWRkZWRUYWJzID0gdGFicztcbiAgICB0YWJzLmZvckVhY2godCA9PiB0aGlzLnRhYnNTZXJ2aWNlLmFkZCh0KSk7XG4gICAgdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkaXJlY3RUb0ZpcnN0VGFiKCkge1xuICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0SWQgPSAodGhpcy5yb3V0ZXIudXJsLm1hdGNoKHRoaXMuSURfUkVHRVgpIHx8IFtdKS5zaGlmdCgpO1xuXG4gICAgaWYgKHRoaXMubmVlZHNSZWRpcmVjdCgpKSB7XG4gICAgICB0aGlzLnRhYnNTZXJ2aWNlLmZpcnN0VGFiJC5waXBlKGZpbHRlcigodGFiOiBUYWIpID0+ICEhdGFiPy5wYXRoKSkuc3Vic2NyaWJlKCh0YWI6IFRhYikgPT4ge1xuICAgICAgICBjb25zdCB0YWJQYXRoSWQgPSAodGFiLnBhdGgubWF0Y2godGhpcy5JRF9SRUdFWCkgfHwgW10pLnNoaWZ0KCk7XG4gICAgICAgIGlmIChjdXJyZW50Q29udGV4dElkID09PSB0YWJQYXRoSWQpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRhYi5wYXRoLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmVlZHNSZWRpcmVjdCgpIHtcbiAgICBjb25zdCB0cmVlOiBVcmxUcmVlID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yb3V0ZXIudXJsKTtcbiAgICBjb25zdCBncm91cHM6IFVybFNlZ21lbnRHcm91cCA9IHRyZWUucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRNYXRjaGluZ0NvbnRleHRSb3V0ZSh0aGlzLnJvdXRlci51cmwpO1xuICAgIGlmICghY29udGV4dCkge1xuICAgICAgcmV0dXJuIGdyb3Vwcy5zZWdtZW50cy5sZW5ndGggPT09IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb250ZXh0LnNwbGl0KCcvJykubGVuZ3RoID09PSBncm91cHMuc2VnbWVudHMubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWF0Y2hpbmdDb250ZXh0Um91dGUodXJsKSB7XG4gICAgY29uc3Qgdmlld0NvbnRleHRzID0gT2JqZWN0LnZhbHVlcyhWaWV3Q29udGV4dCk7XG5cbiAgICBjb25zdCB1cmxXaXRob3V0SWQgPSB1cmwucmVwbGFjZSgvXFxkKC4qKS9nLCAnJyk7XG4gICAgY29uc3QgaWQgPSB2aWV3Q29udGV4dHMuZmluZEluZGV4KGNvbnRleHQgPT4gYC8ke2NvbnRleHQucmVwbGFjZSgnOmlkJywgJycpfWAgPT09IHVybFdpdGhvdXRJZCk7XG4gICAgcmV0dXJuIHZpZXdDb250ZXh0c1tpZF07XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRleHREYXRhU25hcHNob3QoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICBjb25zdCBkYXRhID1cbiAgICAgICFhY3RpdmF0ZWRSb3V0ZS5wYXJlbnQgfHwgYWN0aXZhdGVkUm91dGUuZGF0YS5jb250ZXh0XG4gICAgICAgID8gYWN0aXZhdGVkUm91dGUuZGF0YVxuICAgICAgICA6IGFjdGl2YXRlZFJvdXRlLnBhcmVudC5kYXRhO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iXX0=
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1yb3V0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9yb3V0ZXIvY29udGV4dC1yb3V0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFDTCxjQUFjLEVBRWQsYUFBYSxFQUNiLGFBQWEsRUFDYixjQUFjLEVBQ2QsTUFBTSxFQUdQLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFXLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFLN0QsTUFBTSxPQUFPLG1CQUFtQjtJQVk5QixZQUNVLFlBQWdDLEVBQ2hDLFdBQXdCLEVBQ3hCLE1BQWMsRUFDZCxVQUFzQixFQUN0QixRQUFrQjtRQUpsQixpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWRwQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENB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QUFDLGNBQWMsQ0FBQztJQUNyQixDQUFDO0lBRU8sc0JBQXNCLENBQUMsY0FBc0M7UUFDbkUsTUFBTSxJQUFJLEdBQ1IsQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNuRCxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUk7WUFDckIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0FuS1UsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgQWN0aXZhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgUFJJTUFSWV9PVVRMRVQsXG4gIFJvdXRlcixcbiAgVXJsU2VnbWVudEdyb3VwLFxuICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFwaUNhbGwsIEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBORVZFUiwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1lcmdlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWIgfSBmcm9tICcuLi90YWJzL3RhYi5tb2RlbCc7XG5pbXBvcnQgeyBUYWJzU2VydmljZSB9IGZyb20gJy4uL3RhYnMvdGFicy5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlclRhYnNSZXNvbHZlciB9IGZyb20gJy4vcm91dGVyLXRhYnMucmVzb2x2ZXInO1xuaW1wb3J0IHsgQ29udGV4dERhdGEsIFZpZXdDb250ZXh0IH0gZnJvbSAnLi9yb3V0ZXIubW9kZWwnO1xuaW1wb3J0IHsgVmlld0NvbnRleHRTZXJ2aWNlcyB9IGZyb20gJy4vdmlldy1jb250ZXh0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0Um91dGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBkYXRhU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcm91dGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgbGFzdEFkZGVkVGFicyA9IFtdO1xuICBwcml2YXRlIHJlZnJlc2hUcmlnZ2VyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBJRF9SRUdFWCA9IC8oWzAtOV0rKS87XG5cbiAgLyoqXG4gICAqIExhc3QgY29udGV4dCBkYXRhIHNuYXBzaG90XG4gICAqL1xuICBhY3RpdmF0ZWRDb250ZXh0RGF0YTogQ29udGV4dERhdGEgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGFic1Jlc29sdmVyOiBSb3V0ZXJUYWJzUmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSB0YWJzU2VydmljZTogVGFic1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBBY3RpdmF0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBBY3RpdmF0aW9uRW5kKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0RGF0YVNuYXBzaG90KGV2ZW50LnNuYXBzaG90KTtcbiAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0KSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZWRDb250ZXh0RGF0YSA9IGN1cnJlbnRDb250ZXh0IGFzIENvbnRleHREYXRhO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgY3VycmVudCBjb250ZXh0IGRhdGEuIElmIG5vIGNvbnRleHQgd2FzIGZvdW5kLCBudWxsIGlzIHJldHVybmVkLlxuICAgKlxuICAgKiBAcGFyYW0gYWN0aXZhdGVkUm91dGUgVGhlIGN1cnJlbnQgYWN0aXZhdGVkIHJvdXRlLlxuICAgKi9cbiAgZ2V0Q29udGV4dERhdGEoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlIHwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IENvbnRleHREYXRhIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRDb250ZXh0RGF0YVNuYXBzaG90KHRoaXMuZ2V0U25hcHNob3QoYWN0aXZhdGVkUm91dGUpKTtcbiAgICBpZiAoZGF0YT8uY29udGV4dCkge1xuICAgICAgcmV0dXJuIGRhdGEgYXMgQ29udGV4dERhdGE7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0Q29udGV4dFJvdXRlKGNvbnRleHREYXRhOiBDb250ZXh0RGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbnRleHREYXRhLmNvbnRleHQucmVwbGFjZSgnOmlkJywgY29udGV4dERhdGEuY29udGV4dERhdGEuaWQgYXMgc3RyaW5nKTtcbiAgfVxuXG4gIGluaXQocm91dGU6IEFjdGl2YXRlZFJvdXRlKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoKSk7XG5cbiAgICB0aGlzLmRhdGFTdWJzY3JpcHRpb24gPSByb3V0ZS5kYXRhXG4gICAgICAucGlwZShcbiAgICAgICAgbWVyZ2UodGhpcy51cGRhdGVkQ29udGV4dChyb3V0ZSksIHRoaXMucmVmcmVzaFRyaWdnZXIpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy50YWJzUmVzb2x2ZXIucmVzb2x2ZShyb3V0ZS5zbmFwc2hvdCkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRhYnMgPT4gdGhpcy51cGRhdGVUYWJzKHRhYnMpKTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmxhc3RBZGRlZFRhYnMuZm9yRWFjaCh0ID0+IHRoaXMudGFic1NlcnZpY2UucmVtb3ZlKHQpKTtcbiAgfVxuXG4gIHJlZnJlc2hDb250ZXh0KCkge1xuICAgIHRoaXMucmVmcmVzaFRyaWdnZXIubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSBuZXcgY29udGV4dERhdGEgaW4gdGhlIEFjdGl2YXRlZFJvdXRlLlxuICAgKiBAcGFyYW0gYWN0aXZhdGVkUm91dGUgVGhlIGN1cnJlbnQgYWN0aXZhdGVkIHJvdXRlLlxuICAgKiBAcGFyYW0gY29udGV4dERhdGEgTmV3IGNvbnRleHREYXRhLlxuICAgKi9cbiAgc2V0Q29udGV4dChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIGNvbnRleHREYXRhOiBJSWRlbnRpZmllZCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGEgPVxuICAgICAgIWFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmVudCB8fCBhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhLmNvbnRleHRcbiAgICAgICAgPyBhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhXG4gICAgICAgIDogYWN0aXZhdGVkUm91dGUucGFyZW50LnNuYXBzaG90LmRhdGE7XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZGF0YS5jb250ZXh0RGF0YSA9IHsgLi4uY29udGV4dERhdGEgfTtcbiAgfVxuXG4gIHVwZGF0ZWRDb250ZXh0KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IE9ic2VydmFibGU8QXBpQ2FsbD4ge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gcm91dGUuc25hcHNob3Q7XG4gICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gVmlld0NvbnRleHRTZXJ2aWNlcy5jb250ZXh0VG9TZXJ2aWNlKGRhdGEuY29udGV4dCk7XG4gICAgaWYgKHNlcnZpY2VJbnN0YW5jZSkge1xuICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFxuICAgICAgICBzZXJ2aWNlSW5zdGFuY2UgYXMgVHlwZTxJbnN0YW5jZVR5cGU8dHlwZW9mIHNlcnZpY2VJbnN0YW5jZT4+XG4gICAgICApO1xuICAgICAgY29uc3QgZGV0YWlsc1VybFJlZ2V4ID0gKHNlcnZpY2UgYXMgdHlwZW9mIHNlcnZpY2UgJiB7IGdldERldGFpbFVybD86ICguLi5hcmdzKSA9PiBzdHJpbmcgfSlcbiAgICAgICAgLmdldERldGFpbFVybChkYXRhLmNvbnRleHREYXRhKVxuICAgICAgICAucmVwbGFjZSgvXFxkKy9nLCAnP1xcXFxkKicpO1xuICAgICAgY29uc3QgY29udGV4dFJlZ2V4ID0gbmV3IFJlZ0V4cChkZXRhaWxzVXJsUmVnZXgsICdpJyk7XG4gICAgICBjb25zdCBjaGlsZHJlblJlZ2V4ID0gbmV3IFJlZ0V4cChgJHtkZXRhaWxzVXJsUmVnZXh9L2NoaWxkYCwgJ2knKTtcbiAgICAgIGNvbnN0IGZpbHRlclJlc3BvbnNlID0gKHsgdXJsLCBtZXRob2QgfSkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZXh0Q2hhbmdlZCA9IGNvbnRleHRSZWdleC50ZXN0KHVybCkgJiYgWydQT1NUJywgJ1BVVCddLmluY2x1ZGVzKG1ldGhvZCk7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuQWZmZWN0ZWQgPSBjaGlsZHJlblJlZ2V4LnRlc3QodXJsKSAmJiBbJ1BPU1QnLCAnREVMRVRFJ10uaW5jbHVkZXMobWV0aG9kKTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHRDaGFuZ2VkIHx8IGNoaWxkcmVuQWZmZWN0ZWQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5ob29rUmVzcG9uc2UoZmlsdGVyUmVzcG9uc2UpO1xuICAgIH1cbiAgICByZXR1cm4gTkVWRVI7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYnModGFicyA9IFtdKSB7XG4gICAgdGhpcy5sYXN0QWRkZWRUYWJzLmZvckVhY2godCA9PiB0aGlzLnRhYnNTZXJ2aWNlLnJlbW92ZSh0KSk7XG4gICAgdGhpcy5sYXN0QWRkZWRUYWJzID0gdGFicztcbiAgICB0YWJzLmZvckVhY2godCA9PiB0aGlzLnRhYnNTZXJ2aWNlLmFkZCh0KSk7XG4gICAgdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkaXJlY3RUb0ZpcnN0VGFiKCkge1xuICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0SWQgPSAodGhpcy5yb3V0ZXIudXJsLm1hdGNoKHRoaXMuSURfUkVHRVgpIHx8IFtdKS5zaGlmdCgpO1xuXG4gICAgaWYgKHRoaXMubmVlZHNSZWRpcmVjdCgpKSB7XG4gICAgICB0aGlzLnRhYnNTZXJ2aWNlLmZpcnN0VGFiJC5waXBlKGZpbHRlcigodGFiOiBUYWIpID0+ICEhdGFiPy5wYXRoKSkuc3Vic2NyaWJlKCh0YWI6IFRhYikgPT4ge1xuICAgICAgICBjb25zdCB0YWJQYXRoSWQgPSAodGFiLnBhdGgubWF0Y2godGhpcy5JRF9SRUdFWCkgfHwgW10pLnNoaWZ0KCk7XG4gICAgICAgIGlmIChjdXJyZW50Q29udGV4dElkID09PSB0YWJQYXRoSWQpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRhYi5wYXRoLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmVlZHNSZWRpcmVjdCgpIHtcbiAgICBjb25zdCB0cmVlOiBVcmxUcmVlID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yb3V0ZXIudXJsKTtcbiAgICBjb25zdCBncm91cHM6IFVybFNlZ21lbnRHcm91cCA9IHRyZWUucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRNYXRjaGluZ0NvbnRleHRSb3V0ZSh0aGlzLnJvdXRlci51cmwpO1xuICAgIGlmICghY29udGV4dCkge1xuICAgICAgcmV0dXJuIGdyb3Vwcy5zZWdtZW50cy5sZW5ndGggPT09IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb250ZXh0LnNwbGl0KCcvJykubGVuZ3RoID09PSBncm91cHMuc2VnbWVudHMubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWF0Y2hpbmdDb250ZXh0Um91dGUodXJsKSB7XG4gICAgY29uc3Qgdmlld0NvbnRleHRzID0gT2JqZWN0LnZhbHVlcyhWaWV3Q29udGV4dCk7XG5cbiAgICBjb25zdCB1cmxXaXRob3V0SWQgPSB1cmwucmVwbGFjZSgvXFxkKC4qKS9nLCAnJyk7XG4gICAgY29uc3QgaWQgPSB2aWV3Q29udGV4dHMuZmluZEluZGV4KGNvbnRleHQgPT4gYC8ke2NvbnRleHQucmVwbGFjZSgnOmlkJywgJycpfWAgPT09IHVybFdpdGhvdXRJZCk7XG4gICAgcmV0dXJuIHZpZXdDb250ZXh0c1tpZF07XG4gIH1cblxuICBwcml2YXRlIGdldFNuYXBzaG90KFxuICAgIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSB8IEFjdGl2YXRlZFJvdXRlU25hcHNob3RcbiAgKTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB7XG4gICAgcmV0dXJuIGFjdGl2YXRlZFJvdXRlIGluc3RhbmNlb2YgQWN0aXZhdGVkUm91dGUgfHxcbiAgICAgICEhKGFjdGl2YXRlZFJvdXRlIGFzIHVua25vd24gYXMgeyBzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9KT8uc25hcHNob3RcbiAgICAgID8gKGFjdGl2YXRlZFJvdXRlIGFzIHVua25vd24gYXMgeyBzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9KS5zbmFwc2hvdFxuICAgICAgOiBhY3RpdmF0ZWRSb3V0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGV4dERhdGFTbmFwc2hvdChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xuICAgIGNvbnN0IGRhdGEgPVxuICAgICAgIWFjdGl2YXRlZFJvdXRlLnBhcmVudCB8fCBhY3RpdmF0ZWRSb3V0ZS5kYXRhLmNvbnRleHRcbiAgICAgICAgPyBhY3RpdmF0ZWRSb3V0ZS5kYXRhXG4gICAgICAgIDogYWN0aXZhdGVkUm91dGUucGFyZW50LmRhdGE7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbn1cbiJdfQ==
@@ -202,7 +202,7 @@ export class SearchInputComponent {
202
202
  this.isLoading = term.length > 0;
203
203
  }
204
204
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchInputComponent, deps: [{ token: i1.Router }, { token: i2.InventoryService }, { token: i3.InventorySearchService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
205
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SearchInputComponent, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", customPlaceholder: "customPlaceholder", externalTerm: "externalTerm", customDataQuery: "customDataQuery", container: "container", groupsOnly: "groupsOnly" }, outputs: { filter: "filter", search: "search", reset: "reset", onClick: "onClick" }, host: { listeners: { "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "typeahead", first: true, predicate: TypeaheadComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: ["searchDropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div\n class=\"search-header-inline\"\n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form\n [ngClass]=\"{ 'c8y-search-form': mode === 'search' }\"\n novalidate\n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n title=\"Search\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n name=\"selected\"\n [(ngModel)]=\"selected\"\n (keydown)=\"keyDown($event)\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n >\n <div\n class=\"c8y-list__item p-l-24 p-r-24 p-b-8 separator-bottom sticky-top p-t-4\"\n *ngIf=\"enableCustomTemplatePlaceholder && mode === 'search'\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li *ngIf=\"term.length !== 0 && mode === 'search'\">\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Starts with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Contains' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Ends with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recent search views</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recently registered devices</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"term.length !== 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block m-0\">\n <span translate>Search results</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n [title]=\"result.name\"\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n (click)=\"open($event, result, result.name)\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n data-cy=\"search-input--empty-state\"\n [ngClass]=\"{ 'p-4': mode === 'search' }\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small\n translate\n *ngIf=\"mode === 'search'\"\n >\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small\n translate\n *ngIf=\"mode === 'select'\"\n >\n Try to rephrase your search word.\n </small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search'\"\n >\n <div class=\"d-flex a-i-center\">\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <p\n class=\"m-r-8\"\n translate\n >\n Need more filter possibilities?\n </p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: i7.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i8.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i9.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i11.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i12.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i13.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: i14.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i15.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i16.DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: i17.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i18.ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: i19.GetGroupIconPipe, name: "getGroupIcon" }] }); }
205
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SearchInputComponent, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", customPlaceholder: "customPlaceholder", externalTerm: "externalTerm", customDataQuery: "customDataQuery", container: "container", groupsOnly: "groupsOnly" }, outputs: { filter: "filter", search: "search", reset: "reset", onClick: "onClick" }, host: { listeners: { "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "typeahead", first: true, predicate: TypeaheadComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: ["searchDropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div\n class=\"search-header-inline\"\n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form\n [ngClass]=\"{ 'c8y-search-form': mode === 'search' }\"\n novalidate\n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n title=\"Search\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n name=\"selected\"\n [(ngModel)]=\"selected\"\n (keydown)=\"keyDown($event)\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n >\n <div\n class=\"c8y-list__item p-l-24 p-r-24 p-b-8 separator-bottom sticky-top p-t-4\"\n *ngIf=\"enableCustomTemplatePlaceholder && mode === 'search'\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li *ngIf=\"term.length !== 0 && mode === 'search'\">\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Starts with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Contains' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Ends with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recent search views</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recently registered devices</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"term.length !== 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block m-0\">\n <span translate>Search results</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n [title]=\"result.name\"\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n (click)=\"open($event, result, result.name)\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n data-cy=\"search-input--empty-state\"\n [ngClass]=\"{ 'p-4': mode === 'search' }\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small\n translate\n *ngIf=\"mode === 'search'\"\n >\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small\n translate\n *ngIf=\"mode === 'select'\"\n >\n Try to rephrase your search word.\n </small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search'\"\n >\n <div class=\"d-flex a-i-center\">\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <p\n class=\"m-r-8\"\n translate\n >\n Need more filter possibilities?\n </p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: i7.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i8.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i9.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i11.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForLoadMoreComponent"] }, { kind: "component", type: i12.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i13.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: i14.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i15.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i16.DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: i17.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i18.ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: i19.GetGroupIconPipe, name: "getGroupIcon" }] }); }
206
206
  }
207
207
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchInputComponent, decorators: [{
208
208
  type: Component,
@@ -0,0 +1,3 @@
1
+ export * from './time-interval.component';
2
+ export * from './time-interval.model';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3RpbWUtaW50ZXJ2YWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90aW1lLWludGVydmFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RpbWUtaW50ZXJ2YWwubW9kZWwnO1xuIl19
@@ -0,0 +1,85 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
4
+ import { CommonModule } from '../common/common.module';
5
+ import { CUSTOM, INTERVAL_OPTIONS, LAST_HOUR } from './time-interval.model';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../common/icon.directive";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "../i18n/c8y-translate.pipe";
10
+ import * as i4 from "@angular/forms";
11
+ import * as i5 from "ngx-bootstrap/datepicker";
12
+ export class TimeIntervalComponent {
13
+ constructor() {
14
+ this.intvervals = INTERVAL_OPTIONS;
15
+ this.CUSTOM = CUSTOM;
16
+ this.selectedInterval = LAST_HOUR;
17
+ this.interval = new EventEmitter();
18
+ }
19
+ ngAfterViewInit() {
20
+ this.changeInterval(this.selectedInterval);
21
+ }
22
+ changeInterval(intervalOption) {
23
+ if (intervalOption !== CUSTOM) {
24
+ const interval = {
25
+ dateFrom: intervalOption.getStartDate(),
26
+ dateTo: this.getEndDate()
27
+ };
28
+ this.emitInterval(interval);
29
+ }
30
+ }
31
+ changeCustomRange(range) {
32
+ this.emitInterval(this.rangeToInterval(range));
33
+ }
34
+ reload() {
35
+ if (this.selectedInterval === CUSTOM) {
36
+ this.emitInterval(this.rangeToInterval(this.customRange));
37
+ }
38
+ else {
39
+ this.changeInterval(this.selectedInterval);
40
+ }
41
+ }
42
+ getEndDate() {
43
+ const end = new Date();
44
+ end.setSeconds(end.getSeconds() + 1);
45
+ return end;
46
+ }
47
+ rangeToInterval(range) {
48
+ const dateFrom = new Date(range[0]);
49
+ const dateTo = new Date(range[1]);
50
+ dateFrom.setHours(0, 0, 0, 0);
51
+ if (!this.isToday(dateTo)) {
52
+ dateTo.setHours(23, 59, 59, 999);
53
+ }
54
+ return { dateFrom, dateTo };
55
+ }
56
+ isToday(date) {
57
+ const today = new Date();
58
+ return (date?.getDate() === today.getDate() &&
59
+ date.getMonth() === today.getMonth() &&
60
+ date.getFullYear() === today.getFullYear());
61
+ }
62
+ emitInterval(interval) {
63
+ // only emit valid intervals
64
+ if (!isNaN(interval?.dateFrom?.getTime()) && !isNaN(interval?.dateTo?.getTime())) {
65
+ this.interval.emit(interval);
66
+ }
67
+ }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimeIntervalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TimeIntervalComponent, isStandalone: true, selector: "c8y-time-interval", inputs: { minCustomDate: "minCustomDate", maxCustomDate: "maxCustomDate", dateRangePickerConfig: "dateRangePickerConfig", selectedInterval: "selectedInterval" }, outputs: { interval: "interval" }, ngImport: i0, template: "<form class=\"form-inline\">\n <div class=\"form-group\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Time interval' | translate\"\n name=\"interval\"\n [(ngModel)]=\"selectedInterval\"\n (ngModelChange)=\"changeInterval($event)\"\n >\n <option\n *ngFor=\"let interval of intvervals\"\n [ngValue]=\"interval\"\n >\n {{ interval.label | translate }}\n </option>\n </select>\n </div>\n </div>\n\n <div\n class=\"form-group datepicker\"\n *ngIf=\"selectedInterval === CUSTOM\"\n >\n <input\n class=\"form-control\"\n [placeholder]=\"'Select date range' | translate\"\n bsDaterangepicker\n [bsConfig]=\"dateRangePickerConfig\"\n [minDate]=\"minCustomDate\"\n [maxDate]=\"maxCustomDate\"\n [(bsValue)]=\"customRange\"\n (bsValueChange)=\"changeCustomRange($event)\"\n />\n </div>\n\n <button\n class=\"btn btn-link\"\n [title]=\"'Reload' | translate\"\n type=\"button\"\n [disabled]=\"selectedInterval === CUSTOM && (!customRange || customRange.length === 0)\"\n (click)=\"reload()\"\n >\n <i c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</form>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: BsDatepickerModule }, { kind: "directive", type: i5.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i5.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }] }); }
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimeIntervalComponent, decorators: [{
72
+ type: Component,
73
+ args: [{ standalone: true, selector: 'c8y-time-interval', imports: [CommonModule, FormsModule, BsDatepickerModule], template: "<form class=\"form-inline\">\n <div class=\"form-group\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Time interval' | translate\"\n name=\"interval\"\n [(ngModel)]=\"selectedInterval\"\n (ngModelChange)=\"changeInterval($event)\"\n >\n <option\n *ngFor=\"let interval of intvervals\"\n [ngValue]=\"interval\"\n >\n {{ interval.label | translate }}\n </option>\n </select>\n </div>\n </div>\n\n <div\n class=\"form-group datepicker\"\n *ngIf=\"selectedInterval === CUSTOM\"\n >\n <input\n class=\"form-control\"\n [placeholder]=\"'Select date range' | translate\"\n bsDaterangepicker\n [bsConfig]=\"dateRangePickerConfig\"\n [minDate]=\"minCustomDate\"\n [maxDate]=\"maxCustomDate\"\n [(bsValue)]=\"customRange\"\n (bsValueChange)=\"changeCustomRange($event)\"\n />\n </div>\n\n <button\n class=\"btn btn-link\"\n [title]=\"'Reload' | translate\"\n type=\"button\"\n [disabled]=\"selectedInterval === CUSTOM && (!customRange || customRange.length === 0)\"\n (click)=\"reload()\"\n >\n <i c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</form>\n" }]
74
+ }], propDecorators: { minCustomDate: [{
75
+ type: Input
76
+ }], maxCustomDate: [{
77
+ type: Input
78
+ }], dateRangePickerConfig: [{
79
+ type: Input
80
+ }], selectedInterval: [{
81
+ type: Input
82
+ }], interval: [{
83
+ type: Output
84
+ }] } });
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1pbnRlcnZhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3RpbWUtaW50ZXJ2YWwvdGltZS1pbnRlcnZhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3RpbWUtaW50ZXJ2YWwvdGltZS1pbnRlcnZhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxNQUFNLEVBRU4sZ0JBQWdCLEVBQ2hCLFNBQVMsRUFHVixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBUS9CLE1BQU0sT0FBTyxxQkFBcUI7SUFObEM7UUFPRSxlQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFDOUIsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQVloQixxQkFBZ0IsR0FBdUIsU0FBUyxDQUFDO1FBR2pELGFBQVEsR0FBK0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQStEM0Q7SUEzREMsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGNBQWMsQ0FBQyxjQUFrQztRQUMvQyxJQUFJLGNBQWMsS0FBSyxNQUFNLEVBQUU7WUFDN0IsTUFBTSxRQUFRLEdBQWlCO2dCQUM3QixRQUFRLEVBQUUsY0FBYyxDQUFDLFlBQVksRUFBRTtnQkFDdkMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7YUFDMUIsQ0FBQztZQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLE1BQU0sRUFBRTtZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDM0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRU8sVUFBVTtRQUNoQixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFhO1FBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNsQztRQUNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLE9BQU8sQ0FBQyxJQUFVO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDekIsT0FBTyxDQUNMLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ25DLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQzNDLENBQUM7SUFDSixDQUFDO0lBRU8sWUFBWSxDQUFDLFFBQXNCO1FBQ3pDLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7WUFDaEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDOytHQS9FVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixrUkNuQmxDLHN4Q0ErQ0EsMkNEOUJZLFlBQVksMFpBQUUsV0FBVyxrckNBQUUsa0JBQWtCOzs0RkFFNUMscUJBQXFCO2tCQU5qQyxTQUFTO2lDQUNJLElBQUksWUFDTixtQkFBbUIsV0FFcEIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixDQUFDOzhCQU94RCxhQUFhO3NCQURaLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixRQUFRO3NCQURQLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xuaW1wb3J0IHtcbiAgQ1VTVE9NLFxuICBEYXRlUmFuZ2VQaWNrZXJDb25maWcsXG4gIElOVEVSVkFMX09QVElPTlMsXG4gIExBU1RfSE9VUixcbiAgVGltZUludGVydmFsLFxuICBUaW1lSW50ZXJ2YWxPcHRpb25cbn0gZnJvbSAnLi90aW1lLWludGVydmFsLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYzh5LXRpbWUtaW50ZXJ2YWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZS1pbnRlcnZhbC5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBCc0RhdGVwaWNrZXJNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVJbnRlcnZhbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBpbnR2ZXJ2YWxzID0gSU5URVJWQUxfT1BUSU9OUztcbiAgQ1VTVE9NID0gQ1VTVE9NO1xuXG4gIEBJbnB1dCgpXG4gIG1pbkN1c3RvbURhdGU6IERhdGU7XG5cbiAgQElucHV0KClcbiAgbWF4Q3VzdG9tRGF0ZTogRGF0ZTtcblxuICBASW5wdXQoKVxuICBkYXRlUmFuZ2VQaWNrZXJDb25maWc6IERhdGVSYW5nZVBpY2tlckNvbmZpZztcblxuICBASW5wdXQoKVxuICBzZWxlY3RlZEludGVydmFsOiBUaW1lSW50ZXJ2YWxPcHRpb24gPSBMQVNUX0hPVVI7XG5cbiAgQE91dHB1dCgpXG4gIGludGVydmFsOiBFdmVudEVtaXR0ZXI8VGltZUludGVydmFsPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjdXN0b21SYW5nZTogRGF0ZVtdO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZUludGVydmFsKHRoaXMuc2VsZWN0ZWRJbnRlcnZhbCk7XG4gIH1cblxuICBjaGFuZ2VJbnRlcnZhbChpbnRlcnZhbE9wdGlvbjogVGltZUludGVydmFsT3B0aW9uKSB7XG4gICAgaWYgKGludGVydmFsT3B0aW9uICE9PSBDVVNUT00pIHtcbiAgICAgIGNvbnN0IGludGVydmFsOiBUaW1lSW50ZXJ2YWwgPSB7XG4gICAgICAgIGRhdGVGcm9tOiBpbnRlcnZhbE9wdGlvbi5nZXRTdGFydERhdGUoKSxcbiAgICAgICAgZGF0ZVRvOiB0aGlzLmdldEVuZERhdGUoKVxuICAgICAgfTtcblxuICAgICAgdGhpcy5lbWl0SW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUN1c3RvbVJhbmdlKHJhbmdlOiBEYXRlW10pIHtcbiAgICB0aGlzLmVtaXRJbnRlcnZhbCh0aGlzLnJhbmdlVG9JbnRlcnZhbChyYW5nZSkpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSW50ZXJ2YWwgPT09IENVU1RPTSkge1xuICAgICAgdGhpcy5lbWl0SW50ZXJ2YWwodGhpcy5yYW5nZVRvSW50ZXJ2YWwodGhpcy5jdXN0b21SYW5nZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoYW5nZUludGVydmFsKHRoaXMuc2VsZWN0ZWRJbnRlcnZhbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbmREYXRlKCk6IERhdGUge1xuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKCk7XG4gICAgZW5kLnNldFNlY29uZHMoZW5kLmdldFNlY29uZHMoKSArIDEpO1xuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuICBwcml2YXRlIHJhbmdlVG9JbnRlcnZhbChyYW5nZTogRGF0ZVtdKTogVGltZUludGVydmFsIHtcbiAgICBjb25zdCBkYXRlRnJvbSA9IG5ldyBEYXRlKHJhbmdlWzBdKTtcbiAgICBjb25zdCBkYXRlVG8gPSBuZXcgRGF0ZShyYW5nZVsxXSk7XG5cbiAgICBkYXRlRnJvbS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICBpZiAoIXRoaXMuaXNUb2RheShkYXRlVG8pKSB7XG4gICAgICBkYXRlVG8uc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZGF0ZUZyb20sIGRhdGVUbyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RvZGF5KGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIGRhdGU/LmdldERhdGUoKSA9PT0gdG9kYXkuZ2V0RGF0ZSgpICYmXG4gICAgICBkYXRlLmdldE1vbnRoKCkgPT09IHRvZGF5LmdldE1vbnRoKCkgJiZcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gdG9kYXkuZ2V0RnVsbFllYXIoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRJbnRlcnZhbChpbnRlcnZhbDogVGltZUludGVydmFsKSB7XG4gICAgLy8gb25seSBlbWl0IHZhbGlkIGludGVydmFsc1xuICAgIGlmICghaXNOYU4oaW50ZXJ2YWw/LmRhdGVGcm9tPy5nZXRUaW1lKCkpICYmICFpc05hTihpbnRlcnZhbD8uZGF0ZVRvPy5nZXRUaW1lKCkpKSB7XG4gICAgICB0aGlzLmludGVydmFsLmVtaXQoaW50ZXJ2YWwpO1xuICAgIH1cbiAgfVxufVxuIiwiPGZvcm0gY2xhc3M9XCJmb3JtLWlubGluZVwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgIDxzZWxlY3RcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUaW1lIGludGVydmFsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIG5hbWU9XCJpbnRlcnZhbFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRJbnRlcnZhbFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUludGVydmFsKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGludGVydmFsIG9mIGludHZlcnZhbHNcIlxuICAgICAgICAgIFtuZ1ZhbHVlXT1cImludGVydmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGludGVydmFsLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgZGF0ZXBpY2tlclwiXG4gICAgKm5nSWY9XCJzZWxlY3RlZEludGVydmFsID09PSBDVVNUT01cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBkYXRlIHJhbmdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBic0RhdGVyYW5nZXBpY2tlclxuICAgICAgW2JzQ29uZmlnXT1cImRhdGVSYW5nZVBpY2tlckNvbmZpZ1wiXG4gICAgICBbbWluRGF0ZV09XCJtaW5DdXN0b21EYXRlXCJcbiAgICAgIFttYXhEYXRlXT1cIm1heEN1c3RvbURhdGVcIlxuICAgICAgWyhic1ZhbHVlKV09XCJjdXN0b21SYW5nZVwiXG4gICAgICAoYnNWYWx1ZUNoYW5nZSk9XCJjaGFuZ2VDdXN0b21SYW5nZSgkZXZlbnQpXCJcbiAgICAvPlxuICA8L2Rpdj5cblxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIFt0aXRsZV09XCInUmVsb2FkJyB8IHRyYW5zbGF0ZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2Rpc2FibGVkXT1cInNlbGVjdGVkSW50ZXJ2YWwgPT09IENVU1RPTSAmJiAoIWN1c3RvbVJhbmdlIHx8IGN1c3RvbVJhbmdlLmxlbmd0aCA9PT0gMClcIlxuICAgIChjbGljayk9XCJyZWxvYWQoKVwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicmVmcmVzaFwiPjwvaT5cbiAgICB7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvZm9ybT5cbiJdfQ==