@c8y/ngx-components 1023.4.6 → 1023.6.3

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 (381) hide show
  1. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
  2. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  3. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
  4. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs.map +1 -1
  5. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +9 -9
  6. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs.map +1 -1
  7. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +12 -12
  8. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs.map +1 -1
  9. package/fesm2022/c8y-ngx-components-ai.mjs +3 -3
  10. package/fesm2022/c8y-ngx-components-ai.mjs.map +1 -1
  11. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
  12. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  13. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
  14. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  15. package/fesm2022/c8y-ngx-components-alarms.mjs +76 -76
  16. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  17. package/fesm2022/c8y-ngx-components-api.mjs +7 -7
  18. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  19. package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
  20. package/fesm2022/c8y-ngx-components-app-logs.mjs.map +1 -1
  21. package/fesm2022/c8y-ngx-components-asset-properties.mjs +39 -39
  22. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  23. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-B0Yspstg.mjs → c8y-ngx-components-asset-property-grid.component-B1q7kXRu.mjs} +13 -13
  24. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-B0Yspstg.mjs.map → c8y-ngx-components-asset-property-grid.component-B1q7kXRu.mjs.map} +1 -1
  25. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
  26. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  27. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +114 -114
  28. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  29. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
  30. package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
  31. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
  32. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  33. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
  34. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs.map +1 -1
  35. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
  36. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
  37. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
  38. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
  39. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
  40. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs.map +1 -1
  41. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
  42. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
  43. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
  44. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  45. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
  46. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
  47. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +36 -36
  48. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-branding-shared.mjs +13 -13
  50. package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
  52. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  53. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
  54. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  55. package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Bl18pHcM.mjs +68 -0
  56. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BeFT75x1.mjs.map → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Bl18pHcM.mjs.map} +1 -1
  57. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-B8_RmTvv.mjs → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C5QMFdX1.mjs} +4 -4
  58. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-B8_RmTvv.mjs.map → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C5QMFdX1.mjs.map} +1 -1
  59. package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-C-Lc5Ble.mjs +44 -0
  60. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-BUxC3Tmh.mjs.map → c8y-ngx-components-computed-asset-properties-event-count-config.component-C-Lc5Ble.mjs.map} +1 -1
  61. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-Dcmrw2Wg.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BXfM7hTQ.mjs} +4 -4
  62. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-Dcmrw2Wg.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BXfM7hTQ.mjs.map} +1 -1
  63. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +6 -6
  64. package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
  65. package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
  66. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
  67. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs.map +1 -1
  68. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
  69. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs.map +1 -1
  70. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
  71. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
  72. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C30if8-Q.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BuGMpNrA.mjs} +4 -4
  73. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C30if8-Q.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BuGMpNrA.mjs.map} +1 -1
  74. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-FBfdlVT1.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DN-f35bA.mjs} +10 -10
  75. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-FBfdlVT1.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DN-f35bA.mjs.map} +1 -1
  76. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DrVQS63v.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-BlIVEV__.mjs} +4 -4
  77. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DrVQS63v.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-BlIVEV__.mjs.map} +1 -1
  78. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
  79. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs.map +1 -1
  80. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
  81. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs.map +1 -1
  82. package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs +3 -3
  83. package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs.map +1 -1
  84. package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs +3 -3
  85. package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs.map +1 -1
  86. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +102 -102
  87. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  88. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-BHmaZVgy.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-m7YeEj9R.mjs} +16 -16
  89. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-BHmaZVgy.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-m7YeEj9R.mjs.map} +1 -1
  90. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
  91. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
  92. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +6 -6
  93. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs.map +1 -1
  94. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
  95. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  96. package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
  97. package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
  99. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
  101. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +24 -24
  103. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +7 -7
  105. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
  107. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
  109. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
  111. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs.map +1 -1
  112. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
  113. package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
  114. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +40 -40
  115. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  116. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +33 -33
  117. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  118. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
  119. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  120. package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
  121. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  122. package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
  123. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  124. package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
  125. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  126. package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
  127. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  128. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
  129. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
  130. package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
  131. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  132. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
  133. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  134. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
  135. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  136. package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
  137. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  138. package/fesm2022/c8y-ngx-components-echart.mjs +30 -30
  139. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  140. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
  141. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  142. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
  143. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -1
  144. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
  145. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  146. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
  147. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
  148. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
  149. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  150. package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
  151. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  152. package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
  153. package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
  154. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
  155. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
  156. package/fesm2022/c8y-ngx-components-events.mjs +3 -3
  157. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  158. package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
  159. package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
  160. package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
  161. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  162. package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
  163. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  164. package/fesm2022/c8y-ngx-components-global-context.mjs +118 -118
  165. package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
  166. package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
  167. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  168. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  169. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  170. package/fesm2022/c8y-ngx-components-location.mjs +28 -28
  171. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  172. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
  173. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  174. package/fesm2022/c8y-ngx-components-map.mjs +19 -19
  175. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  176. package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
  177. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
  178. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
  179. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
  180. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
  181. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  182. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
  183. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  184. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
  185. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  186. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
  187. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  188. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
  189. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs.map +1 -1
  190. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
  191. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
  192. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +3 -3
  193. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  194. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
  195. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  196. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
  197. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  198. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
  199. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
  200. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
  201. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
  202. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
  203. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
  204. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
  205. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  206. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
  207. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  208. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
  209. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  210. package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
  211. package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
  212. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
  213. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
  214. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
  215. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  216. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
  217. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  218. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
  219. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  220. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
  221. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  222. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
  223. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
  224. package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
  225. package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
  226. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
  227. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
  228. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
  229. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  230. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
  231. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  232. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
  233. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  234. package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
  235. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  236. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
  237. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
  238. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
  239. package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -1
  240. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
  241. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
  242. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
  243. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  244. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
  245. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -1
  246. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
  247. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
  248. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
  249. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
  250. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
  251. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -1
  252. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
  253. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -1
  254. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
  255. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  256. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
  257. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
  258. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
  259. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  260. package/fesm2022/c8y-ngx-components-replace-device.mjs +10 -10
  261. package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
  262. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
  263. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  264. package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
  265. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  266. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
  267. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  268. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
  269. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  270. package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
  271. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  272. package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
  273. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  274. package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
  275. package/fesm2022/c8y-ngx-components-repository.mjs.map +1 -1
  276. package/fesm2022/c8y-ngx-components-search.mjs +19 -19
  277. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  278. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +6 -6
  279. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
  280. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +7 -7
  281. package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
  282. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
  283. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
  284. package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
  285. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
  286. package/fesm2022/c8y-ngx-components-services.mjs +29 -29
  287. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  288. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
  289. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  290. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
  291. package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  292. package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
  293. package/fesm2022/c8y-ngx-components-static-assets-data.mjs.map +1 -1
  294. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +9 -9
  295. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs.map +1 -1
  296. package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
  297. package/fesm2022/c8y-ngx-components-static-assets.mjs.map +1 -1
  298. package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
  299. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  300. package/fesm2022/c8y-ngx-components-tenants.mjs +41 -41
  301. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  302. package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
  303. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
  304. package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
  305. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
  306. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
  307. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  308. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
  309. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  310. package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
  311. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -1
  312. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
  313. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  314. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
  315. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  316. package/fesm2022/c8y-ngx-components-upgrade.mjs +62 -43
  317. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  318. package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
  319. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  320. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
  321. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  322. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +3 -3
  323. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs.map +1 -1
  324. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +6 -6
  325. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  326. package/fesm2022/c8y-ngx-components-widgets-exports.mjs +8 -1
  327. package/fesm2022/c8y-ngx-components-widgets-exports.mjs.map +1 -1
  328. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +19 -19
  329. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  330. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
  331. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  332. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
  333. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs.map +1 -1
  334. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
  335. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  336. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +6 -6
  337. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  338. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +27 -27
  339. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  340. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
  341. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  342. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +7 -7
  343. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  344. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
  345. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
  346. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +24 -24
  347. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  348. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
  349. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  350. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
  351. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  352. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
  353. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  354. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
  355. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  356. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
  357. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  358. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
  359. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
  360. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
  361. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  362. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
  363. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs.map +1 -1
  364. package/fesm2022/c8y-ngx-components-widgets-widget-providers.mjs +5 -2
  365. package/fesm2022/c8y-ngx-components-widgets-widget-providers.mjs.map +1 -1
  366. package/fesm2022/c8y-ngx-components.mjs +1329 -1325
  367. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  368. package/index.d.ts +7 -0
  369. package/index.d.ts.map +1 -1
  370. package/package.json +1 -1
  371. package/upgrade/index.d.ts +1 -0
  372. package/upgrade/index.d.ts.map +1 -1
  373. package/widgets/cockpit-exports/index.d.ts +6 -0
  374. package/widgets/cockpit-exports/index.d.ts.map +1 -1
  375. package/widgets/device-management-exports/index.d.ts +6 -0
  376. package/widgets/device-management-exports/index.d.ts.map +1 -1
  377. package/widgets/exports/index.d.ts +8 -1
  378. package/widgets/exports/index.d.ts.map +1 -1
  379. package/widgets/widget-providers/index.d.ts.map +1 -1
  380. package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BeFT75x1.mjs +0 -68
  381. package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-BUxC3Tmh.mjs +0 -44
@@ -188,10 +188,10 @@ class SigfoxProviderService {
188
188
  error.message = gettext('No contracts found. New contracts must be created via the Sigfox platform.');
189
189
  throw error;
190
190
  }
191
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxProviderService, deps: [{ token: i1.FetchClient }, { token: i1.InventoryService }, { token: i1.TenantOptionsService }, { token: i2.TranslateService }, { token: i3.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
192
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxProviderService, providedIn: 'root' }); }
191
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxProviderService, deps: [{ token: i1.FetchClient }, { token: i1.InventoryService }, { token: i1.TenantOptionsService }, { token: i2.TranslateService }, { token: i3.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
192
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxProviderService, providedIn: 'root' }); }
193
193
  }
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxProviderService, decorators: [{
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxProviderService, decorators: [{
195
195
  type: Injectable,
196
196
  args: [{
197
197
  providedIn: 'root'
@@ -391,10 +391,10 @@ class SigfoxDeviceRegistrationComponent {
391
391
  this.unsubscribe$.next();
392
392
  this.unsubscribe$.complete();
393
393
  }
394
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxDeviceRegistrationComponent, deps: [{ token: i1$1.BsModalRef }, { token: SigfoxProviderService }, { token: i2.TranslateService }, { token: i3.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
395
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: SigfoxDeviceRegistrationComponent, isStandalone: true, selector: "c8y-sigfox-device-registration", ngImport: i0, template: "<c8y-modal\n [title]=\"'Sigfox 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 <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 <ng-template #registrationForm>\n <c8y-stepper\n [hideStepProgress]=\"true\"\n linear\n c8y-modal-body\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 Sigfox device' | translate }}\n </p>\n <formly-form\n class=\"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 <c8y-stepper-buttons\n class=\"modal-footer d-block sticky-bottom separator-top bg-component\"\n [labels]=\"registrationStepLabels\"\n (onNext)=\"create($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 <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\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-component\"\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 <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=\"sigfox-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\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: i5.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" }] }); }
394
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxDeviceRegistrationComponent, deps: [{ token: i1$1.BsModalRef }, { token: SigfoxProviderService }, { token: i2.TranslateService }, { token: i3.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
395
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: SigfoxDeviceRegistrationComponent, isStandalone: true, selector: "c8y-sigfox-device-registration", ngImport: i0, template: "<c8y-modal\n [title]=\"'Sigfox 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 <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 <ng-template #registrationForm>\n <c8y-stepper\n [hideStepProgress]=\"true\"\n linear\n c8y-modal-body\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 Sigfox device' | translate }}\n </p>\n <formly-form\n class=\"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 <c8y-stepper-buttons\n class=\"modal-footer d-block sticky-bottom separator-top bg-component\"\n [labels]=\"registrationStepLabels\"\n (onNext)=\"create($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 <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\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-component\"\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 <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=\"sigfox-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\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: i5.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" }] }); }
396
396
  }
