@c8y/ngx-components 1023.14.146 → 1023.14.148

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 (200) hide show
  1. package/asset-properties/index.d.ts +1 -0
  2. package/asset-properties/index.d.ts.map +1 -1
  3. package/device-profile/index.d.ts +8 -1
  4. package/device-profile/index.d.ts.map +1 -1
  5. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
  6. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
  7. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +9 -9
  8. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +12 -12
  9. package/fesm2022/c8y-ngx-components-ai.mjs +3 -3
  10. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
  11. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
  12. package/fesm2022/c8y-ngx-components-alarms.mjs +76 -76
  13. package/fesm2022/c8y-ngx-components-api.mjs +7 -7
  14. package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
  15. package/fesm2022/c8y-ngx-components-asset-properties.mjs +44 -41
  16. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  17. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-6Mf7PM6C.mjs → c8y-ngx-components-asset-property-grid.component-f-_aEo66.mjs} +13 -13
  18. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-6Mf7PM6C.mjs.map → c8y-ngx-components-asset-property-grid.component-f-_aEo66.mjs.map} +1 -1
  19. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
  20. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +120 -120
  21. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
  22. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
  23. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
  24. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
  25. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
  26. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
  27. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
  28. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
  29. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
  30. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +36 -36
  31. package/fesm2022/c8y-ngx-components-branding-shared.mjs +13 -13
  32. package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
  33. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
  34. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-B2cy8gI7.mjs → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-LHAUigva.mjs} +4 -4
  35. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-B2cy8gI7.mjs.map → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-LHAUigva.mjs.map} +1 -1
  36. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C4oL39m8.mjs → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-LtP3NmEZ.mjs} +4 -4
  37. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C4oL39m8.mjs.map → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-LtP3NmEZ.mjs.map} +1 -1
  38. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-DGwm6_C9.mjs → c8y-ngx-components-computed-asset-properties-event-count-config.component-DVCbhO9J.mjs} +4 -4
  39. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-DGwm6_C9.mjs.map → c8y-ngx-components-computed-asset-properties-event-count-config.component-DVCbhO9J.mjs.map} +1 -1
  40. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-acUAmb-j.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-B2arQ9BP.mjs} +4 -4
  41. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-acUAmb-j.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-B2arQ9BP.mjs.map} +1 -1
  42. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +6 -6
  43. package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
  44. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
  45. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
  46. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
  47. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DsCDppJx.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-JMTpQkY3.mjs} +4 -4
  48. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DsCDppJx.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-JMTpQkY3.mjs.map} +1 -1
  49. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RdLW5nde.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-CIOgylW-.mjs} +10 -10
  50. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RdLW5nde.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-CIOgylW-.mjs.map} +1 -1
  51. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component--1OYYpR2.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-1xx4pGiq.mjs} +4 -4
  52. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component--1OYYpR2.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-1xx4pGiq.mjs.map} +1 -1
  53. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
  54. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
  55. package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs +3 -3
  56. package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs +3 -3
  57. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +102 -102
  58. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-Cek3_qZQ.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-BYcQOE5h.mjs} +16 -16
  59. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-Cek3_qZQ.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-BYcQOE5h.mjs.map} +1 -1
  60. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
  61. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +6 -6
  62. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
  63. package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
  64. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
  65. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
  66. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +24 -24
  67. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +13 -13
  68. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
  69. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
  70. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
  71. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
  72. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +40 -40
  73. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +33 -33
  74. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
  75. package/fesm2022/c8y-ngx-components-device-enrolment-modal.mjs +9 -9
  76. package/fesm2022/c8y-ngx-components-device-enrolment.mjs +6 -6
  77. package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
  78. package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
  79. package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
  80. package/fesm2022/c8y-ngx-components-device-profile.mjs +70 -44
  81. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  82. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
  83. package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
  84. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
  85. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
  86. package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
  87. package/fesm2022/c8y-ngx-components-echart.mjs +30 -30
  88. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
  89. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
  90. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
  91. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
  92. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
  93. package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
  94. package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
  95. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
  96. package/fesm2022/c8y-ngx-components-events.mjs +3 -3
  97. package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
  98. package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
  99. package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
  100. package/fesm2022/c8y-ngx-components-global-context.mjs +130 -130
  101. package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
  102. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  103. package/fesm2022/c8y-ngx-components-location.mjs +28 -28
  104. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
  105. package/fesm2022/c8y-ngx-components-map.mjs +19 -19
  106. package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
  107. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
  108. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
  109. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
  110. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
  111. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
  112. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
  113. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
  114. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +3 -3
  115. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
  116. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
  117. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
  118. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
  119. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
  120. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
  121. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
  122. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
  123. package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
  124. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
  125. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
  126. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
  127. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
  128. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
  129. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
  130. package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
  131. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
  132. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
  133. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
  134. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
  135. package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
  136. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
  137. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
  138. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
  139. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
  140. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
  141. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
  142. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
  143. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
  144. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
  145. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
  146. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
  147. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
  148. package/fesm2022/c8y-ngx-components-replace-device.mjs +10 -10
  149. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
  150. package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
  151. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
  152. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
  153. package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
  154. package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
  155. package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
  156. package/fesm2022/c8y-ngx-components-search.mjs +19 -19
  157. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +6 -6
  158. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +7 -7
  159. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
  160. package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
  161. package/fesm2022/c8y-ngx-components-services.mjs +29 -29
  162. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
  163. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
  164. package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
  165. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +9 -9
  166. package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
  167. package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
  168. package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
  169. package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
  170. package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
  171. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
  172. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
  173. package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
  174. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
  175. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
  176. package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
  177. package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
  178. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
  179. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +3 -3
  180. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +6 -6
  181. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +19 -19
  182. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
  183. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
  184. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
  185. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +6 -6
  186. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +27 -27
  187. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
  188. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +10 -10
  189. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
  190. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +24 -24
  191. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
  192. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
  193. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
  194. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
  195. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
  196. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
  197. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
  198. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
  199. package/fesm2022/c8y-ngx-components.mjs +1332 -1332
  200. package/package.json +1 -1
@@ -461,6 +461,7 @@ declare class AssetPropertyListComponent implements OnInit, OnChanges, OnDestroy
461
461
  private computedPropertiesService;
462
462
  private modalService;
463
463
  private dragDropService;