397
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxDeviceRegistrationComponent, decorators: [{
397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxDeviceRegistrationComponent, decorators: [{
398
398
  type: Component,
399
399
  args: [{ selector: 'c8y-sigfox-device-registration', imports: [
400
400
  ModalComponent,
@@ -425,10 +425,10 @@ class SigfoxDeviceRegistrationButtonComponent {
425
425
  ignoreBackdropClick: true
426
426
  });
427
427
  }
428
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxDeviceRegistrationButtonComponent, deps: [{ token: i1$1.BsModalService }], target: i0.ɵɵFactoryTarget.Component }); }
429
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: SigfoxDeviceRegistrationButtonComponent, isStandalone: true, selector: "c8y-sigfox-registration", ngImport: i0, template: "<button title=\"{{ 'Sigfox' | translate }}\" type=\"button\" (click)=\"open()\">\n <i c8yIcon=\"c8y-device-connect\"></i>\n {{ 'Sigfox' | translate }}\n</button>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
428
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxDeviceRegistrationButtonComponent, deps: [{ token: i1$1.BsModalService }], target: i0.ɵɵFactoryTarget.Component }); }
429
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: SigfoxDeviceRegistrationButtonComponent, isStandalone: true, selector: "c8y-sigfox-registration", ngImport: i0, template: "<button title=\"{{ 'Sigfox' | translate }}\" type=\"button\" (click)=\"open()\">\n <i c8yIcon=\"c8y-device-connect\"></i>\n {{ 'Sigfox' | translate }}\n</button>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
430
430
  }
431
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxDeviceRegistrationButtonComponent, decorators: [{
431
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxDeviceRegistrationButtonComponent, decorators: [{
432
432
  type: Component,
433
433
  args: [{ selector: 'c8y-sigfox-registration', imports: [IconDirective, C8yTranslatePipe], template: "<button title=\"{{ 'Sigfox' | translate }}\" type=\"button\" (click)=\"open()\">\n <i c8yIcon=\"c8y-device-connect\"></i>\n {{ 'Sigfox' | translate }}\n</button>\n" }]
434
434
  }], ctorParameters: () => [{ type: i1$1.BsModalService }] });
@@ -448,10 +448,10 @@ class SigfoxDeviceRegistrationFactory {
448
448
  }
449
449
  return items;
450
450
  }
451
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxDeviceRegistrationFactory, deps: [{ token: i3.TenantUiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
452
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxDeviceRegistrationFactory, providedIn: 'root' }); }
451
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxDeviceRegistrationFactory, deps: [{ token: i3.TenantUiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
452
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxDeviceRegistrationFactory, providedIn: 'root' }); }
453
453
  }
454
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxDeviceRegistrationFactory, decorators: [{
454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxDeviceRegistrationFactory, decorators: [{
455
455
  type: Injectable,
456
456
  args: [{
457
457
  providedIn: 'root'
@@ -459,16 +459,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
459
459
  }], ctorParameters: () => [{ type: i3.TenantUiService }] });
460
460
 
461
461
  class SigfoxDeviceRegistrationModule {
462
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxDeviceRegistrationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
463
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.3", ngImport: i0, type: SigfoxDeviceRegistrationModule, imports: [CoreModule,
462
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxDeviceRegistrationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
463
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: SigfoxDeviceRegistrationModule, imports: [CoreModule,
464
464
  CommonModule,
465
465
  SigfoxDeviceRegistrationButtonComponent,
466
466
  SigfoxDeviceRegistrationComponent] }); }
467
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxDeviceRegistrationModule, providers: [hookDeviceRegistration(SigfoxDeviceRegistrationFactory), SigfoxProviderService], imports: [CoreModule,
467
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxDeviceRegistrationModule, providers: [hookDeviceRegistration(SigfoxDeviceRegistrationFactory), SigfoxProviderService], imports: [CoreModule,
468
468
  CommonModule,
469
469
  SigfoxDeviceRegistrationComponent] }); }
470
470
  }
471
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SigfoxDeviceRegistrationModule, decorators: [{
471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigfoxDeviceRegistrationModule, decorators: [{
472
472
  type: NgModule,
473
473
  args: [{
474
474
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-sigfox-device-registration.mjs","sources":["../../sigfox-device-registration/sigfox-device-registration.model.ts","../../sigfox-device-registration/sigfox-provider.service.ts","../../sigfox-device-registration/sigfox-device-registration.component.ts","../../sigfox-device-registration/sigfox-device-registration.component.html","../../sigfox-device-registration/sigfox-device-registration-button.component.ts","../../sigfox-device-registration/sigfox-device-registration-button.component.html","../../sigfox-device-registration/sigfox-device-registration.factory.ts","../../sigfox-device-registration/sigfox-device-registration.module.ts","../../sigfox-device-registration/c8y-ngx-components-sigfox-device-registration.ts"],"sourcesContent":["import { IManagedObject } from '@c8y/client';\n\nexport interface SigfoxDevice {\n id: string;\n pac: string;\n deviceType: IManagedObject;\n contractId: string;\n prototype: boolean;\n productCertificate: string;\n error?: string;\n lnsConnectionName: string;\n}\n\nexport interface Contract {\n id: string;\n name: string;\n}\n\nexport interface SigfoxDeviceFormly extends SigfoxDevice {\n contract: Contract;\n connection: {\n name: string;\n description: string;\n baseUrl: string;\n parentGroupId: string;\n username: string;\n password: string;\n };\n}\n\nexport const PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION = {\n EVENT: 'deviceRegistration',\n COMPONENT: 'sigfox-registration',\n RESULT: { SUCCESS: 'registrationSuccess', FAILURE: 'registrationFailure' }\n} as const;\n","import { Injectable } from '@angular/core';\nimport {\n FetchClient,\n IFetchOptions,\n IManagedObject,\n InventoryService,\n IResult,\n IResultList,\n ITenantOption,\n TenantOptionsService\n} from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AppStateService } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SigfoxDevice } from './sigfox-device-registration.model';\n\nexport enum SigfoxErrorName {\n NoDeviceProtocolsError = 'NoDeviceProtocolsError',\n NoConnectivitySettingsError = 'NoConnectivitySettingsError',\n ConnectivitySettingsError = 'ConnectivitySettingsError',\n ContractError = 'ContractError',\n NoContractsError = 'NoContractsError',\n RegistrationError = 'RegistrationError',\n DeviceProtocolsFetchError = 'DeviceProtocolsFetchError'\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SigfoxProviderService {\n private readonly baseUrl: string = '/service/sigfox-agent/';\n private readonly registrationUrl: string = `${this.baseUrl}newDeviceRequest`;\n private readonly contractsUrl: string = `${this.baseUrl}contract`;\n private readonly header: any = { 'Content-Type': 'application/json' };\n\n constructor(\n private client: FetchClient,\n private inventoryService: InventoryService,\n private tenantOptions: TenantOptionsService,\n private translateService: TranslateService,\n private appState: AppStateService\n ) {}\n async getConnections() {\n const options: IFetchOptions = {\n method: 'GET',\n headers: this.header\n };\n const res = await this.client.fetch(`${this.baseUrl}lns-connection`, options);\n const data = await res.json();\n\n if (res.status === 200) {\n if (data.length === 0) {\n await this.throwNoConnectivitySettingsError();\n }\n } else {\n await this.throwConnectivitySettingsError(data);\n }\n return { res, data };\n }\n\n /**\n * Gets contracts from Sigfox platform.\n * @param connectionName The name of connection for which contracts will be retrieved\n * @returns The result list with contract, or throws an error with exception.\n */\n async getContracts(connectionName: string): Promise<IResultList<any>> {\n const options: IFetchOptions = {\n method: 'GET',\n headers: this.header,\n params: {\n sigfoxConnectionName: connectionName\n }\n };\n const res = await this.client.fetch(this.contractsUrl, options);\n\n const data = await res.json();\n\n if (res.status === 200) {\n if (data.length === 0) {\n this.throwNoContractsError();\n }\n } else {\n this.throwContractError(data);\n }\n return { res, data };\n }\n\n async createDevice(device: SigfoxDevice): Promise<IResult<SigfoxDevice>> {\n const options: IFetchOptions = {\n method: 'POST',\n headers: this.header,\n body: JSON.stringify(device)\n };\n const res = await this.client.fetch(this.registrationUrl, options);\n const data = await res.json();\n\n if (res.status !== 201) {\n this.throwRegistrationError(data);\n }\n return { res, data };\n }\n\n async getAvailableProtocols(\n filter: object = { withTotalPages: true }\n ): Promise<IResultList<IManagedObject>> {\n const query = {\n __filter: {\n __and: [\n { __has: 'c8y_IsDeviceType' },\n {\n type: { __in: ['c8y_SigfoxDeviceType', 'c8y_LpwanDeviceType'] }\n }\n ]\n },\n __orderby: [{ name: 1 }]\n };\n const deviceProtocolsList = await this.inventoryService.listQuery(query, filter);\n const { res, data } = deviceProtocolsList;\n\n if (res.status === 200) {\n if (data.length === 0) {\n this.throwNoDeviceProtocolsError();\n }\n } else {\n this.throwDeviceProtocolsFetchError();\n }\n return deviceProtocolsList;\n }\n\n async hasConnectivitySettings(): Promise<boolean> {\n const option: ITenantOption = {\n category: 'sigfox-agent',\n key: 'provider.token'\n };\n try {\n await this.tenantOptions.detail(option);\n return true;\n } catch (e) {\n await this.throwNoConnectivitySettingsError();\n }\n }\n\n private async throwNoConnectivitySettingsError() {\n const error = new Error();\n error.name = SigfoxErrorName.NoConnectivitySettingsError;\n const hasAdminRight = await this.appState.isApplicationAvailable('administration');\n if (hasAdminRight) {\n error.message = this.translateService.instant(\n gettext(\n `Connectivity settings are not configured. Configure them in the Administration application under <a href=\"{{ link }}\">Settings</a>.`\n ),\n {\n link: '/apps/administration/index.html#/connectivitySettings/multiple_lns_connectors_sigfox'\n }\n );\n } else {\n error.message = gettext(\n 'Connectivity settings are not configured. Contact the administrator.'\n );\n }\n\n throw error;\n }\n\n private throwConnectivitySettingsError(data: { message: string }) {\n const error = new Error();\n error.name = SigfoxErrorName.ConnectivitySettingsError;\n error.message = data.message;\n throw error;\n }\n private throwRegistrationError(data: { message: string }) {\n const error = new Error();\n error.name = SigfoxErrorName.RegistrationError;\n error.message = data.message;\n throw error;\n }\n\n private throwDeviceProtocolsFetchError() {\n const error = new Error();\n error.name = SigfoxErrorName.DeviceProtocolsFetchError;\n error.message = gettext('Could not load device protocols.');\n throw error;\n }\n\n private throwNoDeviceProtocolsError() {\n const error = new Error();\n error.name = SigfoxErrorName.NoDeviceProtocolsError;\n error.message = this.translateService.instant(\n gettext(\n `No device protocols configured. Create a Sigfox device protocol in <a href=\"{{ link }}\">Device protocols</a>.`\n ),\n {\n link: '/apps/devicemanagement/#/deviceprotocols'\n }\n );\n throw error;\n }\n\n private throwContractError(data: { message: string }) {\n const error = new Error();\n error.name = SigfoxErrorName.ContractError;\n error.message = data.message;\n throw error;\n }\n\n private throwNoContractsError() {\n const error = new Error();\n error.name = SigfoxErrorName.NoContractsError;\n error.message = gettext(\n 'No contracts found. New contracts must be created via the Sigfox platform.'\n );\n throw error;\n }\n}\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n C8yStepper,\n GainsightService,\n ModalComponent,\n IconDirective,\n LoadingComponent,\n C8yStepperButtons,\n OperationResultComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { FormlyFieldConfig, FormlyModule } from '@ngx-formly/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { cloneDeep, uniq } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, defer, forkJoin, from, of, Subject, throwError } from 'rxjs';\nimport { catchError, map, mergeMap, shareReplay, switchMap, takeUntil } from 'rxjs/operators';\nimport {\n SigfoxDevice,\n SigfoxDeviceFormly,\n PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION\n} from './sigfox-device-registration.model';\nimport { SigfoxErrorName, SigfoxProviderService } from './sigfox-provider.service';\nimport { NgIf, NgFor, NgClass, AsyncPipe } from '@angular/common';\n\ntype SigfoxState =\n | 'loadPending'\n | 'loadSuccess'\n | 'loadError'\n | 'registrationPending'\n | 'registrationSuccess'\n | 'registrationError';\n\n@Component({\n selector: 'c8y-sigfox-device-registration',\n templateUrl: 'sigfox-device-registration.component.html',\n imports: [\n ModalComponent,\n IconDirective,\n NgIf,\n LoadingComponent,\n C8yStepper,\n CdkStep,\n FormlyModule,\n C8yStepperButtons,\n OperationResultComponent,\n NgFor,\n NgClass,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class SigfoxDeviceRegistrationComponent {\n stepper: C8yStepper;\n readonly PAGING: object = {\n withTotalPages: true,\n pageSize: 10\n };\n\n form = new FormGroup({});\n model: SigfoxDeviceFormly = {} as any;\n protocols$ = this.getProtocols$();\n connections$ = this.getConnections$();\n unsubscribe$: Subject<void> = new Subject();\n\n load$ = this.connections$.pipe(\n catchError((error: Error) => of(error)),\n switchMap(connections => {\n if (\n connections instanceof Error &&\n connections.name === SigfoxErrorName.NoConnectivitySettingsError\n ) {\n return of([connections]);\n }\n return forkJoin([\n of(connections),\n this.protocols$.pipe(catchError((error: Error) => of(error)))\n ]);\n }),\n map(results => {\n return results.filter(result => {\n return result instanceof Error;\n });\n }),\n switchMap(errors => {\n return errors.length === 0 ? of([]) : throwError(errors);\n })\n );\n\n fields: FormlyFieldConfig[] = [\n {\n key: 'id',\n type: 'string',\n templateOptions: {\n placeholder: 'FED987',\n label: gettext('ID'),\n required: true,\n pattern: '(0x){0,1}[0-9A-F]+(h){0,1}'\n },\n validation: {\n messages: {\n pattern: gettext('Must be a valid hexadecimal number.')\n }\n }\n },\n {\n key: 'pac',\n type: 'string',\n templateOptions: {\n placeholder: 'FEDCBA9876543210',\n label: gettext('PAC'),\n required: true,\n pattern: '^([a-fA-F0-9]{16})$'\n },\n validation: {\n messages: {\n pattern: gettext('Must be a valid 16 digit hexadecimal number.')\n }\n }\n },\n {\n key: 'connection',\n type: 'typeahead',\n templateOptions: {\n label: gettext('Connection'),\n required: true,\n c8yForOptions: this.connections$,\n displayProperty: 'name',\n valueProperties: ['name']\n }\n },\n {\n key: 'contract',\n type: 'typeahead',\n templateOptions: {\n label: gettext('Contract'),\n required: true,\n placeholder: 'Free contract_25',\n displayProperty: 'name',\n valueProperties: ['id'],\n description: gettext('Only active contracts with free slots are displayed.')\n },\n hooks: {\n onInit: field => {\n const connectionControl = field.form.get('connection');\n connectionControl.valueChanges\n .pipe(\n takeUntil(this.unsubscribe$),\n mergeMap(({ name }) => this.getContracts$(name))\n )\n .subscribe(\n profiles => {\n field.templateOptions.c8yForOptions = of(profiles);\n field.formControl.setValue(null);\n },\n error => {\n field.form.get('contract').setErrors({ contract: true });\n field.validators.contract.message = error.message;\n }\n );\n }\n },\n validators: {\n contract: {\n expression: (control: AbstractControl) => {\n return control.status === 'VALID';\n },\n message: () => ''\n }\n }\n },\n {\n key: 'deviceType',\n type: 'typeahead',\n templateOptions: {\n label: gettext('Device protocol'),\n required: true,\n c8yForOptions: this.protocols$,\n displayProperty: 'name',\n valueProperties: ['id', 'name']\n }\n },\n {\n key: 'productCertificate',\n type: 'string',\n templateOptions: {\n placeholder: 'P_001F_EDCB_01',\n label: gettext('Product certificate key'),\n pattern: 'P_[0-9A-F]{4}_[0-9A-F]{4}_[0-9A-F]{2}',\n description: gettext(\n 'If no product certificate key is specified, the device is considered a prototype.'\n )\n },\n validation: {\n messages: {\n pattern: (_error, _field: FormlyFieldConfig) =>\n this.translateService.instant(\n gettext('Must be a valid product certificate key, for example, {{ example }}'),\n { example: 'P_001F_EDCB_01' }\n )\n }\n }\n }\n ];\n\n registrationStepLabels = {\n next: gettext('Register')\n };\n finalStepLabels = {\n back: gettext('Close')\n };\n\n state: SigfoxState = 'loadPending';\n errors$ = new BehaviorSubject<Error[]>([]);\n errorMessages$ = this.errors$.pipe(\n map(errors => errors.map(error => error.message)),\n map(messages => uniq(messages))\n );\n constructor(\n public bsModalRef: BsModalRef,\n private sigfoxService: SigfoxProviderService,\n private translateService: TranslateService,\n private gainsightService: GainsightService\n ) {\n this.load$.subscribe(\n () => {\n this.state = 'loadSuccess';\n },\n errors => {\n this.state = 'loadError';\n this.errors$.next(errors);\n }\n );\n }\n\n async create(event: { stepper: C8yStepper; step: CdkStep }) {\n this.state = 'registrationPending';\n const sigfoxDevice = this.getSigfoxDeviceToSend();\n try {\n await this.sigfoxService.createDevice(sigfoxDevice);\n this.state = 'registrationSuccess';\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.EVENT, {\n result: PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.RESULT.SUCCESS,\n component: PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.COMPONENT\n });\n } catch (error) {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.EVENT, {\n result: PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.RESULT.FAILURE,\n component: PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.COMPONENT\n });\n this.state = 'registrationError';\n this.errors$.next([error]);\n }\n\n event.stepper.next();\n }\n\n getSigfoxDeviceToSend() {\n const sigfoxDevice: SigfoxDevice = cloneDeep(this.model);\n sigfoxDevice.lnsConnectionName = this.model.connection.name;\n sigfoxDevice.contractId = this.model.contract.id;\n sigfoxDevice.prototype = !sigfoxDevice.productCertificate;\n delete (sigfoxDevice as any).contract;\n delete (sigfoxDevice as any).connection;\n return sigfoxDevice;\n }\n\n getContracts$(name) {\n return defer(() => from(this.sigfoxService.getContracts(name))).pipe(shareReplay(1));\n }\n\n getProtocols$() {\n return defer(() => from(this.sigfoxService.getAvailableProtocols())).pipe(shareReplay(1));\n }\n\n getConnections$() {\n return defer(() => from(this.sigfoxService.getConnections())).pipe(shareReplay(1));\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<c8y-modal\n [title]=\"'Sigfox 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 <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 <ng-template #registrationForm>\n <c8y-stepper\n [hideStepProgress]=\"true\"\n linear\n c8y-modal-body\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 Sigfox device' | translate }}\n </p>\n <formly-form\n class=\"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 <c8y-stepper-buttons\n class=\"modal-footer d-block sticky-bottom separator-top bg-component\"\n [labels]=\"registrationStepLabels\"\n (onNext)=\"create($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 <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\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-component\"\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 <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=\"sigfox-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\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","import { Component } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { SigfoxDeviceRegistrationComponent } from './sigfox-device-registration.component';\nimport { IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-sigfox-registration',\n templateUrl: 'sigfox-device-registration-button.component.html',\n imports: [IconDirective, C8yTranslatePipe]\n})\nexport class SigfoxDeviceRegistrationButtonComponent {\n constructor(private modalService: BsModalService) {}\n\n open() {\n this.modalService.show(SigfoxDeviceRegistrationComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n ignoreBackdropClick: true\n });\n }\n}\n","<button title=\"{{ 'Sigfox' | translate }}\" type=\"button\" (click)=\"open()\">\n <i c8yIcon=\"c8y-device-connect\"></i>\n {{ 'Sigfox' | translate }}\n</button>\n","import { Injectable } from '@angular/core';\nimport { TenantUiService } from '@c8y/ngx-components';\nimport { SigfoxDeviceRegistrationButtonComponent } from './sigfox-device-registration-button.component';\nimport { RegisterDeviceFactory, RegisterDeviceItem } from '@c8y/ngx-components/register-device';\n@Injectable({\n providedIn: 'root'\n})\nexport class SigfoxDeviceRegistrationFactory implements RegisterDeviceFactory {\n constructor(private tenantService: TenantUiService) {}\n\n get() {\n const items: RegisterDeviceItem[] = [];\n if (this.tenantService.isMicroserviceSubscribedInCurrentTenant('sigfox-agent')) {\n items.push({\n template: SigfoxDeviceRegistrationButtonComponent,\n priority: 98,\n category: 'single'\n } as RegisterDeviceItem);\n }\n return items;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, CoreModule } from '@c8y/ngx-components';\nimport { hookDeviceRegistration } from '@c8y/ngx-components/register-device';\nimport { SigfoxDeviceRegistrationButtonComponent } from './sigfox-device-registration-button.component';\nimport { SigfoxDeviceRegistrationComponent } from './sigfox-device-registration.component';\nimport { SigfoxDeviceRegistrationFactory } from './sigfox-device-registration.factory';\nimport { SigfoxProviderService } from './sigfox-provider.service';\n\n@NgModule({\n imports: [\n CoreModule,\n CommonModule,\n SigfoxDeviceRegistrationButtonComponent,\n SigfoxDeviceRegistrationComponent\n ],\n providers: [hookDeviceRegistration(SigfoxDeviceRegistrationFactory), SigfoxProviderService]\n})\nexport class SigfoxDeviceRegistrationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.SigfoxProviderService","i3","i4"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-sigfox-device-registration.mjs","sources":["../../sigfox-device-registration/sigfox-device-registration.model.ts","../../sigfox-device-registration/sigfox-provider.service.ts","../../sigfox-device-registration/sigfox-device-registration.component.ts","../../sigfox-device-registration/sigfox-device-registration.component.html","../../sigfox-device-registration/sigfox-device-registration-button.component.ts","../../sigfox-device-registration/sigfox-device-registration-button.component.html","../../sigfox-device-registration/sigfox-device-registration.factory.ts","../../sigfox-device-registration/sigfox-device-registration.module.ts","../../sigfox-device-registration/c8y-ngx-components-sigfox-device-registration.ts"],"sourcesContent":["import { IManagedObject } from '@c8y/client';\n\nexport interface SigfoxDevice {\n id: string;\n pac: string;\n deviceType: IManagedObject;\n contractId: string;\n prototype: boolean;\n productCertificate: string;\n error?: string;\n lnsConnectionName: string;\n}\n\nexport interface Contract {\n id: string;\n name: string;\n}\n\nexport interface SigfoxDeviceFormly extends SigfoxDevice {\n contract: Contract;\n connection: {\n name: string;\n description: string;\n baseUrl: string;\n parentGroupId: string;\n username: string;\n password: string;\n };\n}\n\nexport const PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION = {\n EVENT: 'deviceRegistration',\n COMPONENT: 'sigfox-registration',\n RESULT: { SUCCESS: 'registrationSuccess', FAILURE: 'registrationFailure' }\n} as const;\n","import { Injectable } from '@angular/core';\nimport {\n FetchClient,\n IFetchOptions,\n IManagedObject,\n InventoryService,\n IResult,\n IResultList,\n ITenantOption,\n TenantOptionsService\n} from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AppStateService } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SigfoxDevice } from './sigfox-device-registration.model';\n\nexport enum SigfoxErrorName {\n NoDeviceProtocolsError = 'NoDeviceProtocolsError',\n NoConnectivitySettingsError = 'NoConnectivitySettingsError',\n ConnectivitySettingsError = 'ConnectivitySettingsError',\n ContractError = 'ContractError',\n NoContractsError = 'NoContractsError',\n RegistrationError = 'RegistrationError',\n DeviceProtocolsFetchError = 'DeviceProtocolsFetchError'\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SigfoxProviderService {\n private readonly baseUrl: string = '/service/sigfox-agent/';\n private readonly registrationUrl: string = `${this.baseUrl}newDeviceRequest`;\n private readonly contractsUrl: string = `${this.baseUrl}contract`;\n private readonly header: any = { 'Content-Type': 'application/json' };\n\n constructor(\n private client: FetchClient,\n private inventoryService: InventoryService,\n private tenantOptions: TenantOptionsService,\n private translateService: TranslateService,\n private appState: AppStateService\n ) {}\n async getConnections() {\n const options: IFetchOptions = {\n method: 'GET',\n headers: this.header\n };\n const res = await this.client.fetch(`${this.baseUrl}lns-connection`, options);\n const data = await res.json();\n\n if (res.status === 200) {\n if (data.length === 0) {\n await this.throwNoConnectivitySettingsError();\n }\n } else {\n await this.throwConnectivitySettingsError(data);\n }\n return { res, data };\n }\n\n /**\n * Gets contracts from Sigfox platform.\n * @param connectionName The name of connection for which contracts will be retrieved\n * @returns The result list with contract, or throws an error with exception.\n */\n async getContracts(connectionName: string): Promise<IResultList<any>> {\n const options: IFetchOptions = {\n method: 'GET',\n headers: this.header,\n params: {\n sigfoxConnectionName: connectionName\n }\n };\n const res = await this.client.fetch(this.contractsUrl, options);\n\n const data = await res.json();\n\n if (res.status === 200) {\n if (data.length === 0) {\n this.throwNoContractsError();\n }\n } else {\n this.throwContractError(data);\n }\n return { res, data };\n }\n\n async createDevice(device: SigfoxDevice): Promise<IResult<SigfoxDevice>> {\n const options: IFetchOptions = {\n method: 'POST',\n headers: this.header,\n body: JSON.stringify(device)\n };\n const res = await this.client.fetch(this.registrationUrl, options);\n const data = await res.json();\n\n if (res.status !== 201) {\n this.throwRegistrationError(data);\n }\n return { res, data };\n }\n\n async getAvailableProtocols(\n filter: object = { withTotalPages: true }\n ): Promise<IResultList<IManagedObject>> {\n const query = {\n __filter: {\n __and: [\n { __has: 'c8y_IsDeviceType' },\n {\n type: { __in: ['c8y_SigfoxDeviceType', 'c8y_LpwanDeviceType'] }\n }\n ]\n },\n __orderby: [{ name: 1 }]\n };\n const deviceProtocolsList = await this.inventoryService.listQuery(query, filter);\n const { res, data } = deviceProtocolsList;\n\n if (res.status === 200) {\n if (data.length === 0) {\n this.throwNoDeviceProtocolsError();\n }\n } else {\n this.throwDeviceProtocolsFetchError();\n }\n return deviceProtocolsList;\n }\n\n async hasConnectivitySettings(): Promise<boolean> {\n const option: ITenantOption = {\n category: 'sigfox-agent',\n key: 'provider.token'\n };\n try {\n await this.tenantOptions.detail(option);\n return true;\n } catch (e) {\n await this.throwNoConnectivitySettingsError();\n }\n }\n\n private async throwNoConnectivitySettingsError() {\n const error = new Error();\n error.name = SigfoxErrorName.NoConnectivitySettingsError;\n const hasAdminRight = await this.appState.isApplicationAvailable('administration');\n if (hasAdminRight) {\n error.message = this.translateService.instant(\n gettext(\n `Connectivity settings are not configured. Configure them in the Administration application under <a href=\"{{ link }}\">Settings</a>.`\n ),\n {\n link: '/apps/administration/index.html#/connectivitySettings/multiple_lns_connectors_sigfox'\n }\n );\n } else {\n error.message = gettext(\n 'Connectivity settings are not configured. Contact the administrator.'\n );\n }\n\n throw error;\n }\n\n private throwConnectivitySettingsError(data: { message: string }) {\n const error = new Error();\n error.name = SigfoxErrorName.ConnectivitySettingsError;\n error.message = data.message;\n throw error;\n }\n private throwRegistrationError(data: { message: string }) {\n const error = new Error();\n error.name = SigfoxErrorName.RegistrationError;\n error.message = data.message;\n throw error;\n }\n\n private throwDeviceProtocolsFetchError() {\n const error = new Error();\n error.name = SigfoxErrorName.DeviceProtocolsFetchError;\n error.message = gettext('Could not load device protocols.');\n throw error;\n }\n\n private throwNoDeviceProtocolsError() {\n const error = new Error();\n error.name = SigfoxErrorName.NoDeviceProtocolsError;\n error.message = this.translateService.instant(\n gettext(\n `No device protocols configured. Create a Sigfox device protocol in <a href=\"{{ link }}\">Device protocols</a>.`\n ),\n {\n link: '/apps/devicemanagement/#/deviceprotocols'\n }\n );\n throw error;\n }\n\n private throwContractError(data: { message: string }) {\n const error = new Error();\n error.name = SigfoxErrorName.ContractError;\n error.message = data.message;\n throw error;\n }\n\n private throwNoContractsError() {\n const error = new Error();\n error.name = SigfoxErrorName.NoContractsError;\n error.message = gettext(\n 'No contracts found. New contracts must be created via the Sigfox platform.'\n );\n throw error;\n }\n}\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n C8yStepper,\n GainsightService,\n ModalComponent,\n IconDirective,\n LoadingComponent,\n C8yStepperButtons,\n OperationResultComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { FormlyFieldConfig, FormlyModule } from '@ngx-formly/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { cloneDeep, uniq } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, defer, forkJoin, from, of, Subject, throwError } from 'rxjs';\nimport { catchError, map, mergeMap, shareReplay, switchMap, takeUntil } from 'rxjs/operators';\nimport {\n SigfoxDevice,\n SigfoxDeviceFormly,\n PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION\n} from './sigfox-device-registration.model';\nimport { SigfoxErrorName, SigfoxProviderService } from './sigfox-provider.service';\nimport { NgIf, NgFor, NgClass, AsyncPipe } from '@angular/common';\n\ntype SigfoxState =\n | 'loadPending'\n | 'loadSuccess'\n | 'loadError'\n | 'registrationPending'\n | 'registrationSuccess'\n | 'registrationError';\n\n@Component({\n selector: 'c8y-sigfox-device-registration',\n templateUrl: 'sigfox-device-registration.component.html',\n imports: [\n ModalComponent,\n IconDirective,\n NgIf,\n LoadingComponent,\n C8yStepper,\n CdkStep,\n FormlyModule,\n C8yStepperButtons,\n OperationResultComponent,\n NgFor,\n NgClass,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class SigfoxDeviceRegistrationComponent {\n stepper: C8yStepper;\n readonly PAGING: object = {\n withTotalPages: true,\n pageSize: 10\n };\n\n form = new FormGroup({});\n model: SigfoxDeviceFormly = {} as any;\n protocols$ = this.getProtocols$();\n connections$ = this.getConnections$();\n unsubscribe$: Subject<void> = new Subject();\n\n load$ = this.connections$.pipe(\n catchError((error: Error) => of(error)),\n switchMap(connections => {\n if (\n connections instanceof Error &&\n connections.name === SigfoxErrorName.NoConnectivitySettingsError\n ) {\n return of([connections]);\n }\n return forkJoin([\n of(connections),\n this.protocols$.pipe(catchError((error: Error) => of(error)))\n ]);\n }),\n map(results => {\n return results.filter(result => {\n return result instanceof Error;\n });\n }),\n switchMap(errors => {\n return errors.length === 0 ? of([]) : throwError(errors);\n })\n );\n\n fields: FormlyFieldConfig[] = [\n {\n key: 'id',\n type: 'string',\n templateOptions: {\n placeholder: 'FED987',\n label: gettext('ID'),\n required: true,\n pattern: '(0x){0,1}[0-9A-F]+(h){0,1}'\n },\n validation: {\n messages: {\n pattern: gettext('Must be a valid hexadecimal number.')\n }\n }\n },\n {\n key: 'pac',\n type: 'string',\n templateOptions: {\n placeholder: 'FEDCBA9876543210',\n label: gettext('PAC'),\n required: true,\n pattern: '^([a-fA-F0-9]{16})$'\n },\n validation: {\n messages: {\n pattern: gettext('Must be a valid 16 digit hexadecimal number.')\n }\n }\n },\n {\n key: 'connection',\n type: 'typeahead',\n templateOptions: {\n label: gettext('Connection'),\n required: true,\n c8yForOptions: this.connections$,\n displayProperty: 'name',\n valueProperties: ['name']\n }\n },\n {\n key: 'contract',\n type: 'typeahead',\n templateOptions: {\n label: gettext('Contract'),\n required: true,\n placeholder: 'Free contract_25',\n displayProperty: 'name',\n valueProperties: ['id'],\n description: gettext('Only active contracts with free slots are displayed.')\n },\n hooks: {\n onInit: field => {\n const connectionControl = field.form.get('connection');\n connectionControl.valueChanges\n .pipe(\n takeUntil(this.unsubscribe$),\n mergeMap(({ name }) => this.getContracts$(name))\n )\n .subscribe(\n profiles => {\n field.templateOptions.c8yForOptions = of(profiles);\n field.formControl.setValue(null);\n },\n error => {\n field.form.get('contract').setErrors({ contract: true });\n field.validators.contract.message = error.message;\n }\n );\n }\n },\n validators: {\n contract: {\n expression: (control: AbstractControl) => {\n return control.status === 'VALID';\n },\n message: () => ''\n }\n }\n },\n {\n key: 'deviceType',\n type: 'typeahead',\n templateOptions: {\n label: gettext('Device protocol'),\n required: true,\n c8yForOptions: this.protocols$,\n displayProperty: 'name',\n valueProperties: ['id', 'name']\n }\n },\n {\n key: 'productCertificate',\n type: 'string',\n templateOptions: {\n placeholder: 'P_001F_EDCB_01',\n label: gettext('Product certificate key'),\n pattern: 'P_[0-9A-F]{4}_[0-9A-F]{4}_[0-9A-F]{2}',\n description: gettext(\n 'If no product certificate key is specified, the device is considered a prototype.'\n )\n },\n validation: {\n messages: {\n pattern: (_error, _field: FormlyFieldConfig) =>\n this.translateService.instant(\n gettext('Must be a valid product certificate key, for example, {{ example }}'),\n { example: 'P_001F_EDCB_01' }\n )\n }\n }\n }\n ];\n\n registrationStepLabels = {\n next: gettext('Register')\n };\n finalStepLabels = {\n back: gettext('Close')\n };\n\n state: SigfoxState = 'loadPending';\n errors$ = new BehaviorSubject<Error[]>([]);\n errorMessages$ = this.errors$.pipe(\n map(errors => errors.map(error => error.message)),\n map(messages => uniq(messages))\n );\n constructor(\n public bsModalRef: BsModalRef,\n private sigfoxService: SigfoxProviderService,\n private translateService: TranslateService,\n private gainsightService: GainsightService\n ) {\n this.load$.subscribe(\n () => {\n this.state = 'loadSuccess';\n },\n errors => {\n this.state = 'loadError';\n this.errors$.next(errors);\n }\n );\n }\n\n async create(event: { stepper: C8yStepper; step: CdkStep }) {\n this.state = 'registrationPending';\n const sigfoxDevice = this.getSigfoxDeviceToSend();\n try {\n await this.sigfoxService.createDevice(sigfoxDevice);\n this.state = 'registrationSuccess';\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.EVENT, {\n result: PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.RESULT.SUCCESS,\n component: PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.COMPONENT\n });\n } catch (error) {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.EVENT, {\n result: PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.RESULT.FAILURE,\n component: PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.COMPONENT\n });\n this.state = 'registrationError';\n this.errors$.next([error]);\n }\n\n event.stepper.next();\n }\n\n getSigfoxDeviceToSend() {\n const sigfoxDevice: SigfoxDevice = cloneDeep(this.model);\n sigfoxDevice.lnsConnectionName = this.model.connection.name;\n sigfoxDevice.contractId = this.model.contract.id;\n sigfoxDevice.prototype = !sigfoxDevice.productCertificate;\n delete (sigfoxDevice as any).contract;\n delete (sigfoxDevice as any).connection;\n return sigfoxDevice;\n }\n\n getContracts$(name) {\n return defer(() => from(this.sigfoxService.getContracts(name))).pipe(shareReplay(1));\n }\n\n getProtocols$() {\n return defer(() => from(this.sigfoxService.getAvailableProtocols())).pipe(shareReplay(1));\n }\n\n getConnections$() {\n return defer(() => from(this.sigfoxService.getConnections())).pipe(shareReplay(1));\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<c8y-modal\n [title]=\"'Sigfox 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 <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 <ng-template #registrationForm>\n <c8y-stepper\n [hideStepProgress]=\"true\"\n linear\n c8y-modal-body\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 Sigfox device' | translate }}\n </p>\n <formly-form\n class=\"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 <c8y-stepper-buttons\n class=\"modal-footer d-block sticky-bottom separator-top bg-component\"\n [labels]=\"registrationStepLabels\"\n (onNext)=\"create($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 <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\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-component\"\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 <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=\"sigfox-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\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","import { Component } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { SigfoxDeviceRegistrationComponent } from './sigfox-device-registration.component';\nimport { IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-sigfox-registration',\n templateUrl: 'sigfox-device-registration-button.component.html',\n imports: [IconDirective, C8yTranslatePipe]\n})\nexport class SigfoxDeviceRegistrationButtonComponent {\n constructor(private modalService: BsModalService) {}\n\n open() {\n this.modalService.show(SigfoxDeviceRegistrationComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n ignoreBackdropClick: true\n });\n }\n}\n","<button title=\"{{ 'Sigfox' | translate }}\" type=\"button\" (click)=\"open()\">\n <i c8yIcon=\"c8y-device-connect\"></i>\n {{ 'Sigfox' | translate }}\n</button>\n","import { Injectable } from '@angular/core';\nimport { TenantUiService } from '@c8y/ngx-components';\nimport { SigfoxDeviceRegistrationButtonComponent } from './sigfox-device-registration-button.component';\nimport { RegisterDeviceFactory, RegisterDeviceItem } from '@c8y/ngx-components/register-device';\n@Injectable({\n providedIn: 'root'\n})\nexport class SigfoxDeviceRegistrationFactory implements RegisterDeviceFactory {\n constructor(private tenantService: TenantUiService) {}\n\n get() {\n const items: RegisterDeviceItem[] = [];\n if (this.tenantService.isMicroserviceSubscribedInCurrentTenant('sigfox-agent')) {\n items.push({\n template: SigfoxDeviceRegistrationButtonComponent,\n priority: 98,\n category: 'single'\n } as RegisterDeviceItem);\n }\n return items;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, CoreModule } from '@c8y/ngx-components';\nimport { hookDeviceRegistration } from '@c8y/ngx-components/register-device';\nimport { SigfoxDeviceRegistrationButtonComponent } from './sigfox-device-registration-button.component';\nimport { SigfoxDeviceRegistrationComponent } from './sigfox-device-registration.component';\nimport { SigfoxDeviceRegistrationFactory } from './sigfox-device-registration.factory';\nimport { SigfoxProviderService } from './sigfox-provider.service';\n\n@NgModule({\n imports: [\n CoreModule,\n CommonModule,\n SigfoxDeviceRegistrationButtonComponent,\n SigfoxDeviceRegistrationComponent\n ],\n providers: [hookDeviceRegistration(SigfoxDeviceRegistrationFactory), SigfoxProviderService]\n})\nexport class SigfoxDeviceRegistrationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.SigfoxProviderService","i3","i4"],"mappings":"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"}
@@ -113,17 +113,17 @@ class SmsGatewayGuard {
113
113
  }
114
114
  return this.showSMSProvider;
115
115
  }
116
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SmsGatewayGuard, deps: [{ token: i1.Permissions }, { token: i1.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
117
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SmsGatewayGuard }); }
116
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SmsGatewayGuard, deps: [{ token: i1.Permissions }, { token: i1.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
117
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SmsGatewayGuard }); }
118
118
  }
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SmsGatewayGuard, decorators: [{
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SmsGatewayGuard, decorators: [{
120
120
  type: Injectable
121
121
  }], ctorParameters: () => [{ type: i1.Permissions }, { type: i1.AppStateService }] });
122
122
 
123
123
  class SmsGatewayModule {
124
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SmsGatewayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
125
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.3", ngImport: i0, type: SmsGatewayModule, imports: [i1.ProviderConfigurationModule] }); }
126
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SmsGatewayModule, providers: [SmsGatewayGuard, hookPatternMessages(MESSAGES_SMS_GATEWAY)], imports: [ProviderConfigurationModule.config([
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SmsGatewayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
125
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: SmsGatewayModule, imports: [i1.ProviderConfigurationModule] }); }
126
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SmsGatewayModule, providers: [SmsGatewayGuard, hookPatternMessages(MESSAGES_SMS_GATEWAY)], imports: [ProviderConfigurationModule.config([
127
127
  {
128
128
  navigation: {
129
129
  label: gettext('SMS provider'),
@@ -163,7 +163,7 @@ class SmsGatewayModule {
163
163
  }
164
164
  ])] }); }
165
165
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SmsGatewayModule, decorators: [{
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SmsGatewayModule, decorators: [{
167
167
  type: NgModule,
168
168
  args: [{
169
169
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-sms-gateway.mjs","sources":["../../sms-gateway/pattern-messages.data.ts","../../sms-gateway/sms-gateway.guard.ts","../../sms-gateway/sms-gateway.module.ts","../../sms-gateway/c8y-ngx-components-sms-gateway.ts"],"sourcesContent":["import { gettext } from '@c8y/ngx-components/gettext';\n\nexport const MESSAGES_SMS_GATEWAY = {\n '^Sender name$': {\n gettext: gettext('Sender name')\n },\n '^Sender name used for sent SMS$': {\n gettext: gettext('Sender name used for sent SMS')\n },\n '^Sender address$': {\n gettext: gettext('Sender address')\n },\n '^Sender address used for sent SMS$': {\n gettext: gettext('Sender address used for sent SMS')\n },\n '^Username$': {\n gettext: gettext('Username')\n },\n '^Password$': {\n gettext: gettext('Password')\n },\n '^Licence key$': {\n gettext: gettext('License key')\n },\n '^Key$': {\n gettext: gettext('Key')\n },\n '^API base URL$': {\n gettext: gettext('API base URL')\n },\n '^API URL$': {\n gettext: gettext('API URL')\n },\n '^oauth$': {\n gettext: gettext('OAuth')\n },\n '^basic$': {\n gettext: gettext('Basic')\n },\n '^Authentication method$': {\n gettext: gettext('Authentication method')\n },\n '^Defines which authentication method is used with the provider$': {\n gettext: gettext('Defines which authentication method is used with the provider')\n },\n '^Static headers$': {\n gettext: gettext('Static headers')\n },\n '^Static headers that should be added to requests towards the provider$': {\n gettext: gettext('Static headers that should be added to requests towards the provider')\n },\n '^OAuth token URL$': {\n gettext: gettext('OAuth token URL')\n },\n '^URL where the OAuth token is requested from (required if OAuth method is chosen)$': {\n gettext: gettext(\n 'URL where the OAuth token is requested from (required if OAuth method is selected)'\n )\n },\n '^OAuth toke mime type$': {\n gettext: gettext('OAuth token mime type')\n },\n '^Overrides the OAuth token response mime type$': {\n gettext: gettext('Overrides the OAuth token response mime type')\n },\n '^OAuth access toke type$': {\n gettext: gettext('OAuth access token type')\n },\n '^Overrides the OAuth access token type$': {\n gettext: gettext('Overrides the OAuth access token type')\n },\n '^Global configuration$': {\n gettext: gettext('Global configuration')\n },\n '^Enables or disables if the settings may be used globally for all tenants (Only possible in management tenant)$':\n {\n gettext: gettext(\n 'Enables or disables the settings globally for all tenants (only possible in management tenant)'\n )\n },\n '^API key$': {\n gettext: gettext('API key')\n },\n '^Inherit to subtenants$': {\n gettext: gettext('Inherit to subtenants')\n },\n \"^Enables or disables if this tenant's configuration may be inherited to subtenants$\": {\n gettext: gettext(\n 'Enables or disables the option to inherit the tenant configuration to subtenants'\n )\n },\n '^Login$': {\n gettext: gettext('Login')\n },\n '^Source business unit ID$': {\n gettext: gettext('Source business unit ID')\n },\n '^Client ID$': {\n gettext: gettext('Client ID')\n },\n '^Client secret$': {\n gettext: gettext('Client secret')\n }\n} as const;\n","import { Injectable } from '@angular/core';\n\nimport { Permissions, AppStateService } from '@c8y/ngx-components';\n\n@Injectable()\nexport class SmsGatewayGuard {\n private static readonly applicationName = 'sms-gateway';\n private showSMSProvider: Promise<boolean>;\n\n constructor(\n private permissions: Permissions,\n private appState: AppStateService\n ) {}\n\n canActivate(): Promise<boolean> {\n if (this.showSMSProvider === undefined) {\n const hasRole: Promise<boolean> = Promise.resolve(\n this.permissions.hasRole(Permissions.ROLE_SMS_READ)\n );\n\n this.showSMSProvider = hasRole.then(\n (hasPermissions: boolean) =>\n hasPermissions && this.appState.isApplicationAvailable(SmsGatewayGuard.applicationName)\n );\n }\n\n return this.showSMSProvider;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { hookPatternMessages, ProviderConfigurationModule, Permissions } from '@c8y/ngx-components';\nimport { MESSAGES_SMS_GATEWAY } from './pattern-messages.data';\nimport { SmsGatewayGuard } from './sms-gateway.guard';\n\n@NgModule({\n imports: [\n ProviderConfigurationModule.config([\n {\n navigation: {\n label: gettext('SMS provider'),\n path: 'smsgateway',\n icon: 'envelope-o',\n parent: gettext('Settings'),\n priority: 1000,\n canActivate: [SmsGatewayGuard]\n },\n layout: {\n pageTitle: gettext('SMS provider'),\n cardTitle: gettext('Credentials'),\n description: gettext(\n 'Enter your credentials from your SMS provider. This enables platform features that utilize SMS services (for example, two-factor authentication and user notifications).'\n ),\n providerName: gettext('SMS provider'),\n providerNamePlaceholder: gettext('Select or type to filter providers'),\n providerNameNoMatchesHint: gettext('Select one of the existing providers.'),\n deleteRoles: [Permissions.ROLE_SMS_ADMIN],\n deleteBtnLabel: gettext('Delete'),\n saveRoles: [Permissions.ROLE_SMS_ADMIN],\n saveBtnLabel: gettext('Save'),\n configurationUpdatedSuccessMsg: gettext('Credentials updated.'),\n deleteConfigurationModalTitle: gettext('Delete credentials'),\n deleteConfigurationModalBody: gettext(\n `You are about to delete SMS provider credentials. Deleting credentials will lock out any users with SMS-based two-factor authentication and deactivate the SMS-based smart rules and device communication. Do you want to proceed?`\n ),\n deleteConfigurationModalOkBtnLabel: gettext('Delete'),\n configurationDeletedSuccessMsg: gettext('Credentials deleted.')\n },\n endpoint: {\n definitionsEndpoint: {\n baseUrl: 'service/messaging/providers',\n listUrl: 'definitions'\n },\n configurationEndpoint: {\n baseUrl: 'service/messaging/providers',\n listUrl: 'configuration'\n }\n }\n }\n ])\n ],\n providers: [SmsGatewayGuard, hookPatternMessages(MESSAGES_SMS_GATEWAY)]\n})\nexport class SmsGatewayModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-sms-gateway.mjs","sources":["../../sms-gateway/pattern-messages.data.ts","../../sms-gateway/sms-gateway.guard.ts","../../sms-gateway/sms-gateway.module.ts","../../sms-gateway/c8y-ngx-components-sms-gateway.ts"],"sourcesContent":["import { gettext } from '@c8y/ngx-components/gettext';\n\nexport const MESSAGES_SMS_GATEWAY = {\n '^Sender name$': {\n gettext: gettext('Sender name')\n },\n '^Sender name used for sent SMS$': {\n gettext: gettext('Sender name used for sent SMS')\n },\n '^Sender address$': {\n gettext: gettext('Sender address')\n },\n '^Sender address used for sent SMS$': {\n gettext: gettext('Sender address used for sent SMS')\n },\n '^Username$': {\n gettext: gettext('Username')\n },\n '^Password$': {\n gettext: gettext('Password')\n },\n '^Licence key$': {\n gettext: gettext('License key')\n },\n '^Key$': {\n gettext: gettext('Key')\n },\n '^API base URL$': {\n gettext: gettext('API base URL')\n },\n '^API URL$': {\n gettext: gettext('API URL')\n },\n '^oauth$': {\n gettext: gettext('OAuth')\n },\n '^basic$': {\n gettext: gettext('Basic')\n },\n '^Authentication method$': {\n gettext: gettext('Authentication method')\n },\n '^Defines which authentication method is used with the provider$': {\n gettext: gettext('Defines which authentication method is used with the provider')\n },\n '^Static headers$': {\n gettext: gettext('Static headers')\n },\n '^Static headers that should be added to requests towards the provider$': {\n gettext: gettext('Static headers that should be added to requests towards the provider')\n },\n '^OAuth token URL$': {\n gettext: gettext('OAuth token URL')\n },\n '^URL where the OAuth token is requested from (required if OAuth method is chosen)$': {\n gettext: gettext(\n 'URL where the OAuth token is requested from (required if OAuth method is selected)'\n )\n },\n '^OAuth toke mime type$': {\n gettext: gettext('OAuth token mime type')\n },\n '^Overrides the OAuth token response mime type$': {\n gettext: gettext('Overrides the OAuth token response mime type')\n },\n '^OAuth access toke type$': {\n gettext: gettext('OAuth access token type')\n },\n '^Overrides the OAuth access token type$': {\n gettext: gettext('Overrides the OAuth access token type')\n },\n '^Global configuration$': {\n gettext: gettext('Global configuration')\n },\n '^Enables or disables if the settings may be used globally for all tenants (Only possible in management tenant)$':\n {\n gettext: gettext(\n 'Enables or disables the settings globally for all tenants (only possible in management tenant)'\n )\n },\n '^API key$': {\n gettext: gettext('API key')\n },\n '^Inherit to subtenants$': {\n gettext: gettext('Inherit to subtenants')\n },\n \"^Enables or disables if this tenant's configuration may be inherited to subtenants$\": {\n gettext: gettext(\n 'Enables or disables the option to inherit the tenant configuration to subtenants'\n )\n },\n '^Login$': {\n gettext: gettext('Login')\n },\n '^Source business unit ID$': {\n gettext: gettext('Source business unit ID')\n },\n '^Client ID$': {\n gettext: gettext('Client ID')\n },\n '^Client secret$': {\n gettext: gettext('Client secret')\n }\n} as const;\n","import { Injectable } from '@angular/core';\n\nimport { Permissions, AppStateService } from '@c8y/ngx-components';\n\n@Injectable()\nexport class SmsGatewayGuard {\n private static readonly applicationName = 'sms-gateway';\n private showSMSProvider: Promise<boolean>;\n\n constructor(\n private permissions: Permissions,\n private appState: AppStateService\n ) {}\n\n canActivate(): Promise<boolean> {\n if (this.showSMSProvider === undefined) {\n const hasRole: Promise<boolean> = Promise.resolve(\n this.permissions.hasRole(Permissions.ROLE_SMS_READ)\n );\n\n this.showSMSProvider = hasRole.then(\n (hasPermissions: boolean) =>\n hasPermissions && this.appState.isApplicationAvailable(SmsGatewayGuard.applicationName)\n );\n }\n\n return this.showSMSProvider;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { hookPatternMessages, ProviderConfigurationModule, Permissions } from '@c8y/ngx-components';\nimport { MESSAGES_SMS_GATEWAY } from './pattern-messages.data';\nimport { SmsGatewayGuard } from './sms-gateway.guard';\n\n@NgModule({\n imports: [\n ProviderConfigurationModule.config([\n {\n navigation: {\n label: gettext('SMS provider'),\n path: 'smsgateway',\n icon: 'envelope-o',\n parent: gettext('Settings'),\n priority: 1000,\n canActivate: [SmsGatewayGuard]\n },\n layout: {\n pageTitle: gettext('SMS provider'),\n cardTitle: gettext('Credentials'),\n description: gettext(\n 'Enter your credentials from your SMS provider. This enables platform features that utilize SMS services (for example, two-factor authentication and user notifications).'\n ),\n providerName: gettext('SMS provider'),\n providerNamePlaceholder: gettext('Select or type to filter providers'),\n providerNameNoMatchesHint: gettext('Select one of the existing providers.'),\n deleteRoles: [Permissions.ROLE_SMS_ADMIN],\n deleteBtnLabel: gettext('Delete'),\n saveRoles: [Permissions.ROLE_SMS_ADMIN],\n saveBtnLabel: gettext('Save'),\n configurationUpdatedSuccessMsg: gettext('Credentials updated.'),\n deleteConfigurationModalTitle: gettext('Delete credentials'),\n deleteConfigurationModalBody: gettext(\n `You are about to delete SMS provider credentials. Deleting credentials will lock out any users with SMS-based two-factor authentication and deactivate the SMS-based smart rules and device communication. Do you want to proceed?`\n ),\n deleteConfigurationModalOkBtnLabel: gettext('Delete'),\n configurationDeletedSuccessMsg: gettext('Credentials deleted.')\n },\n endpoint: {\n definitionsEndpoint: {\n baseUrl: 'service/messaging/providers',\n listUrl: 'definitions'\n },\n configurationEndpoint: {\n baseUrl: 'service/messaging/providers',\n listUrl: 'configuration'\n }\n }\n }\n ])\n ],\n providers: [SmsGatewayGuard, hookPatternMessages(MESSAGES_SMS_GATEWAY)]\n})\nexport class SmsGatewayModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -245,10 +245,10 @@ class StaticAssetsService {
245
245
  await this.appService.update({ id: app.id, activeVersionId: appBinary.id });
246
246
  return [];
247
247
  }
248
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetsService, deps: [{ token: i1.AppStateService }, { token: i2.ApplicationService }, { token: i2.FetchClient }, { token: i1.FilesService }, { token: i1.ZipService }], target: i0.ɵɵFactoryTarget.Injectable }); }
249
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetsService, providedIn: 'root' }); }
248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: StaticAssetsService, deps: [{ token: i1.AppStateService }, { token: i2.ApplicationService }, { token: i2.FetchClient }, { token: i1.FilesService }, { token: i1.ZipService }], target: i0.ɵɵFactoryTarget.Injectable }); }
249
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: StaticAssetsService, providedIn: 'root' }); }
250
250
  }