464
+ private translateService;
464
465
  /**
465
466
  * Constructor initializes reactive effects for expansion modes.
466
467
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../asset-properties/asset-properties.model.ts","../../asset-properties/asset-properties.service.ts","../../asset-properties/custom-properties-drawer.service.ts","../../asset-properties/asset-property-list/tree-data-source.ts","../../asset-properties/asset-property-list/asset-property-action.directive.ts","../../asset-properties/asset-property-list/asset-property-list.component.ts","../../asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.ts","../../asset-properties/computed-properties.service.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sources":["../../asset-properties/asset-properties.model.ts","../../asset-properties/asset-properties.service.ts","../../asset-properties/custom-properties-drawer.service.ts","../../asset-properties/asset-property-list/tree-data-source.ts","../../asset-properties/asset-property-list/asset-property-action.directive.ts","../../asset-properties/asset-property-list/asset-property-list.component.ts","../../asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.ts","../../asset-properties/computed-properties.service.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
@@ -378,6 +378,7 @@ declare class DeviceTabProfileComponent implements OnInit, ProductExperienceEven
378
378
  private route;
379
379
  private operationRealtime;
380
380
  private alertService;
381
+ private inventoryService;
381
382
  PRODUCT_EXPERIENCE: {
382
383
  readonly EVENTS: {
383
384
  readonly REPOSITORY: "deviceProfileRepository";
@@ -416,14 +417,20 @@ declare class DeviceTabProfileComponent implements OnInit, ProductExperienceEven
416
417
  filterPipe: ForOfFilterPipe;
417
418
  pattern$: BehaviorSubject<string>;
418
419
  reload$: BehaviorSubject<boolean>;
420
+ private autoSyncProfile;
421
+ private deviceReload$;
419
422
  productExperienceEvent: ProductExperienceEvent;
420
423
  private destroyRef;
421
- constructor(deviceRealtime: ManagedObjectRealtimeService, deviceProfileService: DeviceProfileService, route: ActivatedRoute, operationRealtime: OperationRealtimeService, alertService: AlertService);
424
+ constructor(deviceRealtime: ManagedObjectRealtimeService, deviceProfileService: DeviceProfileService, route: ActivatedRoute, operationRealtime: OperationRealtimeService, alertService: AlertService, inventoryService: InventoryService);
422
425
  ngOnInit(): Promise<void>;
423
426
  getDeviceProfilesAndUpdateProfileItems(): Promise<void>;
424
427
  selectProfile(mo: DeviceProfile): void;
428
+ reload(): void;
425
429
  createOperation(): Promise<void>;
426
430
  updateProfileItems(device: any, profile: any): void;
431
+ private subscribeToPatternChanges;
432
+ private subscribeToDeviceReload;
433
+ private loadDevice;
427
434
  private subscribeToManagedObjects;
428
435
  private subscribeToOperations;
429
436
  private toProfileForDevice;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../device-profile/device-profile-navigation.factory.ts","../../device-profile/device-profile.model.ts","../../device-profile/device-profile.service.ts","../../device-profile/select-configuration-modal.component.ts","../../device-profile/device-profile.component.ts","../../device-profile/device-profile-list.component.ts","../../device-profile/add-device-profile.component.ts","../../device-profile/device-tab-profile/device-tab-profile.component.ts","../../device-profile/device-tab-profile/device-tab-profile-detail.component.ts","../../device-profile/device-tab-profile/device-profile-item-list.component.ts","../../device-profile/device-profile.module.ts","../../device-profile/device-profile.guard.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAIA;;;;;AAeC;;;;;ACdC;;;AAGA;;AAEE;AACA;;AAEH;;;;;;;AAQA;;;;;;;AAQA;;;;;AAMA;;AAGC;;;;;;AAMA;;;;;;;AAOD;AAED;AACE;AACD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzBA;AAaI;AACA;AACA;;;;;;;;AAKF;AAOA;;;;;;;;;;;AAWG;AACH;AA6BA;;AAEG;;AAYH;AAYM;;AAgCN;AAyBA;AAgBA;AAqBA;;;;;;AAMG;AACH;AA4BA;AASA;AA6BA;AAyBA;AA0BA;;;AA4BD;;AC9VD;AA2Bc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAf8C;;AAE1D;AACA;AAIA;;;;;;;AAQoB;;;;AA2BpB;;;AA2BD;;ACtDD;AAkDI;AACA;AACA;AACA;AACA;AACA;AAvBF;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGuD;;;;;;;;;AA0GvD;;;AAqGA;AAWA;;;;AA4CA;;;AAqBD;;ACvUD;AAwDI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAzCF;AACA;AACA;AACA;;;;;;;AAgBE;;AAQF;AACA;AACA;AACA;AAGU;AAaV;;AAmEA;;;;;;;;AA4ED;;AC5OD;AAwCI;AACA;AApBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGuD;AACvD;AAMA;;;;AASU;;;;;AAaX;;AClCD;AAiDW;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAzBqD;;;AAGvD;;;;;;AAOA;AACA;;;AAUS;;;;;AA4DT;AAMA;AAoBA;AAaA;;;AAkBD;;ACtMD;;;AAcW;AACA;;;;AAIA;;;AACV;;ACfD;;;;;;;AAoBC;;ACmBD;;;;AA4BmC;;ACzEnC;;AAUE;;;AAOD;;;"}
1
+ {"version":3,"file":"index.d.ts","sources":["../../device-profile/device-profile-navigation.factory.ts","../../device-profile/device-profile.model.ts","../../device-profile/device-profile.service.ts","../../device-profile/select-configuration-modal.component.ts","../../device-profile/device-profile.component.ts","../../device-profile/device-profile-list.component.ts","../../device-profile/add-device-profile.component.ts","../../device-profile/device-tab-profile/device-tab-profile.component.ts","../../device-profile/device-tab-profile/device-tab-profile-detail.component.ts","../../device-profile/device-tab-profile/device-profile-item-list.component.ts","../../device-profile/device-profile.module.ts","../../device-profile/device-profile.guard.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAIA;;;;;AAeC;;;;;ACdC;;;AAGA;;AAEE;AACA;;AAEH;;;;;;;AAQA;;;;;;;AAQA;;;;;AAMA;;AAGC;;;;;;AAMA;;;;;;;AAOD;AAED;AACE;AACD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzBA;AAaI;AACA;AACA;;;;;;;;AAKF;AAOA;;;;;;;;;;;AAWG;AACH;AA6BA;;AAEG;;AAYH;AAYM;;AAgCN;AAyBA;AAgBA;AAqBA;;;;;;AAMG;AACH;AA4BA;AASA;AA6BA;AAyBA;AA0BA;;;AA4BD;;AC9VD;AA2Bc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAf8C;;AAE1D;AACA;AAIA;;;;;;;AAQoB;;;;AA2BpB;;;AA2BD;;ACtDD;AAkDI;AACA;AACA;AACA;AACA;AACA;AAvBF;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGuD;;;;;;;;;AA0GvD;;;AAqGA;AAWA;;;;AA4CA;;;AAqBD;;ACvUD;AAwDI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAzCF;AACA;AACA;AACA;;;;;;;AAgBE;;AAQF;AACA;AACA;AACA;AAGU;AAaV;;AAmEA;;;;;;;;AA4ED;;AC5OD;AAwCI;AACA;AApBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGuD;AACvD;AAMA;;;;AASU;;;;;AAaX;;AClCD;AAmDW;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA5BqD;;;AAGvD;;;;;;AAOA;AACA;;;;;;;;;;;AAkFA;AAMA;AAMA;;AAiBA;AAoBA;AAaA;;;AAkBD;;ACzOD;;;AAcW;AACA;;;;AAIA;;;AACV;;ACfD;;;;;;;AAoBC;;ACmBD;;;;AA4BmC;;ACzEnC;;AAUE;;;AAOD;;;"}
@@ -237,10 +237,10 @@ class ActilityDeviceRegistrationService {
237
237
  error.message = data.message;
238
238
  throw error;
239
239
  }
240
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationService, deps: [{ token: i1.InventoryService }, { token: i1.FetchClient }, { token: i2.TranslateService }, { token: i1.ApplicationService }, { token: i3.OptionsService }, { token: i3.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
241
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationService, providedIn: 'root' }); }
240
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationService, deps: [{ token: i1.InventoryService }, { token: i1.FetchClient }, { token: i2.TranslateService }, { token: i1.ApplicationService }, { token: i3.OptionsService }, { token: i3.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
241
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationService, providedIn: 'root' }); }
242
242
  }
243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationService, decorators: [{
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationService, decorators: [{
244
244
  type: Injectable,
245
245
  args: [{ providedIn: 'root' }]
246
246
  }], ctorParameters: () => [{ type: i1.InventoryService }, { type: i1.FetchClient }, { type: i2.TranslateService }, { type: i1.ApplicationService }, { type: i3.OptionsService }, { type: i3.AppStateService }] });
@@ -461,10 +461,10 @@ class ActilityDeviceRegistrationComponent {
461
461
  this.unsubscribe$.next();
462
462
  this.unsubscribe$.complete();
463
463
  }
464
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationComponent, deps: [{ token: i1$1.BsModalRef }, { token: ActilityDeviceRegistrationService }, { token: i3.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
465
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: ActilityDeviceRegistrationComponent, isStandalone: true, selector: "c8y-actility-registration", ngImport: i0, template: "<c8y-modal\n [title]=\"'Actility LoRa registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'c8y-device-connect'\"></span>\n </ng-container>\n\n <ng-container *ngIf=\"state === 'loadPending'; else registrationForm\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-container>\n\n <!--Formly schema is rendered-->\n <ng-template #registrationForm>\n <c8y-stepper\n [hideStepProgress]=\"true\"\n c8y-modal-body\n linear\n *ngIf=\"(errorMessages$ | async).length === 0; else errorMessagesPresent\"\n >\n <cdk-step [stepControl]=\"form\">\n <div class=\"p-b-16\">\n <p class=\"modal-subtitle sticky-top\">\n {{ 'Register a single Actility device' | translate }}\n </p>\n <formly-form\n class=\"formly-group-array-cols d-block p-l-24 p-r-24 p-t-16\"\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n ></formly-form>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [labels]=\"registrationStepLabels\"\n (onNext)=\"register($event)\"\n (onCancel)=\"bsModalRef.hide()\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [pending]=\"state === 'registrationPending'\"\n [disabled]=\"!form?.valid\"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step state=\"final\">\n <!--success scenario-->\n <div\n class=\"p-16 text-center\"\n *ngIf=\"state === 'registrationPending'\"\n >\n <c8y-loading></c8y-loading>\n </div>\n <div class=\"m-24\">\n <c8y-operation-result\n class=\"lead m-b-0\"\n type=\"success\"\n *ngIf=\"state === 'registrationSuccess'\"\n text=\"{{ 'Device registered' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n (onCustom)=\"bsModalRef.hide()\"\n [showButtons]=\"{ custom: true }\"\n [labels]=\"finalStepLabels\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n </ng-template>\n\n <!--Failure scenario-->\n <ng-template #errorMessagesPresent>\n <div class=\"m-24\">\n <c8y-operation-result\n class=\"lead\"\n type=\"error\"\n *ngIf=\"state === 'registrationError'\"\n text=\"{{ 'Failed to register' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n <div\n class=\"m-b-8\"\n *ngFor=\"let msg of errorMessages$ | async\"\n data-cy=\"actility-device-registration.component--registration-error\"\n [ngClass]=\"{\n 'text-center': state === 'registrationError',\n 'alert alert-danger': state === 'loadError'\n }\"\n >\n <span [innerHTML]=\"msg | translate\"></span>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"bsModalRef.hide()\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n </ng-template>\n</c8y-modal>\n", dependencies: [{ kind: "component", type: ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "component", type: CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i4.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "component", type: C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }, { kind: "component", type: OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
464
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationComponent, deps: [{ token: i1$1.BsModalRef }, { token: ActilityDeviceRegistrationService }, { token: i3.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
465
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: ActilityDeviceRegistrationComponent, isStandalone: true, selector: "c8y-actility-registration", ngImport: i0, template: "<c8y-modal\n [title]=\"'Actility LoRa registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'c8y-device-connect'\"></span>\n </ng-container>\n\n <ng-container *ngIf=\"state === 'loadPending'; else registrationForm\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-container>\n\n <!--Formly schema is rendered-->\n <ng-template #registrationForm>\n <c8y-stepper\n [hideStepProgress]=\"true\"\n c8y-modal-body\n linear\n *ngIf=\"(errorMessages$ | async).length === 0; else errorMessagesPresent\"\n >\n <cdk-step [stepControl]=\"form\">\n <div class=\"p-b-16\">\n <p class=\"modal-subtitle sticky-top\">\n {{ 'Register a single Actility device' | translate }}\n </p>\n <formly-form\n class=\"formly-group-array-cols d-block p-l-24 p-r-24 p-t-16\"\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n ></formly-form>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [labels]=\"registrationStepLabels\"\n (onNext)=\"register($event)\"\n (onCancel)=\"bsModalRef.hide()\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [pending]=\"state === 'registrationPending'\"\n [disabled]=\"!form?.valid\"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step state=\"final\">\n <!--success scenario-->\n <div\n class=\"p-16 text-center\"\n *ngIf=\"state === 'registrationPending'\"\n >\n <c8y-loading></c8y-loading>\n </div>\n <div class=\"m-24\">\n <c8y-operation-result\n class=\"lead m-b-0\"\n type=\"success\"\n *ngIf=\"state === 'registrationSuccess'\"\n text=\"{{ 'Device registered' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n (onCustom)=\"bsModalRef.hide()\"\n [showButtons]=\"{ custom: true }\"\n [labels]=\"finalStepLabels\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n </ng-template>\n\n <!--Failure scenario-->\n <ng-template #errorMessagesPresent>\n <div class=\"m-24\">\n <c8y-operation-result\n class=\"lead\"\n type=\"error\"\n *ngIf=\"state === 'registrationError'\"\n text=\"{{ 'Failed to register' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n <div\n class=\"m-b-8\"\n *ngFor=\"let msg of errorMessages$ | async\"\n data-cy=\"actility-device-registration.component--registration-error\"\n [ngClass]=\"{\n 'text-center': state === 'registrationError',\n 'alert alert-danger': state === 'loadError'\n }\"\n >\n <span [innerHTML]=\"msg | translate\"></span>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"bsModalRef.hide()\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n </ng-template>\n</c8y-modal>\n", dependencies: [{ kind: "component", type: ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "component", type: CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i4.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "component", type: C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }, { kind: "component", type: OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
466
466
  }
467
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationComponent, decorators: [{
467
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationComponent, decorators: [{
468
468
  type: Component,
469
469
  args: [{ selector: 'c8y-actility-registration', imports: [
470
470
  ModalComponent,
@@ -495,10 +495,10 @@ class ActilityDeviceRegistrationButtonComponent {
495
495
  ignoreBackdropClick: true
496
496
  });
497
497
  }
498
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationButtonComponent, deps: [{ token: i1$1.BsModalService }], target: i0.ɵɵFactoryTarget.Component }); }
499
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: ActilityDeviceRegistrationButtonComponent, isStandalone: true, selector: "c8y-actility-registration-button", ngImport: i0, template: "<button title=\"{{ 'Actility LoRa' | translate }}\" type=\"button\" (click)=\"open()\">\n <i c8yIcon=\"c8y-device-connect\"></i>\n {{ 'Actility LoRa' | translate }}\n</button>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
498
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationButtonComponent, deps: [{ token: i1$1.BsModalService }], target: i0.ɵɵFactoryTarget.Component }); }
499
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: ActilityDeviceRegistrationButtonComponent, isStandalone: true, selector: "c8y-actility-registration-button", ngImport: i0, template: "<button title=\"{{ 'Actility LoRa' | translate }}\" type=\"button\" (click)=\"open()\">\n <i c8yIcon=\"c8y-device-connect\"></i>\n {{ 'Actility LoRa' | translate }}\n</button>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
500
500
  }
501
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationButtonComponent, decorators: [{
501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationButtonComponent, decorators: [{
502
502
  type: Component,
503
503
  args: [{ selector: 'c8y-actility-registration-button', imports: [IconDirective, C8yTranslatePipe], template: "<button title=\"{{ 'Actility LoRa' | translate }}\" type=\"button\" (click)=\"open()\">\n <i c8yIcon=\"c8y-device-connect\"></i>\n {{ 'Actility LoRa' | translate }}\n</button>\n" }]
504
504
  }], ctorParameters: () => [{ type: i1$1.BsModalService }] });
@@ -518,10 +518,10 @@ class ActilityDeviceRegistrationFactory {
518
518
  }
519
519
  return actions;
520
520
  }
521
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationFactory, deps: [{ token: i3.TenantUiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
522
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationFactory, providedIn: 'root' }); }
521
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationFactory, deps: [{ token: i3.TenantUiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
522
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationFactory, providedIn: 'root' }); }
523
523
  }
524
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationFactory, decorators: [{
524
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationFactory, decorators: [{
525
525
  type: Injectable,
526
526
  args: [{
527
527
  providedIn: 'root'
@@ -529,19 +529,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
529
529
  }], ctorParameters: () => [{ type: i3.TenantUiService }] });
530
530
 
531
531
  class ActilityDeviceRegistrationModule {
532
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
533
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationModule, imports: [CoreModule,
532
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
533
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationModule, imports: [CoreModule,
534
534
  CommonModule,
535
535
  ActilityDeviceRegistrationButtonComponent,
536
536
  ActilityDeviceRegistrationComponent] }); }
537
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationModule, providers: [
537
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationModule, providers: [
538
538
  ActilityDeviceRegistrationService,
539
539
  hookDeviceRegistration(ActilityDeviceRegistrationFactory)
540
540
  ], imports: [CoreModule,
541
541
  CommonModule,
542
542
  ActilityDeviceRegistrationComponent] }); }
543
543
  }
544
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ActilityDeviceRegistrationModule, decorators: [{
544
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActilityDeviceRegistrationModule, decorators: [{
545
545
  type: NgModule,
546
546
  args: [{
547
547
  imports: [
@@ -24,19 +24,19 @@ class AdvancedSoftwareService extends Service {
24
24
  }
25
25
  return this.isAvailable;
26
26
  }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AdvancedSoftwareService, deps: [{ token: i1.FetchClient }, { token: i2.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
28
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AdvancedSoftwareService }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AdvancedSoftwareService, deps: [{ token: i1.FetchClient }, { token: i2.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
28
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AdvancedSoftwareService }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AdvancedSoftwareService, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AdvancedSoftwareService, decorators: [{
31
31
  type: Injectable
32
32
  }], ctorParameters: () => [{ type: i1.FetchClient }, { type: i2.AppStateService }] });
33
33
 
34
34
  class AdvancedSoftwareModule {
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AdvancedSoftwareModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
36
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.18", ngImport: i0, type: AdvancedSoftwareModule, imports: [CommonModule, CoreModule] }); }
37
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AdvancedSoftwareModule, providers: [AdvancedSoftwareService, hookService('asm', AdvancedSoftwareService)], imports: [CommonModule, CoreModule] }); }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AdvancedSoftwareModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
36
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: AdvancedSoftwareModule, imports: [CommonModule, CoreModule] }); }
37
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AdvancedSoftwareModule, providers: [AdvancedSoftwareService, hookService('asm', AdvancedSoftwareService)], imports: [CommonModule, CoreModule] }); }
38
38
  }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AdvancedSoftwareModule, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AdvancedSoftwareModule, decorators: [{
40
40
  type: NgModule,
41
41
  args: [{
42
42
  imports: [CommonModule, CoreModule],
@@ -44,10 +44,10 @@ class AgentStepFeedbackComponent {
44
44
  this.collapsed = true;
45
45
  }
46
46
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AgentStepFeedbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: AgentStepFeedbackComponent, isStandalone: true, selector: "c8y-agent-step-feedback", inputs: { step: "step", label: "label", loading: "loading", collapsed: "collapsed", canCollapse: "canCollapse" }, host: { classAttribute: "agent-step-feedback" }, usesOnChanges: true, ngImport: i0, template: "@if (!step.reasoning) {\n <div [innerHTML]=\"step.text | markdownToHtml | async\"></div>\n}\n@if (label) {\n <c8y-list-group class=\"m-t-16 m-b-16\">\n <c8y-li\n [active]=\"!loading\"\n [collapsed]=\"collapsed\"\n >\n <c8y-li-icon>\n <span\n class=\"btn-ai btn-ai-hint btn-sm\"\n [ngClass]=\"{ working: loading }\"\n >\n <span></span>\n </span>\n </c8y-li-icon>\n <c8y-li-body>\n {{ label | translate }}\n </c8y-li-body>\n\n @if (canCollapse) {\n <c8y-li-collapse>\n @if (step.reasoning) {\n <div [innerHTML]=\"step.reasoning | markdownToHtml | async\"></div>\n } @else if (step) {\n <pre\n class=\"fit-w\"\n style=\"max-height: 320px\"\n >{{ step | json }}</pre\n >\n }\n </c8y-li-collapse>\n }\n </c8y-li>\n </c8y-list-group>\n}\n", dependencies: [{ kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "pipe", type: MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AgentStepFeedbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: AgentStepFeedbackComponent, isStandalone: true, selector: "c8y-agent-step-feedback", inputs: { step: "step", label: "label", loading: "loading", collapsed: "collapsed", canCollapse: "canCollapse" }, host: { classAttribute: "agent-step-feedback" }, usesOnChanges: true, ngImport: i0, template: "@if (!step.reasoning) {\n <div [innerHTML]=\"step.text | markdownToHtml | async\"></div>\n}\n@if (label) {\n <c8y-list-group class=\"m-t-16 m-b-16\">\n <c8y-li\n [active]=\"!loading\"\n [collapsed]=\"collapsed\"\n >\n <c8y-li-icon>\n <span\n class=\"btn-ai btn-ai-hint btn-sm\"\n [ngClass]=\"{ working: loading }\"\n >\n <span></span>\n </span>\n </c8y-li-icon>\n <c8y-li-body>\n {{ label | translate }}\n </c8y-li-body>\n\n @if (canCollapse) {\n <c8y-li-collapse>\n @if (step.reasoning) {\n <div [innerHTML]=\"step.reasoning | markdownToHtml | async\"></div>\n } @else if (step) {\n <pre\n class=\"fit-w\"\n style=\"max-height: 320px\"\n >{{ step | json }}</pre\n >\n }\n </c8y-li-collapse>\n }\n </c8y-li>\n </c8y-list-group>\n}\n", dependencies: [{ kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "pipe", type: MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AgentStepFeedbackComponent, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AgentStepFeedbackComponent, decorators: [{
51
51
  type: Component,
52
52
  args: [{ selector: 'c8y-agent-step-feedback', standalone: true, imports: [
53
53
  ListGroupComponent,
@@ -269,10 +269,10 @@ class AgentChatComponent {
269
269
  // which is already in the messages array we need to emit a new array reference
270
270
  this.messages$.next([...this.messages$.value]);
271
271
  }
272
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AgentChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
273
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: AgentChatComponent, isStandalone: true, selector: "c8y-agent-chat", inputs: { agent: "agent", suggestions: "suggestions", title: "title", headline: "headline", welcomeText: "welcomeText", autoInstallAgents: "autoInstallAgents", variables: "variables", stepRenderComponent: "stepRenderComponent" }, outputs: { onMessageDelta: "onMessageDelta", onMessageText: "onMessageText", onMessageFinish: "onMessageFinish", onToolResult: "onToolResult" }, ngImport: i0, template: "@if (hasError && isLoading) {\n <c8y-loading class=\"m-auto\"></c8y-loading>\n}\n@if (hasError && !isLoading) {\n <c8y-ui-empty-state\n class=\"m-auto\"\n [icon]=\"'disclaimer'\"\n [title]=\"'An error occurred' | translate\"\n [subtitle]=\"errorMsg | translate\"\n [horizontal]=\"true\"\n >\n @if (canCreate) {\n <div class=\"text-center m-t-16 m-b-16\">\n <button\n class=\"btn btn-primary\"\n (click)=\"createAgent()\"\n >\n {{ 'Create agent' | translate }}\n </button>\n </div>\n }\n </c8y-ui-empty-state>\n}\n\n@if (!hasError) {\n <c8y-ai-chat\n (onMessage)=\"sendMessage($event)\"\n [isLoading]=\"isLoading\"\n (onCancel)=\"cancel()\"\n [config]=\"{ title: title, headline: headline, welcomeText: welcomeText }\"\n [prompt]=\"prompt\"\n >\n @for (message of messages$ | async; track $index; let i = $index) {\n <c8y-ai-chat-message\n [message]=\"{ role: message.role, content: '', timestamp: message.timestamp }\"\n >\n @if (!message.componentSteps$) {\n <div [innerHTML]=\"message.content | markdownToHtml | async\"></div>\n }\n @for (step of message.componentSteps$ | async; track $index) {\n @if (typeof step.content === 'string') {\n <div [innerHTML]=\"step.content | markdownToHtml | async\"></div>\n } @else {\n <ng-container\n [ngComponentOutlet]=\"step.content\"\n [ngComponentOutletInputs]=\"{ step: step.origin }\"\n ></ng-container>\n }\n }\n\n @if (message.role === 'user') {\n <c8y-ai-chat-message-action\n icon=\"pencil\"\n [tooltip]=\"'Edit and resend this message' | translate\"\n [disabled]=\"isLoading\"\n (click)=\"reprompt(message)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && (i < (messages$ | async)?.length - 1 || !isLoading)) {\n <c8y-ai-chat-message-action\n icon=\"thumbs-up\"\n [tooltip]=\"'This is useful' | translate\"\n [disabled]=\"isLoading\"\n (click)=\"rate(message, true)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && (i < (messages$ | async)?.length - 1 || !isLoading)) {\n <c8y-ai-chat-message-action\n icon=\"thumbs-down\"\n [tooltip]=\"'This is not useful' | translate\"\n [disabled]=\"isLoading\"\n (click)=\"rate(message, false)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && (i < (messages$ | async)?.length - 1 || !isLoading)) {\n <c8y-ai-chat-message-action\n icon=\"refresh\"\n [tooltip]=\"'Regenerate this response' | translate\"\n [disabled]=\"isLoading\"\n (click)=\"reload(message)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (\n !message.content && message.role === 'assistant' && i === (messages$ | async)?.length - 1\n ) {\n <div class=\"text-center\">\n <c8y-loading></c8y-loading>\n </div>\n }\n </c8y-ai-chat-message>\n }\n\n @for (suggestion of suggestions; track $index) {\n <c8y-ai-chat-suggestion\n [icon]=\"suggestion.icon || 'c8y-bulb'\"\n [useAiButtons]=\"true\"\n [label]=\"suggestion.label\"\n [prompt]=\"suggestion.prompt\"\n (suggestionClicked)=\"sendMessage($event)\"\n [disabled]=\"isLoading\"\n ></c8y-ai-chat-suggestion>\n }\n </c8y-ai-chat>\n}\n", dependencies: [{ kind: "component", type: AiChatComponent, selector: "c8y-ai-chat", inputs: ["isLoading", "disabled", "prompt", "config"], outputs: ["onMessage", "onCancel"] }, { kind: "component", type: AiChatSuggestionComponent, selector: "c8y-ai-chat-suggestion", inputs: ["label", "prompt", "icon", "useAiButtons", "disabled"], outputs: ["suggestionClicked"] }, { kind: "component", type: AiChatMessageComponent, selector: "c8y-ai-chat-message", inputs: ["role", "message"] }, { kind: "component", type: AiChatMessageActionComponent, selector: "c8y-ai-chat-message-action", inputs: ["disabled", "tooltip", "icon"], outputs: ["click"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
272
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AgentChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
273
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: AgentChatComponent, isStandalone: true, selector: "c8y-agent-chat", inputs: { agent: "agent", suggestions: "suggestions", title: "title", headline: "headline", welcomeText: "welcomeText", autoInstallAgents: "autoInstallAgents", variables: "variables", stepRenderComponent: "stepRenderComponent" }, outputs: { onMessageDelta: "onMessageDelta", onMessageText: "onMessageText", onMessageFinish: "onMessageFinish", onToolResult: "onToolResult" }, ngImport: i0, template: "@if (hasError && isLoading) {\n <c8y-loading class=\"m-auto\"></c8y-loading>\n}\n@if (hasError && !isLoading) {\n <c8y-ui-empty-state\n class=\"m-auto\"\n [icon]=\"'disclaimer'\"\n [title]=\"'An error occurred' | translate\"\n [subtitle]=\"errorMsg | translate\"\n [horizontal]=\"true\"\n >\n @if (canCreate) {\n <div class=\"text-center m-t-16 m-b-16\">\n <button\n class=\"btn btn-primary\"\n (click)=\"createAgent()\"\n >\n {{ 'Create agent' | translate }}\n </button>\n </div>\n }\n </c8y-ui-empty-state>\n}\n\n@if (!hasError) {\n <c8y-ai-chat\n (onMessage)=\"sendMessage($event)\"\n [isLoading]=\"isLoading\"\n (onCancel)=\"cancel()\"\n [config]=\"{ title: title, headline: headline, welcomeText: welcomeText }\"\n [prompt]=\"prompt\"\n >\n @for (message of messages$ | async; track $index; let i = $index) {\n <c8y-ai-chat-message\n [message]=\"{ role: message.role, content: '', timestamp: message.timestamp }\"\n >\n @if (!message.componentSteps$) {\n <div [innerHTML]=\"message.content | markdownToHtml | async\"></div>\n }\n @for (step of message.componentSteps$ | async; track $index) {\n @if (typeof step.content === 'string') {\n <div [innerHTML]=\"step.content | markdownToHtml | async\"></div>\n } @else {\n <ng-container\n [ngComponentOutlet]=\"step.content\"\n [ngComponentOutletInputs]=\"{ step: step.origin }\"\n ></ng-container>\n }\n }\n\n @if (message.role === 'user') {\n <c8y-ai-chat-message-action\n icon=\"pencil\"\n [tooltip]=\"'Edit and resend this message' | translate\"\n [disabled]=\"isLoading\"\n (click)=\"reprompt(message)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && (i < (messages$ | async)?.length - 1 || !isLoading)) {\n <c8y-ai-chat-message-action\n icon=\"thumbs-up\"\n [tooltip]=\"'This is useful' | translate\"\n [disabled]=\"isLoading\"\n (click)=\"rate(message, true)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && (i < (messages$ | async)?.length - 1 || !isLoading)) {\n <c8y-ai-chat-message-action\n icon=\"thumbs-down\"\n [tooltip]=\"'This is not useful' | translate\"\n [disabled]=\"isLoading\"\n (click)=\"rate(message, false)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && (i < (messages$ | async)?.length - 1 || !isLoading)) {\n <c8y-ai-chat-message-action\n icon=\"refresh\"\n [tooltip]=\"'Regenerate this response' | translate\"\n [disabled]=\"isLoading\"\n (click)=\"reload(message)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (\n !message.content && message.role === 'assistant' && i === (messages$ | async)?.length - 1\n ) {\n <div class=\"text-center\">\n <c8y-loading></c8y-loading>\n </div>\n }\n </c8y-ai-chat-message>\n }\n\n @for (suggestion of suggestions; track $index) {\n <c8y-ai-chat-suggestion\n [icon]=\"suggestion.icon || 'c8y-bulb'\"\n [useAiButtons]=\"true\"\n [label]=\"suggestion.label\"\n [prompt]=\"suggestion.prompt\"\n (suggestionClicked)=\"sendMessage($event)\"\n [disabled]=\"isLoading\"\n ></c8y-ai-chat-suggestion>\n }\n </c8y-ai-chat>\n}\n", dependencies: [{ kind: "component", type: AiChatComponent, selector: "c8y-ai-chat", inputs: ["isLoading", "disabled", "prompt", "config"], outputs: ["onMessage", "onCancel"] }, { kind: "component", type: AiChatSuggestionComponent, selector: "c8y-ai-chat-suggestion", inputs: ["label", "prompt", "icon", "useAiButtons", "disabled"], outputs: ["suggestionClicked"] }, { kind: "component", type: AiChatMessageComponent, selector: "c8y-ai-chat-message", inputs: ["role", "message"] }, { kind: "component", type: AiChatMessageActionComponent, selector: "c8y-ai-chat-message-action", inputs: ["disabled", "tooltip", "icon"], outputs: ["click"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
274
274
  }
275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AgentChatComponent, decorators: [{
275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AgentChatComponent, decorators: [{
276
276
  type: Component,
277
277
  args: [{ selector: 'c8y-agent-chat', imports: [
278
278
  AiChatComponent,
@@ -370,10 +370,10 @@ class WidgetAiChatSectionComponent {
370
370
  this.alertService.danger(gettext('There was an error processing the AI response.'));
371
371
  }
372
372
  }
373
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: WidgetAiChatSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
374
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: WidgetAiChatSectionComponent, isStandalone: true, selector: "c8y-widget-ai-chat-section", inputs: { suggestions: "suggestions", agent: "agent", headline: "headline", title: "title", welcomeText: "welcomeText", variables: "variables", useContextAsVariable: "useContextAsVariable", contextVariableName: "contextVariableName", loadRenderStepComponent: "loadRenderStepComponent" }, ngImport: i0, template: "<c8y-widget-config-feedback>\n <div\n class=\"m-l-4 btn-ai btn-ai-hint btn-sm\"\n [title]=\"'AI code assistant' | translate\"\n >\n <span></span>\n </div>\n</c8y-widget-config-feedback>\n\n<c8y-agent-chat\n [title]=\"title | translate\"\n [headline]=\"headline | translate\"\n [welcomeText]=\"welcomeText | translate\"\n #agentChat\n [suggestions]=\"(agentChat.messages$ | async)?.length === 0 ? suggestions : []\"\n [agent]=\"agent\"\n [variables]=\"variables\"\n [stepRenderComponent]=\"_renderStepComponent\"\n (onToolResult)=\"toolResultHandler($event)\"\n></c8y-agent-chat>\n", dependencies: [{ kind: "component", type: AgentChatComponent, selector: "c8y-agent-chat", inputs: ["agent", "suggestions", "title", "headline", "welcomeText", "autoInstallAgents", "variables", "stepRenderComponent"], outputs: ["onMessageDelta", "onMessageText", "onMessageFinish", "onToolResult"] }, { kind: "component", type: WidgetConfigFeedbackComponent, selector: "c8y-widget-config-feedback" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
373
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: WidgetAiChatSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
374
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: WidgetAiChatSectionComponent, isStandalone: true, selector: "c8y-widget-ai-chat-section", inputs: { suggestions: "suggestions", agent: "agent", headline: "headline", title: "title", welcomeText: "welcomeText", variables: "variables", useContextAsVariable: "useContextAsVariable", contextVariableName: "contextVariableName", loadRenderStepComponent: "loadRenderStepComponent" }, ngImport: i0, template: "<c8y-widget-config-feedback>\n <div\n class=\"m-l-4 btn-ai btn-ai-hint btn-sm\"\n [title]=\"'AI code assistant' | translate\"\n >\n <span></span>\n </div>\n</c8y-widget-config-feedback>\n\n<c8y-agent-chat\n [title]=\"title | translate\"\n [headline]=\"headline | translate\"\n [welcomeText]=\"welcomeText | translate\"\n #agentChat\n [suggestions]=\"(agentChat.messages$ | async)?.length === 0 ? suggestions : []\"\n [agent]=\"agent\"\n [variables]=\"variables\"\n [stepRenderComponent]=\"_renderStepComponent\"\n (onToolResult)=\"toolResultHandler($event)\"\n></c8y-agent-chat>\n", dependencies: [{ kind: "component", type: AgentChatComponent, selector: "c8y-agent-chat", inputs: ["agent", "suggestions", "title", "headline", "welcomeText", "autoInstallAgents", "variables", "stepRenderComponent"], outputs: ["onMessageDelta", "onMessageText", "onMessageFinish", "onToolResult"] }, { kind: "component", type: WidgetConfigFeedbackComponent, selector: "c8y-widget-config-feedback" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
375
375
  }
376
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: WidgetAiChatSectionComponent, decorators: [{
376
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: WidgetAiChatSectionComponent, decorators: [{
377
377
  type: Component,
378
378
  args: [{ selector: 'c8y-widget-ai-chat-section', imports: [AgentChatComponent, C8yTranslatePipe, AsyncPipe, WidgetConfigFeedbackComponent], standalone: true, template: "<c8y-widget-config-feedback>\n <div\n class=\"m-l-4 btn-ai btn-ai-hint btn-sm\"\n [title]=\"'AI code assistant' | translate\"\n >\n <span></span>\n </div>\n</c8y-widget-config-feedback>\n\n<c8y-agent-chat\n [title]=\"title | translate\"\n [headline]=\"headline | translate\"\n [welcomeText]=\"welcomeText | translate\"\n #agentChat\n [suggestions]=\"(agentChat.messages$ | async)?.length === 0 ? suggestions : []\"\n [agent]=\"agent\"\n [variables]=\"variables\"\n [stepRenderComponent]=\"_renderStepComponent\"\n (onToolResult)=\"toolResultHandler($event)\"\n></c8y-agent-chat>\n" }]
379
379
  }], propDecorators: { suggestions: [{
@@ -32,10 +32,10 @@ class AiChatMessageActionComponent {
32
32
  */