251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetsService, decorators: [{
251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: StaticAssetsService, decorators: [{
252
252
  type: Injectable,
253
253
  args: [{ providedIn: 'root' }]
254
254
  }], ctorParameters: () => [{ type: i1.AppStateService }, { type: i2.ApplicationService }, { type: i2.FetchClient }, { type: i1.FilesService }, { type: i1.ZipService }] });
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-static-assets-data.mjs","sources":["../../static-assets/data/static-assets.service.ts","../../static-assets/data/c8y-ngx-components-static-assets-data.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { ApplicationAvailability, ApplicationType, FetchClient, IApplication } from '@c8y/client';\nimport { ApplicationService } from '@c8y/client';\nimport { AppStateService, DroppedFile, FilesService, ZipService } from '@c8y/ngx-components';\nimport { StaticAsset, StaticAssetType } from './static-assets.model';\n\n@Injectable({ providedIn: 'root' })\nexport class StaticAssetsService {\n readonly fileNames = {\n contents: 'contents.json',\n manifest: 'cumulocity.json',\n exportZipName: 'static-assets.zip'\n } as const;\n private listFilesCachePromises: Record<string, Promise<StaticAsset[]>> = {};\n\n constructor(\n private appstate: AppStateService,\n private appService: ApplicationService,\n private fetchClient: FetchClient,\n private fileService: FilesService,\n private zip: ZipService\n ) {}\n\n /**\n * Lists all files of the given type.\n * Forces a cache renewal.\n */\n async listFiles<T extends string = StaticAssetType>(type: T): Promise<StaticAsset[]> {\n return this.listFilesCached(type, true);\n }\n\n /**\n * Lists all files of the given type.\n * Uses a cache.\n */\n async listFilesCached<T extends string = StaticAssetType>(\n type: T,\n forceCacheRenewal = false\n ): Promise<StaticAsset[]> {\n if (!this.listFilesCachePromises[type] || forceCacheRenewal) {\n this.listFilesCachePromises[type] = this._listFiles(type);\n }\n\n return await this.listFilesCachePromises[type];\n }\n\n /**\n * Clones all assets of the given type from parent tenants into the current tenant.\n */\n async cloneAssetsIntoTenant<T extends string = StaticAssetType>(type: T) {\n const { data: apps } = await this.appService.list({\n availability: ApplicationAvailability.SHARED,\n type: ApplicationType.HOSTED,\n pageSize: 2000\n });\n\n const tenantIdsFromOtherAssetApps = apps\n .filter(app => {\n const result =\n app.owner?.tenant?.id &&\n app.owner?.tenant?.id !== this.appstate.currentTenant.value?.name &&\n app.contextPath === this.getContextPath(type, app.owner?.tenant?.id);\n return result;\n })\n .map(app => app.owner?.tenant?.id);\n\n let filesOfCurrentTenant = await this._listFiles(type);\n\n let filesToUpload = new Array<File>();\n\n const oldAssets = new Array<StaticAsset>();\n\n for (const tenantId of tenantIdsFromOtherAssetApps) {\n try {\n const filesOfApp = await this.getContentJSONForType(type, tenantId);\n oldAssets.push(...filesOfApp);\n for (const file of filesOfApp) {\n try {\n const response = await this.fetchClient.fetch(file.path);\n if (response.status !== 200) {\n console.warn(`Failed to get file \"${file.fileName}\" from path ${file.path}`);\n continue;\n }\n const fileContent = await response.blob();\n\n // remove existing file with same name\n filesOfCurrentTenant = filesOfCurrentTenant.filter(\n existingFile => existingFile.fileName !== file.fileName\n );\n filesToUpload = filesToUpload.filter(\n existingFile => existingFile.name !== file.fileName\n );\n\n filesToUpload.push(new File([fileContent], file.fileName, { type: file.type }));\n } catch (e) {\n console.warn(`Failed to add file \"${file.fileName}\" from tenant ${tenantId}`, e);\n }\n }\n } catch (e) {\n console.warn(`Failed to get asset files from tenant ${tenantId}`);\n }\n }\n\n if (!filesToUpload.length) {\n return;\n }\n\n const newAssets = await this.addFilesToStaticAssets(type, filesToUpload, filesOfCurrentTenant);\n\n return { oldAssets, newAssets };\n }\n\n /**\n * Adds the given files to the static assets of the given type.\n */\n async addFilesToStaticAssets<T extends string = StaticAssetType>(\n type: T,\n files: DroppedFile[] | File[],\n existingFiles: StaticAsset[],\n throwErrorOnExistingFiles = true\n ) {\n const app = await this.getAppForTenant(type);\n const filesToAddToContents = new Array<StaticAsset>();\n const addedAt = new Date().toISOString();\n const filesToUpload: {\n path: string;\n contents: Blob;\n }[] = [];\n for (const droppedFile of files) {\n const file = droppedFile instanceof File ? droppedFile : droppedFile.file;\n const fileName = file.name.toLowerCase().replace(/[^a-zA-Z0-9\\-\\_\\.]/g, '');\n const newFile = new File([file], fileName, {\n type: file.type,\n lastModified: file.lastModified\n });\n if (existingFiles.find(existingFile => existingFile.fileName === fileName)) {\n if (throwErrorOnExistingFiles) {\n throw Error(`File with name \"${fileName}\" is already existing.`);\n }\n existingFiles = existingFiles.filter(existingFile => existingFile.fileName !== fileName);\n }\n const fileExtension = file.name.split('.').pop();\n filesToAddToContents.push({\n addedAt,\n lastModified: file.lastModified,\n extension: fileExtension,\n fileName: fileName,\n originalFileName: file.name,\n path: `/apps/public/${app.contextPath}/${fileName}`,\n size: newFile.size,\n type: newFile.type,\n hashSum: await this.fileService.getHashSumOfFile(newFile)\n });\n filesToUpload.push({\n contents: newFile,\n path: fileName\n });\n }\n\n const newFiles: StaticAsset[] = [...existingFiles, ...filesToAddToContents];\n filesToUpload.push({\n contents: new File([JSON.stringify(newFiles)], this.fileNames.contents, {\n type: 'application/json'\n }),\n path: this.fileNames.contents\n });\n await this.appService.binary(app).updateFiles(filesToUpload);\n await this.ensureAddedFilesArePresent(filesToAddToContents);\n return newFiles;\n }\n\n /**\n * Gets the static assets app for the given type.\n */\n async getAppForTenant<T extends string = StaticAssetType>(type: T): Promise<IApplication> {\n const appName = this.getContextPath(type, false);\n const { data: apps } = await this.appService.listByName(appName);\n if (!apps.length) {\n throw Error(`No app with name ${appName} found.`);\n }\n return apps[0];\n }\n\n private getContentJSONForType<T extends string = StaticAssetType>(\n type: T,\n appendTenantId?: string | null | undefined\n ) {\n const path = this.getPathForContent(type, appendTenantId);\n return this.getContentJSONFromPath(path);\n }\n\n private async getContentJSONFromPath(path: string): Promise<StaticAsset[]> {\n const response = await this.fetchClient.fetch(path);\n if (response.status !== 200) {\n throw Error(`Failed to retrieve ${path}`);\n }\n\n const content = await response.json();\n return content;\n }\n\n private async ensureAddedFilesArePresent(files: StaticAsset[]) {\n for (const file of files) {\n await this.ensureFileIsPresent(file);\n }\n }\n\n private async ensureFileIsPresent(file: StaticAsset) {\n for (let i = 0; i < 12; i++) {\n try {\n const currentDate = new Date();\n const response = await this.fetchClient.fetch(\n `${file.path}?nocache=${currentDate.getTime()}`\n );\n if (response.status !== 200) {\n await this.sleep(5_000);\n continue;\n }\n\n const blob = await response.blob();\n const hashSum = await this.fileService.getHashSumOfFile(blob);\n if (hashSum !== file.hashSum) {\n await this.sleep(5_000);\n continue;\n }\n return;\n } catch (e) {\n console.warn(e);\n continue;\n }\n }\n throw Error(`Unable to retrieve file from ${file.path}`);\n }\n\n private sleep(duration: number): Promise<void> {\n return new Promise<void>(resolve => setTimeout(() => resolve(), duration));\n }\n\n private async _listFiles<T extends string = StaticAssetType>(type: T) {\n try {\n const files = await this.getContentJSONForType(type);\n return files;\n } catch (e) {\n console.warn(e);\n }\n\n return await this.createEmptyApp(type);\n }\n\n private getPathForContent<T extends string = StaticAssetType>(\n type: T,\n appendTenantId?: string | null | undefined\n ): string {\n const currentDate = new Date();\n const contextPath = this.getContextPath(type, appendTenantId);\n return `/apps/public/${contextPath}/${\n this.fileNames.contents\n }?nocache=${currentDate.getTime()}`;\n }\n\n private getContextPath<T extends string = StaticAssetType>(\n type: T,\n appendTenantId?: string | false | undefined\n ) {\n let contextPath: string = type + '-assets';\n const tenantId =\n appendTenantId === undefined ? this.appstate.currentTenant.value?.name : appendTenantId;\n if (tenantId) {\n contextPath = `${contextPath}-${tenantId}`;\n }\n return contextPath;\n }\n\n private async createEmptyApp<T extends string = StaticAssetType>(\n type: T,\n appendTenantId?: string | null | undefined\n ): Promise<StaticAsset[]> {\n const name = this.getContextPath(type, false);\n const contextPath = this.getContextPath(type, appendTenantId);\n const key = `${contextPath}-key`;\n const manifest: IApplication = {\n name,\n contextPath,\n key,\n description: `Application containing static assets used for ${type}.`,\n noAppSwitcher: true,\n type: ApplicationType.HOSTED,\n availability: ApplicationAvailability.MARKET\n };\n\n const content = [];\n const zipFile = await this.zip.createZip([\n {\n fileName: `${this.fileNames.manifest}`,\n blob: new Blob([JSON.stringify(manifest)])\n },\n {\n fileName: `${this.fileNames.contents}`,\n blob: new Blob([JSON.stringify(content)])\n }\n ]);\n const { data: app } = await this.appService.create(manifest);\n const { data: appBinary } = await this.appService\n .binary(app)\n .upload(zipFile, `empty-${name}.zip`);\n await this.appService.update({ id: app.id, activeVersionId: appBinary.id as string });\n return [];\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-static-assets-data.mjs","sources":["../../static-assets/data/static-assets.service.ts","../../static-assets/data/c8y-ngx-components-static-assets-data.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { ApplicationAvailability, ApplicationType, FetchClient, IApplication } from '@c8y/client';\nimport { ApplicationService } from '@c8y/client';\nimport { AppStateService, DroppedFile, FilesService, ZipService } from '@c8y/ngx-components';\nimport { StaticAsset, StaticAssetType } from './static-assets.model';\n\n@Injectable({ providedIn: 'root' })\nexport class StaticAssetsService {\n readonly fileNames = {\n contents: 'contents.json',\n manifest: 'cumulocity.json',\n exportZipName: 'static-assets.zip'\n } as const;\n private listFilesCachePromises: Record<string, Promise<StaticAsset[]>> = {};\n\n constructor(\n private appstate: AppStateService,\n private appService: ApplicationService,\n private fetchClient: FetchClient,\n private fileService: FilesService,\n private zip: ZipService\n ) {}\n\n /**\n * Lists all files of the given type.\n * Forces a cache renewal.\n */\n async listFiles<T extends string = StaticAssetType>(type: T): Promise<StaticAsset[]> {\n return this.listFilesCached(type, true);\n }\n\n /**\n * Lists all files of the given type.\n * Uses a cache.\n */\n async listFilesCached<T extends string = StaticAssetType>(\n type: T,\n forceCacheRenewal = false\n ): Promise<StaticAsset[]> {\n if (!this.listFilesCachePromises[type] || forceCacheRenewal) {\n this.listFilesCachePromises[type] = this._listFiles(type);\n }\n\n return await this.listFilesCachePromises[type];\n }\n\n /**\n * Clones all assets of the given type from parent tenants into the current tenant.\n */\n async cloneAssetsIntoTenant<T extends string = StaticAssetType>(type: T) {\n const { data: apps } = await this.appService.list({\n availability: ApplicationAvailability.SHARED,\n type: ApplicationType.HOSTED,\n pageSize: 2000\n });\n\n const tenantIdsFromOtherAssetApps = apps\n .filter(app => {\n const result =\n app.owner?.tenant?.id &&\n app.owner?.tenant?.id !== this.appstate.currentTenant.value?.name &&\n app.contextPath === this.getContextPath(type, app.owner?.tenant?.id);\n return result;\n })\n .map(app => app.owner?.tenant?.id);\n\n let filesOfCurrentTenant = await this._listFiles(type);\n\n let filesToUpload = new Array<File>();\n\n const oldAssets = new Array<StaticAsset>();\n\n for (const tenantId of tenantIdsFromOtherAssetApps) {\n try {\n const filesOfApp = await this.getContentJSONForType(type, tenantId);\n oldAssets.push(...filesOfApp);\n for (const file of filesOfApp) {\n try {\n const response = await this.fetchClient.fetch(file.path);\n if (response.status !== 200) {\n console.warn(`Failed to get file \"${file.fileName}\" from path ${file.path}`);\n continue;\n }\n const fileContent = await response.blob();\n\n // remove existing file with same name\n filesOfCurrentTenant = filesOfCurrentTenant.filter(\n existingFile => existingFile.fileName !== file.fileName\n );\n filesToUpload = filesToUpload.filter(\n existingFile => existingFile.name !== file.fileName\n );\n\n filesToUpload.push(new File([fileContent], file.fileName, { type: file.type }));\n } catch (e) {\n console.warn(`Failed to add file \"${file.fileName}\" from tenant ${tenantId}`, e);\n }\n }\n } catch (e) {\n console.warn(`Failed to get asset files from tenant ${tenantId}`);\n }\n }\n\n if (!filesToUpload.length) {\n return;\n }\n\n const newAssets = await this.addFilesToStaticAssets(type, filesToUpload, filesOfCurrentTenant);\n\n return { oldAssets, newAssets };\n }\n\n /**\n * Adds the given files to the static assets of the given type.\n */\n async addFilesToStaticAssets<T extends string = StaticAssetType>(\n type: T,\n files: DroppedFile[] | File[],\n existingFiles: StaticAsset[],\n throwErrorOnExistingFiles = true\n ) {\n const app = await this.getAppForTenant(type);\n const filesToAddToContents = new Array<StaticAsset>();\n const addedAt = new Date().toISOString();\n const filesToUpload: {\n path: string;\n contents: Blob;\n }[] = [];\n for (const droppedFile of files) {\n const file = droppedFile instanceof File ? droppedFile : droppedFile.file;\n const fileName = file.name.toLowerCase().replace(/[^a-zA-Z0-9\\-\\_\\.]/g, '');\n const newFile = new File([file], fileName, {\n type: file.type,\n lastModified: file.lastModified\n });\n if (existingFiles.find(existingFile => existingFile.fileName === fileName)) {\n if (throwErrorOnExistingFiles) {\n throw Error(`File with name \"${fileName}\" is already existing.`);\n }\n existingFiles = existingFiles.filter(existingFile => existingFile.fileName !== fileName);\n }\n const fileExtension = file.name.split('.').pop();\n filesToAddToContents.push({\n addedAt,\n lastModified: file.lastModified,\n extension: fileExtension,\n fileName: fileName,\n originalFileName: file.name,\n path: `/apps/public/${app.contextPath}/${fileName}`,\n size: newFile.size,\n type: newFile.type,\n hashSum: await this.fileService.getHashSumOfFile(newFile)\n });\n filesToUpload.push({\n contents: newFile,\n path: fileName\n });\n }\n\n const newFiles: StaticAsset[] = [...existingFiles, ...filesToAddToContents];\n filesToUpload.push({\n contents: new File([JSON.stringify(newFiles)], this.fileNames.contents, {\n type: 'application/json'\n }),\n path: this.fileNames.contents\n });\n await this.appService.binary(app).updateFiles(filesToUpload);\n await this.ensureAddedFilesArePresent(filesToAddToContents);\n return newFiles;\n }\n\n /**\n * Gets the static assets app for the given type.\n */\n async getAppForTenant<T extends string = StaticAssetType>(type: T): Promise<IApplication> {\n const appName = this.getContextPath(type, false);\n const { data: apps } = await this.appService.listByName(appName);\n if (!apps.length) {\n throw Error(`No app with name ${appName} found.`);\n }\n return apps[0];\n }\n\n private getContentJSONForType<T extends string = StaticAssetType>(\n type: T,\n appendTenantId?: string | null | undefined\n ) {\n const path = this.getPathForContent(type, appendTenantId);\n return this.getContentJSONFromPath(path);\n }\n\n private async getContentJSONFromPath(path: string): Promise<StaticAsset[]> {\n const response = await this.fetchClient.fetch(path);\n if (response.status !== 200) {\n throw Error(`Failed to retrieve ${path}`);\n }\n\n const content = await response.json();\n return content;\n }\n\n private async ensureAddedFilesArePresent(files: StaticAsset[]) {\n for (const file of files) {\n await this.ensureFileIsPresent(file);\n }\n }\n\n private async ensureFileIsPresent(file: StaticAsset) {\n for (let i = 0; i < 12; i++) {\n try {\n const currentDate = new Date();\n const response = await this.fetchClient.fetch(\n `${file.path}?nocache=${currentDate.getTime()}`\n );\n if (response.status !== 200) {\n await this.sleep(5_000);\n continue;\n }\n\n const blob = await response.blob();\n const hashSum = await this.fileService.getHashSumOfFile(blob);\n if (hashSum !== file.hashSum) {\n await this.sleep(5_000);\n continue;\n }\n return;\n } catch (e) {\n console.warn(e);\n continue;\n }\n }\n throw Error(`Unable to retrieve file from ${file.path}`);\n }\n\n private sleep(duration: number): Promise<void> {\n return new Promise<void>(resolve => setTimeout(() => resolve(), duration));\n }\n\n private async _listFiles<T extends string = StaticAssetType>(type: T) {\n try {\n const files = await this.getContentJSONForType(type);\n return files;\n } catch (e) {\n console.warn(e);\n }\n\n return await this.createEmptyApp(type);\n }\n\n private getPathForContent<T extends string = StaticAssetType>(\n type: T,\n appendTenantId?: string | null | undefined\n ): string {\n const currentDate = new Date();\n const contextPath = this.getContextPath(type, appendTenantId);\n return `/apps/public/${contextPath}/${\n this.fileNames.contents\n }?nocache=${currentDate.getTime()}`;\n }\n\n private getContextPath<T extends string = StaticAssetType>(\n type: T,\n appendTenantId?: string | false | undefined\n ) {\n let contextPath: string = type + '-assets';\n const tenantId =\n appendTenantId === undefined ? this.appstate.currentTenant.value?.name : appendTenantId;\n if (tenantId) {\n contextPath = `${contextPath}-${tenantId}`;\n }\n return contextPath;\n }\n\n private async createEmptyApp<T extends string = StaticAssetType>(\n type: T,\n appendTenantId?: string | null | undefined\n ): Promise<StaticAsset[]> {\n const name = this.getContextPath(type, false);\n const contextPath = this.getContextPath(type, appendTenantId);\n const key = `${contextPath}-key`;\n const manifest: IApplication = {\n name,\n contextPath,\n key,\n description: `Application containing static assets used for ${type}.`,\n noAppSwitcher: true,\n type: ApplicationType.HOSTED,\n availability: ApplicationAvailability.MARKET\n };\n\n const content = [];\n const zipFile = await this.zip.createZip([\n {\n fileName: `${this.fileNames.manifest}`,\n blob: new Blob([JSON.stringify(manifest)])\n },\n {\n fileName: `${this.fileNames.contents}`,\n blob: new Blob([JSON.stringify(content)])\n }\n ]);\n const { data: app } = await this.appService.create(manifest);\n const { data: appBinary } = await this.appService\n .binary(app)\n .upload(zipFile, `empty-${name}.zip`);\n await this.appService.update({ id: app.id, activeVersionId: appBinary.id as string });\n return [];\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAOa,mBAAmB,CAAA;IAQ9B,WAAA,CACU,QAAyB,EACzB,UAA8B,EAC9B,WAAwB,EACxB,WAAyB,EACzB,GAAe,EAAA;QAJf,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,GAAG,GAAH,GAAG;AAZJ,QAAA,IAAA,CAAA,SAAS,GAAG;AACnB,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,aAAa,EAAE;SACP;QACF,IAAA,CAAA,sBAAsB,GAA2C,EAAE;IAQxE;AAEH;;;AAGG;IACH,MAAM,SAAS,CAAqC,IAAO,EAAA;QACzD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;IACzC;AAEA;;;AAGG;AACH,IAAA,MAAM,eAAe,CACnB,IAAO,EACP,iBAAiB,GAAG,KAAK,EAAA;QAEzB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,iBAAiB,EAAE;AAC3D,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC3D;AAEA,QAAA,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;IAChD;AAEA;;AAEG;IACH,MAAM,qBAAqB,CAAqC,IAAO,EAAA;AACrE,QAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAChD,YAAY,EAAE,uBAAuB,CAAC,MAAM;YAC5C,IAAI,EAAE,eAAe,CAAC,MAAM;AAC5B,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC;QAEF,MAAM,2BAA2B,GAAG;aACjC,MAAM,CAAC,GAAG,IAAG;YACZ,MAAM,MAAM,GACV,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;AACrB,gBAAA,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI;AACjE,gBAAA,GAAG,CAAC,WAAW,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;AACtE,YAAA,OAAO,MAAM;AACf,QAAA,CAAC;AACA,aAAA,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;QAEpC,IAAI,oBAAoB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAEtD,QAAA,IAAI,aAAa,GAAG,IAAI,KAAK,EAAQ;AAErC,QAAA,MAAM,SAAS,GAAG,IAAI,KAAK,EAAe;AAE1C,QAAA,KAAK,MAAM,QAAQ,IAAI,2BAA2B,EAAE;AAClD,YAAA,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC;AACnE,gBAAA,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;AAC7B,gBAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC7B,oBAAA,IAAI;AACF,wBAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACxD,wBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AAC3B,4BAAA,OAAO,CAAC,IAAI,CAAC,CAAA,oBAAA,EAAuB,IAAI,CAAC,QAAQ,CAAA,YAAA,EAAe,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;4BAC5E;wBACF;AACA,wBAAA,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;;AAGzC,wBAAA,oBAAoB,GAAG,oBAAoB,CAAC,MAAM,CAChD,YAAY,IAAI,YAAY,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CACxD;AACD,wBAAA,aAAa,GAAG,aAAa,CAAC,MAAM,CAClC,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CACpD;wBAED,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBACjF;oBAAE,OAAO,CAAC,EAAE;AACV,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAA,oBAAA,EAAuB,IAAI,CAAC,QAAQ,CAAA,cAAA,EAAiB,QAAQ,CAAA,CAAE,EAAE,CAAC,CAAC;oBAClF;gBACF;YACF;YAAE,OAAO,CAAC,EAAE;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,yCAAyC,QAAQ,CAAA,CAAE,CAAC;YACnE;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACzB;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,CAAC;AAE9F,QAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE;IACjC;AAEA;;AAEG;IACH,MAAM,sBAAsB,CAC1B,IAAO,EACP,KAA6B,EAC7B,aAA4B,EAC5B,yBAAyB,GAAG,IAAI,EAAA;QAEhC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC5C,QAAA,MAAM,oBAAoB,GAAG,IAAI,KAAK,EAAe;QACrD,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACxC,MAAM,aAAa,GAGb,EAAE;AACR,QAAA,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE;AAC/B,YAAA,MAAM,IAAI,GAAG,WAAW,YAAY,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,IAAI;AACzE,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;YAC3E,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE;gBACzC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,YAAY,EAAE,IAAI,CAAC;AACpB,aAAA,CAAC;AACF,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE;gBAC1E,IAAI,yBAAyB,EAAE;AAC7B,oBAAA,MAAM,KAAK,CAAC,CAAA,gBAAA,EAAmB,QAAQ,CAAA,sBAAA,CAAwB,CAAC;gBAClE;AACA,gBAAA,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,KAAK,QAAQ,CAAC;YAC1F;AACA,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;YAChD,oBAAoB,CAAC,IAAI,CAAC;gBACxB,OAAO;gBACP,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,gBAAA,SAAS,EAAE,aAAa;AACxB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,gBAAgB,EAAE,IAAI,CAAC,IAAI;AAC3B,gBAAA,IAAI,EAAE,CAAA,aAAA,EAAgB,GAAG,CAAC,WAAW,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;gBACnD,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO;AACzD,aAAA,CAAC;YACF,aAAa,CAAC,IAAI,CAAC;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,IAAI,EAAE;AACP,aAAA,CAAC;QACJ;QAEA,MAAM,QAAQ,GAAkB,CAAC,GAAG,aAAa,EAAE,GAAG,oBAAoB,CAAC;QAC3E,aAAa,CAAC,IAAI,CAAC;AACjB,YAAA,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACtE,gBAAA,IAAI,EAAE;aACP,CAAC;AACF,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AACtB,SAAA,CAAC;AACF,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC;AAC5D,QAAA,MAAM,IAAI,CAAC,0BAA0B,CAAC,oBAAoB,CAAC;AAC3D,QAAA,OAAO,QAAQ;IACjB;AAEA;;AAEG;IACH,MAAM,eAAe,CAAqC,IAAO,EAAA;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;AAChD,QAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;AAChE,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,KAAK,CAAC,CAAA,iBAAA,EAAoB,OAAO,CAAA,OAAA,CAAS,CAAC;QACnD;AACA,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC;IAChB;IAEQ,qBAAqB,CAC3B,IAAO,EACP,cAA0C,EAAA;QAE1C,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;IAC1C;IAEQ,MAAM,sBAAsB,CAAC,IAAY,EAAA;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;AACnD,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AAC3B,YAAA,MAAM,KAAK,CAAC,CAAA,mBAAA,EAAsB,IAAI,CAAA,CAAE,CAAC;QAC3C;AAEA,QAAA,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACrC,QAAA,OAAO,OAAO;IAChB;IAEQ,MAAM,0BAA0B,CAAC,KAAoB,EAAA;AAC3D,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;QACtC;IACF;IAEQ,MAAM,mBAAmB,CAAC,IAAiB,EAAA;AACjD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC3B,YAAA,IAAI;AACF,gBAAA,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE;gBAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAC3C,CAAA,EAAG,IAAI,CAAC,IAAI,YAAY,WAAW,CAAC,OAAO,EAAE,CAAA,CAAE,CAChD;AACD,gBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AAC3B,oBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBACvB;gBACF;AAEA,gBAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;gBAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC7D,gBAAA,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;AAC5B,oBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBACvB;gBACF;gBACA;YACF;YAAE,OAAO,CAAC,EAAE;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACf;YACF;QACF;QACA,MAAM,KAAK,CAAC,CAAA,6BAAA,EAAgC,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;IAC1D;AAEQ,IAAA,KAAK,CAAC,QAAgB,EAAA;AAC5B,QAAA,OAAO,IAAI,OAAO,CAAO,OAAO,IAAI,UAAU,CAAC,MAAM,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC5E;IAEQ,MAAM,UAAU,CAAqC,IAAO,EAAA;AAClE,QAAA,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AACpD,YAAA,OAAO,KAAK;QACd;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACjB;AAEA,QAAA,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;IACxC;IAEQ,iBAAiB,CACvB,IAAO,EACP,cAA0C,EAAA;AAE1C,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC;AAC7D,QAAA,OAAO,CAAA,aAAA,EAAgB,WAAW,CAAA,CAAA,EAChC,IAAI,CAAC,SAAS,CAAC,QACjB,CAAA,SAAA,EAAY,WAAW,CAAC,OAAO,EAAE,EAAE;IACrC;IAEQ,cAAc,CACpB,IAAO,EACP,cAA2C,EAAA;AAE3C,QAAA,IAAI,WAAW,GAAW,IAAI,GAAG,SAAS;QAC1C,MAAM,QAAQ,GACZ,cAAc,KAAK,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,cAAc;QACzF,IAAI,QAAQ,EAAE;AACZ,YAAA,WAAW,GAAG,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,QAAQ,EAAE;QAC5C;AACA,QAAA,OAAO,WAAW;IACpB;AAEQ,IAAA,MAAM,cAAc,CAC1B,IAAO,EACP,cAA0C,EAAA;QAE1C,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC;AAC7D,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,WAAW,MAAM;AAChC,QAAA,MAAM,QAAQ,GAAiB;YAC7B,IAAI;YACJ,WAAW;YACX,GAAG;YACH,WAAW,EAAE,CAAA,8CAAA,EAAiD,IAAI,CAAA,CAAA,CAAG;AACrE,YAAA,aAAa,EAAE,IAAI;YACnB,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,YAAY,EAAE,uBAAuB,CAAC;SACvC;QAED,MAAM,OAAO,GAAG,EAAE;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACvC,YAAA;AACE,gBAAA,QAAQ,EAAE,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAA,CAAE;AACtC,gBAAA,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAA,CAAE;AACtC,gBAAA,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACzC;AACF,SAAA,CAAC;AACF,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC5D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC;aACpC,MAAM,CAAC,GAAG;AACV,aAAA,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,CAAA,IAAA,CAAM,CAAC;QACvC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,SAAS,CAAC,EAAY,EAAE,CAAC;AACrF,QAAA,OAAO,EAAE;IACX;+GA5SW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA,CAAA;;4FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACNlC;;AAEG;;;;"}