33
33
  this.click = new EventEmitter();
34
34
  }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AiChatMessageActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
36
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: AiChatMessageActionComponent, isStandalone: true, selector: "c8y-ai-chat-message-action", inputs: { disabled: "disabled", tooltip: "tooltip", icon: "icon" }, outputs: { click: "click" }, ngImport: i0, template: "<button\n class=\"btn btn-dot text-muted\"\n [attr.aria-label]=\"tooltip | translate\"\n [tooltip]=\"tooltip | translate\"\n [adaptivePosition]=\"true\"\n [delay]=\"500\"\n (click)=\"click.emit()\"\n [disabled]=\"disabled\"\n>\n <i\n class=\"text-12\"\n [c8yIcon]=\"icon\"\n ></i>\n</button>\n", dependencies: [{ kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AiChatMessageActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: AiChatMessageActionComponent, isStandalone: true, selector: "c8y-ai-chat-message-action", inputs: { disabled: "disabled", tooltip: "tooltip", icon: "icon" }, outputs: { click: "click" }, ngImport: i0, template: "<button\n class=\"btn btn-dot text-muted\"\n [attr.aria-label]=\"tooltip | translate\"\n [tooltip]=\"tooltip | translate\"\n [adaptivePosition]=\"true\"\n [delay]=\"500\"\n (click)=\"click.emit()\"\n [disabled]=\"disabled\"\n>\n <i\n class=\"text-12\"\n [c8yIcon]=\"icon\"\n ></i>\n</button>\n", dependencies: [{ kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
37
37
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AiChatMessageActionComponent, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AiChatMessageActionComponent, decorators: [{
39
39
  type: Component,
40
40
  args: [{ selector: 'c8y-ai-chat-message-action', standalone: true, imports: [TooltipModule, C8yTranslatePipe, IconDirective], template: "<button\n class=\"btn btn-dot text-muted\"\n [attr.aria-label]=\"tooltip | translate\"\n [tooltip]=\"tooltip | translate\"\n [adaptivePosition]=\"true\"\n [delay]=\"500\"\n (click)=\"click.emit()\"\n [disabled]=\"disabled\"\n>\n <i\n class=\"text-12\"\n [c8yIcon]=\"icon\"\n ></i>\n</button>\n" }]
41
41
  }], propDecorators: { disabled: [{
@@ -89,10 +89,10 @@ class AiChatMessageComponent {
89
89
  return this.translateService.instant(tpl, { time });
90
90
  }, ...(ngDevMode ? [{ debugName: "messageContentAriaLabel" }] : []));
91
91
  }
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AiChatMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: AiChatMessageComponent, isStandalone: true, selector: "c8y-ai-chat-message", inputs: { role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"d-col p-b-16\"\n [attr.aria-label]=\"ariaLabel()\"\n role=\"article\"\n>\n <div\n class=\"chat-message text-break-word\"\n [ngClass]=\"{\n 'user-message': message()?.role === 'user' || role() === 'user',\n 'agent-message': message()?.role === 'assistant' || role() === 'assistant'\n }\"\n >\n <div\n class=\"message-content\"\n [attr.aria-label]=\"messageContentAriaLabel()\"\n [innerHTML]=\"message()?.content | markdownToHtml | async\"\n ></div>\n <ng-content select=\":not(c8y-ai-chat-message-action)\"></ng-content>\n @if (message()?.timestamp) {\n <div class=\"message-timestamp\">\n <span [tooltip]=\"message()?.timestamp | c8yDate\">\n {{ message()?.timestamp | c8yDate: 'adaptiveDate' }}\n </span>\n </div>\n }\n </div>\n <div\n class=\"message-action\"\n [attr.aria-label]=\"'Message actions' | translate\"\n role=\"toolbar\"\n [ngClass]=\"{\n 'user-action showOnHover': message()?.role === 'user' || role() === 'user',\n 'agent-action p-l-16': message()?.role === 'assistant' || role() === 'assistant'\n }\"\n >\n <ng-content select=\"c8y-ai-chat-message-action\"></ng-content>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }] }); }
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AiChatMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: AiChatMessageComponent, isStandalone: true, selector: "c8y-ai-chat-message", inputs: { role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"d-col p-b-16\"\n [attr.aria-label]=\"ariaLabel()\"\n role=\"article\"\n>\n <div\n class=\"chat-message text-break-word\"\n [ngClass]=\"{\n 'user-message': message()?.role === 'user' || role() === 'user',\n 'agent-message': message()?.role === 'assistant' || role() === 'assistant'\n }\"\n >\n <div\n class=\"message-content\"\n [attr.aria-label]=\"messageContentAriaLabel()\"\n [innerHTML]=\"message()?.content | markdownToHtml | async\"\n ></div>\n <ng-content select=\":not(c8y-ai-chat-message-action)\"></ng-content>\n @if (message()?.timestamp) {\n <div class=\"message-timestamp\">\n <span [tooltip]=\"message()?.timestamp | c8yDate\">\n {{ message()?.timestamp | c8yDate: 'adaptiveDate' }}\n </span>\n </div>\n }\n </div>\n <div\n class=\"message-action\"\n [attr.aria-label]=\"'Message actions' | translate\"\n role=\"toolbar\"\n [ngClass]=\"{\n 'user-action showOnHover': message()?.role === 'user' || role() === 'user',\n 'agent-action p-l-16': message()?.role === 'assistant' || role() === 'assistant'\n }\"\n >\n <ng-content select=\"c8y-ai-chat-message-action\"></ng-content>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }] }); }
94
94
  }
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AiChatMessageComponent, decorators: [{
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AiChatMessageComponent, decorators: [{
96
96
  type: Component,
97
97
  args: [{ selector: 'c8y-ai-chat-message', standalone: true, imports: [MarkdownToHtmlPipe, AsyncPipe, NgClass, TooltipModule, C8yTranslatePipe, DatePipe], template: "<div\n class=\"d-col p-b-16\"\n [attr.aria-label]=\"ariaLabel()\"\n role=\"article\"\n>\n <div\n class=\"chat-message text-break-word\"\n [ngClass]=\"{\n 'user-message': message()?.role === 'user' || role() === 'user',\n 'agent-message': message()?.role === 'assistant' || role() === 'assistant'\n }\"\n >\n <div\n class=\"message-content\"\n [attr.aria-label]=\"messageContentAriaLabel()\"\n [innerHTML]=\"message()?.content | markdownToHtml | async\"\n ></div>\n <ng-content select=\":not(c8y-ai-chat-message-action)\"></ng-content>\n @if (message()?.timestamp) {\n <div class=\"message-timestamp\">\n <span [tooltip]=\"message()?.timestamp | c8yDate\">\n {{ message()?.timestamp | c8yDate: 'adaptiveDate' }}\n </span>\n </div>\n }\n </div>\n <div\n class=\"message-action\"\n [attr.aria-label]=\"'Message actions' | translate\"\n role=\"toolbar\"\n [ngClass]=\"{\n 'user-action showOnHover': message()?.role === 'user' || role() === 'user',\n 'agent-action p-l-16': message()?.role === 'assistant' || role() === 'assistant'\n }\"\n >\n <ng-content select=\"c8y-ai-chat-message-action\"></ng-content>\n </div>\n</div>\n" }]
98
98
  }], propDecorators: { role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }] } });
@@ -130,10 +130,10 @@ class AiChatSuggestionComponent {
130
130
  timestamp: new Date().toISOString()
131
131
  });
132
132
  }
133
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AiChatSuggestionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
134
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: AiChatSuggestionComponent, isStandalone: true, selector: "c8y-ai-chat-suggestion", inputs: { label: "label", prompt: "prompt", icon: "icon", useAiButtons: "useAiButtons", disabled: "disabled" }, outputs: { suggestionClicked: "suggestionClicked" }, ngImport: i0, template: "@if (!useAiButtons) {\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"prompt | translate\"\n (click)=\"suggest()\"\n [disabled]=\"disabled\"\n >\n <i [c8yIcon]=\"icon\"></i>\n {{ label | translate }}\n </button>\n} @else {\n <button\n class=\"btn btn-sm btn-ai\"\n [title]=\"prompt | translate\"\n (click)=\"suggest()\"\n [disabled]=\"disabled\"\n >\n <span>{{ label | translate }}</span>\n </button>\n}\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
133
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AiChatSuggestionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
134
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: AiChatSuggestionComponent, isStandalone: true, selector: "c8y-ai-chat-suggestion", inputs: { label: "label", prompt: "prompt", icon: "icon", useAiButtons: "useAiButtons", disabled: "disabled" }, outputs: { suggestionClicked: "suggestionClicked" }, ngImport: i0, template: "@if (!useAiButtons) {\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"prompt | translate\"\n (click)=\"suggest()\"\n [disabled]=\"disabled\"\n >\n <i [c8yIcon]=\"icon\"></i>\n {{ label | translate }}\n </button>\n} @else {\n <button\n class=\"btn btn-sm btn-ai\"\n [title]=\"prompt | translate\"\n (click)=\"suggest()\"\n [disabled]=\"disabled\"\n >\n <span>{{ label | translate }}</span>\n </button>\n}\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
135
135
  }
136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AiChatSuggestionComponent, decorators: [{
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AiChatSuggestionComponent, decorators: [{
137
137
  type: Component,
138
138
  args: [{ selector: 'c8y-ai-chat-suggestion', standalone: true, imports: [IconDirective, C8yTranslatePipe], template: "@if (!useAiButtons) {\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"prompt | translate\"\n (click)=\"suggest()\"\n [disabled]=\"disabled\"\n >\n <i [c8yIcon]=\"icon\"></i>\n {{ label | translate }}\n </button>\n} @else {\n <button\n class=\"btn btn-sm btn-ai\"\n [title]=\"prompt | translate\"\n (click)=\"suggest()\"\n [disabled]=\"disabled\"\n >\n <span>{{ label | translate }}</span>\n </button>\n}\n" }]
139
139
  }], propDecorators: { label: [{
@@ -227,10 +227,10 @@ class AiChatComponent {
227
227
  cancel() {
228
228
  this.onCancel.emit();
229
229
  }
230
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AiChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
231
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: AiChatComponent, isStandalone: true, selector: "c8y-ai-chat", inputs: { isLoading: "isLoading", disabled: "disabled", prompt: "prompt", config: "config" }, outputs: { onMessage: "onMessage", onCancel: "onCancel" }, host: { classAttribute: "d-contents" }, queries: [{ propertyName: "messages", predicate: AiChatMessageComponent }], ngImport: i0, template: "<div\n class=\"d-col fit-h fit-w flex-grow\"\n [attr.aria-label]=\"config.headline | translate\"\n role=\"region\"\n>\n @if (messages.length > 0) {\n <div\n class=\"inner-scroll flex-grow d-col-reverse min-height-0 bg-level-0\"\n [attr.aria-label]=\"'Chat conversation' | translate\"\n aria-live=\"polite\"\n aria-atomic=\"false\"\n role=\"log\"\n >\n <div class=\"d-col p-l-16 p-r-16\">\n <ng-content select=\"c8y-ai-chat-message\"></ng-content>\n <ng-content></ng-content>\n </div>\n </div>\n }\n <div [ngClass]=\"{ 'd-col fit-h': messages.length === 0 }\">\n @if (messages.length === 0) {\n <div\n class=\"p-24\"\n aria-live=\"polite\"\n role=\"status\"\n >\n <h4 class=\"m-b-16 text-medium\">{{ config.headline | translate }}</h4>\n <p class=\"p-b-8 text-balance\">{{ config.title | translate }}</p>\n <p class=\"text-muted text-balance\">{{ config.welcomeText | translate }}</p>\n </div>\n }\n <div class=\"chat-input bg-level-1\">\n <div class=\"d-flex inner-scroll a-i-center gap-8 p-l-16 p-r-16 p-b-8\">\n <ng-content select=\"c8y-ai-chat-suggestion\"></ng-content>\n </div>\n <div class=\"chat-input-group\">\n <label\n class=\"sr-only\"\n for=\"chat-input-{{ componentId }}\"\n >\n {{ config.placeholder | translate }}\n </label>\n <textarea\n class=\"form-control no-resize\"\n style=\"max-height: 200px !important\"\n [attr.aria-label]=\"config.placeholder | translate\"\n id=\"chat-input-{{ componentId }}\"\n placeholder=\"{{ config.placeholder | translate }}\"\n [attr.aria-describedby]=\"config.disclaimerText ? 'chat-disclaimer-' + componentId : null\"\n [attr.aria-busy]=\"isLoading\"\n [(ngModel)]=\"prompt\"\n (keydown.enter)=\"sendMessage($event)\"\n [disabled]=\"isLoading || disabled\"\n c8y-textarea-autoresize\n ></textarea>\n <div class=\"chat-input-group-btn\">\n @if (!isLoading) {\n <button\n class=\"btn btn-dot\"\n [attr.title]=\"config.sendButtonText | translate\"\n [attr.aria-label]=\"config.sendButtonText | translate\"\n type=\"button\"\n (click)=\"sendMessage($event)\"\n [disabled]=\"disabled || prompt.trim().length === 0\"\n >\n <i [c8yIcon]=\"config.userInterfaceIcons?.send || 'arrow-circle-right'\"></i>\n </button>\n } @else {\n <button\n class=\"btn btn-dot btn-dot--danger\"\n [attr.title]=\"config.cancelButtonText | translate\"\n [attr.aria-label]=\"config.cancelButtonText | translate\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n <i [c8yIcon]=\"config.userInterfaceIcons?.cancel || 'stop'\"></i>\n </button>\n }\n </div>\n </div>\n @if (config.disclaimerText) {\n <div\n class=\"text-muted m-b-8 text-10 p-l-16\"\n id=\"chat-disclaimer-{{ componentId }}\"\n role=\"note\"\n >\n {{ config.disclaimerText | translate }}\n </div>\n }\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TextareaAutoresizeDirective, selector: "[c8y-textarea-autoresize]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
230
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AiChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
231
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: AiChatComponent, isStandalone: true, selector: "c8y-ai-chat", inputs: { isLoading: "isLoading", disabled: "disabled", prompt: "prompt", config: "config" }, outputs: { onMessage: "onMessage", onCancel: "onCancel" }, host: { classAttribute: "d-contents" }, queries: [{ propertyName: "messages", predicate: AiChatMessageComponent }], ngImport: i0, template: "<div\n class=\"d-col fit-h fit-w flex-grow\"\n [attr.aria-label]=\"config.headline | translate\"\n role=\"region\"\n>\n @if (messages.length > 0) {\n <div\n class=\"inner-scroll flex-grow d-col-reverse min-height-0 bg-level-0\"\n [attr.aria-label]=\"'Chat conversation' | translate\"\n aria-live=\"polite\"\n aria-atomic=\"false\"\n role=\"log\"\n >\n <div class=\"d-col p-l-16 p-r-16\">\n <ng-content select=\"c8y-ai-chat-message\"></ng-content>\n <ng-content></ng-content>\n </div>\n </div>\n }\n <div [ngClass]=\"{ 'd-col fit-h': messages.length === 0 }\">\n @if (messages.length === 0) {\n <div\n class=\"p-24\"\n aria-live=\"polite\"\n role=\"status\"\n >\n <h4 class=\"m-b-16 text-medium\">{{ config.headline | translate }}</h4>\n <p class=\"p-b-8 text-balance\">{{ config.title | translate }}</p>\n <p class=\"text-muted text-balance\">{{ config.welcomeText | translate }}</p>\n </div>\n }\n <div class=\"chat-input bg-level-1\">\n <div class=\"d-flex inner-scroll a-i-center gap-8 p-l-16 p-r-16 p-b-8\">\n <ng-content select=\"c8y-ai-chat-suggestion\"></ng-content>\n </div>\n <div class=\"chat-input-group\">\n <label\n class=\"sr-only\"\n for=\"chat-input-{{ componentId }}\"\n >\n {{ config.placeholder | translate }}\n </label>\n <textarea\n class=\"form-control no-resize\"\n style=\"max-height: 200px !important\"\n [attr.aria-label]=\"config.placeholder | translate\"\n id=\"chat-input-{{ componentId }}\"\n placeholder=\"{{ config.placeholder | translate }}\"\n [attr.aria-describedby]=\"config.disclaimerText ? 'chat-disclaimer-' + componentId : null\"\n [attr.aria-busy]=\"isLoading\"\n [(ngModel)]=\"prompt\"\n (keydown.enter)=\"sendMessage($event)\"\n [disabled]=\"isLoading || disabled\"\n c8y-textarea-autoresize\n ></textarea>\n <div class=\"chat-input-group-btn\">\n @if (!isLoading) {\n <button\n class=\"btn btn-dot\"\n [attr.title]=\"config.sendButtonText | translate\"\n [attr.aria-label]=\"config.sendButtonText | translate\"\n type=\"button\"\n (click)=\"sendMessage($event)\"\n [disabled]=\"disabled || prompt.trim().length === 0\"\n >\n <i [c8yIcon]=\"config.userInterfaceIcons?.send || 'arrow-circle-right'\"></i>\n </button>\n } @else {\n <button\n class=\"btn btn-dot btn-dot--danger\"\n [attr.title]=\"config.cancelButtonText | translate\"\n [attr.aria-label]=\"config.cancelButtonText | translate\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n <i [c8yIcon]=\"config.userInterfaceIcons?.cancel || 'stop'\"></i>\n </button>\n }\n </div>\n </div>\n @if (config.disclaimerText) {\n <div\n class=\"text-muted m-b-8 text-10 p-l-16\"\n id=\"chat-disclaimer-{{ componentId }}\"\n role=\"note\"\n >\n {{ config.disclaimerText | translate }}\n </div>\n }\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TextareaAutoresizeDirective, selector: "[c8y-textarea-autoresize]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
232
232
  }
233
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AiChatComponent, decorators: [{
233
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AiChatComponent, decorators: [{
234
234
  type: Component,
235
235
  args: [{ selector: 'c8y-ai-chat', imports: [C8yTranslatePipe, FormsModule, TextareaAutoresizeDirective, IconDirective, NgClass], standalone: true, host: { class: 'd-contents' }, template: "<div\n class=\"d-col fit-h fit-w flex-grow\"\n [attr.aria-label]=\"config.headline | translate\"\n role=\"region\"\n>\n @if (messages.length > 0) {\n <div\n class=\"inner-scroll flex-grow d-col-reverse min-height-0 bg-level-0\"\n [attr.aria-label]=\"'Chat conversation' | translate\"\n aria-live=\"polite\"\n aria-atomic=\"false\"\n role=\"log\"\n >\n <div class=\"d-col p-l-16 p-r-16\">\n <ng-content select=\"c8y-ai-chat-message\"></ng-content>\n <ng-content></ng-content>\n </div>\n </div>\n }\n <div [ngClass]=\"{ 'd-col fit-h': messages.length === 0 }\">\n @if (messages.length === 0) {\n <div\n class=\"p-24\"\n aria-live=\"polite\"\n role=\"status\"\n >\n <h4 class=\"m-b-16 text-medium\">{{ config.headline | translate }}</h4>\n <p class=\"p-b-8 text-balance\">{{ config.title | translate }}</p>\n <p class=\"text-muted text-balance\">{{ config.welcomeText | translate }}</p>\n </div>\n }\n <div class=\"chat-input bg-level-1\">\n <div class=\"d-flex inner-scroll a-i-center gap-8 p-l-16 p-r-16 p-b-8\">\n <ng-content select=\"c8y-ai-chat-suggestion\"></ng-content>\n </div>\n <div class=\"chat-input-group\">\n <label\n class=\"sr-only\"\n for=\"chat-input-{{ componentId }}\"\n >\n {{ config.placeholder | translate }}\n </label>\n <textarea\n class=\"form-control no-resize\"\n style=\"max-height: 200px !important\"\n [attr.aria-label]=\"config.placeholder | translate\"\n id=\"chat-input-{{ componentId }}\"\n placeholder=\"{{ config.placeholder | translate }}\"\n [attr.aria-describedby]=\"config.disclaimerText ? 'chat-disclaimer-' + componentId : null\"\n [attr.aria-busy]=\"isLoading\"\n [(ngModel)]=\"prompt\"\n (keydown.enter)=\"sendMessage($event)\"\n [disabled]=\"isLoading || disabled\"\n c8y-textarea-autoresize\n ></textarea>\n <div class=\"chat-input-group-btn\">\n @if (!isLoading) {\n <button\n class=\"btn btn-dot\"\n [attr.title]=\"config.sendButtonText | translate\"\n [attr.aria-label]=\"config.sendButtonText | translate\"\n type=\"button\"\n (click)=\"sendMessage($event)\"\n [disabled]=\"disabled || prompt.trim().length === 0\"\n >\n <i [c8yIcon]=\"config.userInterfaceIcons?.send || 'arrow-circle-right'\"></i>\n </button>\n } @else {\n <button\n class=\"btn btn-dot btn-dot--danger\"\n [attr.title]=\"config.cancelButtonText | translate\"\n [attr.aria-label]=\"config.cancelButtonText | translate\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n <i [c8yIcon]=\"config.userInterfaceIcons?.cancel || 'stop'\"></i>\n </button>\n }\n </div>\n </div>\n @if (config.disclaimerText) {\n <div\n class=\"text-muted m-b-8 text-10 p-l-16\"\n id=\"chat-disclaimer-{{ componentId }}\"\n role=\"note\"\n >\n {{ config.disclaimerText | translate }}\n </div>\n }\n </div>\n </div>\n</div>\n" }]
236
236
  }], propDecorators: { isLoading: [{
@@ -275,10 +275,10 @@ class AIService {
275
275
  observer.error(e);
276
276
  }
277
277
  }
278
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AIService, deps: [{ token: i1.FetchClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
279
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AIService, providedIn: 'root' }); }
278
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AIService, deps: [{ token: i1.FetchClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
279
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AIService, providedIn: 'root' }); }
280
280
  }
281
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AIService, decorators: [{
281
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AIService, decorators: [{
282
282
  type: Injectable,
283
283
  args: [{
284
284
  providedIn: 'root'