@c8y/ngx-components 1022.28.2 → 1022.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/asset-properties/asset-properties.model.d.ts +12 -3
  2. package/asset-properties/asset-properties.model.d.ts.map +1 -1
  3. package/asset-properties/asset-properties.service.d.ts +20 -2
  4. package/asset-properties/asset-properties.service.d.ts.map +1 -1
  5. package/asset-properties/asset-property-list/asset-property-icon-tooltip.pipe.d.ts +14 -0
  6. package/asset-properties/asset-property-list/asset-property-icon-tooltip.pipe.d.ts.map +1 -0
  7. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts.map +1 -1
  8. package/asset-properties/asset-property-list/asset-property-list.component.d.ts +28 -18
  9. package/asset-properties/asset-property-list/asset-property-list.component.d.ts.map +1 -1
  10. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts +2 -2
  11. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts.map +1 -1
  12. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts +97 -0
  13. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts.map +1 -0
  14. package/asset-properties/custom-properties-drawer.service.d.ts +12 -0
  15. package/asset-properties/custom-properties-drawer.service.d.ts.map +1 -0
  16. package/asset-properties/index.d.ts +1 -0
  17. package/asset-properties/index.d.ts.map +1 -1
  18. package/context-dashboard/dashboard-detail.service.d.ts +2 -2
  19. package/context-dashboard/widget-config-hook/widget-config-hook.model.d.ts +2 -1
  20. package/context-dashboard/widget-config-hook/widget-config-hook.model.d.ts.map +1 -1
  21. package/context-dashboard/widget-config.component.d.ts +3 -1
  22. package/context-dashboard/widget-config.component.d.ts.map +1 -1
  23. package/context-dashboard/widget-config.service.d.ts +14 -8
  24. package/context-dashboard/widget-config.service.d.ts.map +1 -1
  25. package/core/dynamic-component/dynamic-component.model.d.ts +26 -0
  26. package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
  27. package/core/i18n/pattern-messages.data.d.ts +7 -0
  28. package/core/i18n/pattern-messages.data.d.ts.map +1 -1
  29. package/core/index.d.ts +1 -0
  30. package/core/index.d.ts.map +1 -1
  31. package/core/query-param-handler/query-param-handler.service.d.ts +1 -1
  32. package/core/query-param-handler/query-param-handler.service.d.ts.map +1 -1
  33. package/core/query-param-handler/query-param-modal-handler.service.d.ts +16 -5
  34. package/core/query-param-handler/query-param-modal-handler.service.d.ts.map +1 -1
  35. package/core/resizable-grid/index.d.ts +2 -0
  36. package/core/resizable-grid/index.d.ts.map +1 -0
  37. package/core/resizable-grid/resizable-grid.component.d.ts +114 -0
  38. package/core/resizable-grid/resizable-grid.component.d.ts.map +1 -0
  39. package/dashboard-manager/devicemanagement/c8y-ngx-components-dashboard-manager-devicemanagement.d.ts.map +1 -0
  40. package/dashboard-manager/devicemanagement/index.d.ts +2 -0
  41. package/dashboard-manager/devicemanagement/index.d.ts.map +1 -0
  42. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
  43. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
  44. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  45. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
  46. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs.map +1 -1
  47. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
  48. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
  50. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  52. package/fesm2022/c8y-ngx-components-alarms.mjs +73 -73
  53. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  54. package/fesm2022/c8y-ngx-components-api.mjs +7 -7
  55. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  56. package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
  57. package/fesm2022/c8y-ngx-components-app-logs.mjs.map +1 -1
  58. package/fesm2022/c8y-ngx-components-asset-properties.mjs +427 -66
  59. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  60. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-WUN1r4fC.mjs → c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs} +13 -13
  61. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-WUN1r4fC.mjs.map → c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs.map} +1 -1
  62. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
  63. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  64. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +114 -114
  65. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  66. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
  67. package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
  68. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
  69. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  70. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
  71. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
  72. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
  73. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
  74. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
  75. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
  76. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs.map +1 -1
  77. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
  78. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
  79. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
  80. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  81. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
  82. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
  83. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +33 -33
  84. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  85. package/fesm2022/c8y-ngx-components-branding-shared.mjs +10 -10
  86. package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
  87. package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
  88. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  89. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
  90. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  91. package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
  92. package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
  93. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
  94. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
  96. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs.map +1 -1
  97. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
  98. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
  99. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BWyhab0H.mjs} +4 -4
  100. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BWyhab0H.mjs.map} +1 -1
  101. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs} +10 -10
  102. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs.map} +1 -1
  103. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs} +4 -4
  104. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs.map} +1 -1
  105. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
  106. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs.map +1 -1
  107. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
  108. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs.map +1 -1
  109. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +133 -116
  110. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  111. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DtLAOoFx.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs} +16 -16
  112. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DtLAOoFx.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs.map} +1 -1
  113. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
  114. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
  115. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +19 -0
  116. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs.map +1 -0
  117. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
  118. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  119. package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
  120. package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
  121. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
  122. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  123. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
  124. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  125. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
  126. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +24 -24
  127. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  128. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +7 -7
  129. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  130. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
  131. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  132. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
  133. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  134. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
  135. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs.map +1 -1
  136. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
  137. package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
  138. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +40 -40
  139. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  140. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +41 -40
  141. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  142. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
  143. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  144. package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
  145. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  146. package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
  147. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  148. package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
  149. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  150. package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
  151. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  152. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
  153. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
  154. package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
  155. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  156. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
  157. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  158. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
  159. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  160. package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
  161. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  162. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  163. package/fesm2022/c8y-ngx-components-echart.mjs +27 -27
  164. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  165. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
  166. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  167. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
  168. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -1
  169. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
  170. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  171. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
  172. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
  173. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
  174. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  175. package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
  176. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  177. package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
  178. package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
  179. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
  180. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
  181. package/fesm2022/c8y-ngx-components-events.mjs +3 -3
  182. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  183. package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
  184. package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
  185. package/fesm2022/c8y-ngx-components-exports.mjs.map +1 -1
  186. package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
  187. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  188. package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
  189. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  190. package/fesm2022/c8y-ngx-components-icon-selector-icons-arrows.mjs.map +1 -1
  191. package/fesm2022/c8y-ngx-components-icon-selector-icons-city.mjs.map +1 -1
  192. package/fesm2022/c8y-ngx-components-icon-selector-icons-data.mjs.map +1 -1
  193. package/fesm2022/c8y-ngx-components-icon-selector-icons-dateAndTime.mjs.map +1 -1
  194. package/fesm2022/c8y-ngx-components-icon-selector-icons-devicesAndSensors.mjs.map +1 -1
  195. package/fesm2022/c8y-ngx-components-icon-selector-icons-ecommerce.mjs.map +1 -1
  196. package/fesm2022/c8y-ngx-components-icon-selector-icons-editing.mjs.map +1 -1
  197. package/fesm2022/c8y-ngx-components-icon-selector-icons-filesAndFolders.mjs.map +1 -1
  198. package/fesm2022/c8y-ngx-components-icon-selector-icons-finance.mjs.map +1 -1
  199. package/fesm2022/c8y-ngx-components-icon-selector-icons-hands.mjs.map +1 -1
  200. package/fesm2022/c8y-ngx-components-icon-selector-icons-location.mjs.map +1 -1
  201. package/fesm2022/c8y-ngx-components-icon-selector-icons-messaging.mjs.map +1 -1
  202. package/fesm2022/c8y-ngx-components-icon-selector-icons-multimedia.mjs.map +1 -1
  203. package/fesm2022/c8y-ngx-components-icon-selector-icons-network.mjs.map +1 -1
  204. package/fesm2022/c8y-ngx-components-icon-selector-icons-office.mjs.map +1 -1
  205. package/fesm2022/c8y-ngx-components-icon-selector-icons-people.mjs.map +1 -1
  206. package/fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs +1 -0
  207. package/fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs.map +1 -1
  208. package/fesm2022/c8y-ngx-components-icon-selector-icons-programming.mjs.map +1 -1
  209. package/fesm2022/c8y-ngx-components-icon-selector-icons-security.mjs.map +1 -1
  210. package/fesm2022/c8y-ngx-components-icon-selector-icons-transport.mjs.map +1 -1
  211. package/fesm2022/c8y-ngx-components-icon-selector-icons-userInterface.mjs.map +1 -1
  212. package/fesm2022/c8y-ngx-components-icon-selector-icons-weather.mjs.map +1 -1
  213. package/fesm2022/c8y-ngx-components-icon-selector-icons.mjs.map +1 -1
  214. package/fesm2022/c8y-ngx-components-icon-selector-model.mjs.map +1 -1
  215. package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
  216. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  217. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  218. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  219. package/fesm2022/c8y-ngx-components-location.mjs +28 -28
  220. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  221. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
  222. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  223. package/fesm2022/c8y-ngx-components-map.mjs +19 -19
  224. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  225. package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
  226. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
  227. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
  228. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
  229. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
  230. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  231. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
  232. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  233. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
  234. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  235. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
  236. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  237. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
  238. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs.map +1 -1
  239. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
  240. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
  241. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +10 -10
  242. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  243. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
  244. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  245. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
  246. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  247. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
  248. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
  249. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
  250. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
  251. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
  252. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
  253. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
  254. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  255. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
  256. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  257. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
  258. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  259. package/fesm2022/c8y-ngx-components-operations-product-experience.mjs.map +1 -1
  260. package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
  261. package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
  262. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
  263. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
  264. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
  265. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  266. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
  267. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  268. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
  269. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  270. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
  271. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  272. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
  273. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
  274. package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
  275. package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
  276. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
  277. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
  278. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
  279. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  280. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
  281. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  282. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs.map +1 -1
  283. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
  284. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  285. package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
  286. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  287. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
  288. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
  289. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
  290. package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -1
  291. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
  292. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
  293. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
  294. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  295. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
  296. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -1
  297. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
  298. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
  299. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
  300. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
  301. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
  302. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -1
  303. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
  304. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -1
  305. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
  306. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  307. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
  308. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
  309. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
  310. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  311. package/fesm2022/c8y-ngx-components-replace-device.mjs +13 -29
  312. package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
  313. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
  314. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  315. package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
  316. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  317. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
  318. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  319. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
  320. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  321. package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
  322. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  323. package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
  324. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  325. package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
  326. package/fesm2022/c8y-ngx-components-repository.mjs.map +1 -1
  327. package/fesm2022/c8y-ngx-components-search.mjs +19 -19
  328. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  329. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +33 -27
  330. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
  331. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +17 -320
  332. package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
  333. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
  334. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
  335. package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
  336. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
  337. package/fesm2022/c8y-ngx-components-services.mjs +29 -29
  338. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  339. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
  340. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  341. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
  342. package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  343. package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
  344. package/fesm2022/c8y-ngx-components-static-assets-data.mjs.map +1 -1
  345. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +3 -3
  346. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs.map +1 -1
  347. package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
  348. package/fesm2022/c8y-ngx-components-static-assets.mjs.map +1 -1
  349. package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
  350. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  351. package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
  352. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  353. package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
  354. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
  355. package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
  356. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
  357. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
  358. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  359. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
  360. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  361. package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
  362. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -1
  363. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
  364. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  365. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
  366. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  367. package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
  368. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  369. package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
  370. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  371. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  372. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +4 -4
  373. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  374. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  375. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  376. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  377. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
  378. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
  379. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
  380. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
  381. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
  382. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  383. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  384. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
  385. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
  386. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
  387. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +18 -14
  388. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  389. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +4 -2
  390. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
  391. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  392. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  393. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  394. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  395. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +4 -2
  396. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  397. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs.map +1 -1
  398. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  399. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  400. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
  401. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  402. package/fesm2022/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
  403. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +22 -22
  404. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  405. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
  406. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  407. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
  408. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs.map +1 -1
  409. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
  410. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  411. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +6 -6
  412. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  413. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +50 -36
  414. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  415. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
  416. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  417. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +7 -7
  418. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  419. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
  420. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
  421. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +22 -22
  422. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  423. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
  424. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  425. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
  426. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  427. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
  428. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  429. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
  430. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  431. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
  432. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  433. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
  434. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
  435. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
  436. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  437. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
  438. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs.map +1 -1
  439. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs.map +1 -1
  440. package/fesm2022/c8y-ngx-components-widgets.mjs +4 -4
  441. package/fesm2022/c8y-ngx-components-widgets.mjs.map +1 -1
  442. package/fesm2022/c8y-ngx-components.mjs +1658 -1315
  443. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  444. package/icon-selector/icons/index.d.ts +1 -1
  445. package/icon-selector/icons/platform/index.d.ts +2 -2
  446. package/icon-selector/icons/platform/index.d.ts.map +1 -1
  447. package/locales/de.po +26 -3
  448. package/locales/es.po +26 -3
  449. package/locales/fr.po +26 -3
  450. package/locales/ja_JP.po +25 -3
  451. package/locales/ko.po +26 -3
  452. package/locales/locales.pot +25 -2
  453. package/locales/nl.po +26 -3
  454. package/locales/pl.po +26 -3
  455. package/locales/pt_BR.po +26 -3
  456. package/locales/zh_CN.po +26 -3
  457. package/locales/zh_TW.po +26 -3
  458. package/package.json +1 -1
  459. package/replace-device/replace-device.module.d.ts.map +1 -1
  460. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts +6 -6
  461. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts.map +1 -1
  462. package/sensor-phone/sensor-phone-modal/sensor-phone.model.d.ts +0 -1
  463. package/sensor-phone/sensor-phone-modal/sensor-phone.model.d.ts.map +1 -1
  464. package/sensor-phone/sensor-phone.module.d.ts +2 -3
  465. package/sensor-phone/sensor-phone.module.d.ts.map +1 -1
  466. package/widgets/definitions/datapoints-table/index.d.ts +1 -2
  467. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  468. package/widgets/definitions/html-widget/html-widget-config.factory.d.ts +1 -1
  469. package/widgets/definitions/html-widget/html-widget-config.factory.d.ts.map +1 -1
  470. package/widgets/definitions/image/index.d.ts +1 -1
  471. package/widgets/definitions/image/index.d.ts.map +1 -1
  472. package/widgets/definitions/markdown/index.d.ts +1 -1
  473. package/widgets/definitions/markdown/index.d.ts.map +1 -1
  474. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  475. package/widgets/implementations/three-d-rotation/three-d-rotation-widget-view/three-d-rotation-widget-view.component.d.ts.map +1 -1
@@ -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';\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 {\n gettext,\n hookPatternMessages,\n ProviderConfigurationModule,\n Permissions\n} 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';\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 {\n gettext,\n hookPatternMessages,\n ProviderConfigurationModule,\n Permissions\n} 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":";;;;;AAEO,MAAM,oBAAoB,GAAG;AAClC,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,OAAO,CAAC,aAAa;AAC/B,KAAA;AACD,IAAA,iCAAiC,EAAE;AACjC,QAAA,OAAO,EAAE,OAAO,CAAC,+BAA+B;AACjD,KAAA;AACD,IAAA,kBAAkB,EAAE;AAClB,QAAA,OAAO,EAAE,OAAO,CAAC,gBAAgB;AAClC,KAAA;AACD,IAAA,oCAAoC,EAAE;AACpC,QAAA,OAAO,EAAE,OAAO,CAAC,kCAAkC;AACpD,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,OAAO,EAAE,OAAO,CAAC,UAAU;AAC5B,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,OAAO,EAAE,OAAO,CAAC,UAAU;AAC5B,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,OAAO,CAAC,aAAa;AAC/B,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,OAAO,EAAE,OAAO,CAAC,KAAK;AACvB,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,OAAO,EAAE,OAAO,CAAC,cAAc;AAChC,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,OAAO,EAAE,OAAO,CAAC,SAAS;AAC3B,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,OAAO,EAAE,OAAO,CAAC,OAAO;AACzB,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,OAAO,EAAE,OAAO,CAAC,OAAO;AACzB,KAAA;AACD,IAAA,yBAAyB,EAAE;AACzB,QAAA,OAAO,EAAE,OAAO,CAAC,uBAAuB;AACzC,KAAA;AACD,IAAA,iEAAiE,EAAE;AACjE,QAAA,OAAO,EAAE,OAAO,CAAC,+DAA+D;AACjF,KAAA;AACD,IAAA,kBAAkB,EAAE;AAClB,QAAA,OAAO,EAAE,OAAO,CAAC,gBAAgB;AAClC,KAAA;AACD,IAAA,wEAAwE,EAAE;AACxE,QAAA,OAAO,EAAE,OAAO,CAAC,sEAAsE;AACxF,KAAA;AACD,IAAA,mBAAmB,EAAE;AACnB,QAAA,OAAO,EAAE,OAAO,CAAC,iBAAiB;AACnC,KAAA;AACD,IAAA,oFAAoF,EAAE;AACpF,QAAA,OAAO,EAAE,OAAO,CACd,oFAAoF;AAEvF,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,OAAO,EAAE,OAAO,CAAC,uBAAuB;AACzC,KAAA;AACD,IAAA,gDAAgD,EAAE;AAChD,QAAA,OAAO,EAAE,OAAO,CAAC,8CAA8C;AAChE,KAAA;AACD,IAAA,0BAA0B,EAAE;AAC1B,QAAA,OAAO,EAAE,OAAO,CAAC,yBAAyB;AAC3C,KAAA;AACD,IAAA,yCAAyC,EAAE;AACzC,QAAA,OAAO,EAAE,OAAO,CAAC,uCAAuC;AACzD,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,OAAO,EAAE,OAAO,CAAC,sBAAsB;AACxC,KAAA;AACD,IAAA,iHAAiH,EAC/G;AACE,QAAA,OAAO,EAAE,OAAO,CACd,gGAAgG;AAEnG,KAAA;AACH,IAAA,WAAW,EAAE;AACX,QAAA,OAAO,EAAE,OAAO,CAAC,SAAS;AAC3B,KAAA;AACD,IAAA,yBAAyB,EAAE;AACzB,QAAA,OAAO,EAAE,OAAO,CAAC,uBAAuB;AACzC,KAAA;AACD,IAAA,qFAAqF,EAAE;AACrF,QAAA,OAAO,EAAE,OAAO,CACd,kFAAkF;AAErF,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,OAAO,EAAE,OAAO,CAAC,OAAO;AACzB,KAAA;AACD,IAAA,2BAA2B,EAAE;AAC3B,QAAA,OAAO,EAAE,OAAO,CAAC,yBAAyB;AAC3C,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,OAAO,EAAE,OAAO,CAAC,WAAW;AAC7B,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,OAAO,EAAE,OAAO,CAAC,eAAe;AACjC;;;MCjGU,eAAe,CAAA;aACF,IAAA,CAAA,eAAe,GAAG,aAAH,CAAiB;IAGxD,WAAA,CACU,WAAwB,EACxB,QAAyB,EAAA;QADzB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,QAAQ,GAAR,QAAQ;IACf;IAEH,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;AACtC,YAAA,MAAM,OAAO,GAAqB,OAAO,CAAC,OAAO,CAC/C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CACpD;YAED,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CACjC,CAAC,cAAuB,KACtB,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,eAAe,CAAC,eAAe,CAAC,CAC1F;QACH;QAEA,OAAO,IAAI,CAAC,eAAe;IAC7B;+GAtBW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAf,eAAe,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;MCsDY,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAhB,gBAAgB,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,SAAA,EAFhB,CAAC,eAAe,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,CAAC,EAAA,OAAA,EAAA,CA5CrE,2BAA2B,CAAC,MAAM,CAAC;AACjC,gBAAA;AACE,oBAAA,UAAU,EAAE;AACV,wBAAA,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC;AAC9B,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC;AAC3B,wBAAA,QAAQ,EAAE,IAAI;wBACd,WAAW,EAAE,CAAC,eAAe;AAC9B,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;AAClC,wBAAA,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC;AACjC,wBAAA,WAAW,EAAE,OAAO,CAClB,0KAA0K,CAC3K;AACD,wBAAA,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC;AACrC,wBAAA,uBAAuB,EAAE,OAAO,CAAC,oCAAoC,CAAC;AACtE,wBAAA,yBAAyB,EAAE,OAAO,CAAC,uCAAuC,CAAC;AAC3E,wBAAA,WAAW,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC;AACzC,wBAAA,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC;AACjC,wBAAA,SAAS,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC;AACvC,wBAAA,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC;AAC7B,wBAAA,8BAA8B,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAC/D,wBAAA,6BAA6B,EAAE,OAAO,CAAC,oBAAoB,CAAC;AAC5D,wBAAA,4BAA4B,EAAE,OAAO,CACnC,CAAA,kOAAA,CAAoO,CACrO;AACD,wBAAA,kCAAkC,EAAE,OAAO,CAAC,QAAQ,CAAC;AACrD,wBAAA,8BAA8B,EAAE,OAAO,CAAC,sBAAsB;AAC/D,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACR,wBAAA,mBAAmB,EAAE;AACnB,4BAAA,OAAO,EAAE,6BAA6B;AACtC,4BAAA,OAAO,EAAE;AACV,yBAAA;AACD,wBAAA,qBAAqB,EAAE;AACrB,4BAAA,OAAO,EAAE,6BAA6B;AACtC,4BAAA,OAAO,EAAE;AACV;AACF;AACF;aACF,CAAC,CAAA,EAAA,CAAA,CAAA;;4FAIO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAhD5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,2BAA2B,CAAC,MAAM,CAAC;AACjC,4BAAA;AACE,gCAAA,UAAU,EAAE;AACV,oCAAA,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC;AAC9B,oCAAA,IAAI,EAAE,YAAY;AAClB,oCAAA,IAAI,EAAE,YAAY;AAClB,oCAAA,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC;AAC3B,oCAAA,QAAQ,EAAE,IAAI;oCACd,WAAW,EAAE,CAAC,eAAe;AAC9B,iCAAA;AACD,gCAAA,MAAM,EAAE;AACN,oCAAA,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;AAClC,oCAAA,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC;AACjC,oCAAA,WAAW,EAAE,OAAO,CAClB,0KAA0K,CAC3K;AACD,oCAAA,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC;AACrC,oCAAA,uBAAuB,EAAE,OAAO,CAAC,oCAAoC,CAAC;AACtE,oCAAA,yBAAyB,EAAE,OAAO,CAAC,uCAAuC,CAAC;AAC3E,oCAAA,WAAW,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC;AACzC,oCAAA,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC;AACjC,oCAAA,SAAS,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC;AACvC,oCAAA,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC;AAC7B,oCAAA,8BAA8B,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAC/D,oCAAA,6BAA6B,EAAE,OAAO,CAAC,oBAAoB,CAAC;AAC5D,oCAAA,4BAA4B,EAAE,OAAO,CACnC,CAAA,kOAAA,CAAoO,CACrO;AACD,oCAAA,kCAAkC,EAAE,OAAO,CAAC,QAAQ,CAAC;AACrD,oCAAA,8BAA8B,EAAE,OAAO,CAAC,sBAAsB;AAC/D,iCAAA;AACD,gCAAA,QAAQ,EAAE;AACR,oCAAA,mBAAmB,EAAE;AACnB,wCAAA,OAAO,EAAE,6BAA6B;AACtC,wCAAA,OAAO,EAAE;AACV,qCAAA;AACD,oCAAA,qBAAqB,EAAE;AACrB,wCAAA,OAAO,EAAE,6BAA6B;AACtC,wCAAA,OAAO,EAAE;AACV;AACF;AACF;yBACF;AACF,qBAAA;oBACD,SAAS,EAAE,CAAC,eAAe,EAAE,mBAAmB,CAAC,oBAAoB,CAAC;AACvE,iBAAA;;;ACzDD;;AAEG;;;;"}
@@ -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: "19.2.14", 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: "19.2.14", ngImport: i0, type: StaticAssetsService, providedIn: 'root' }); }
248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.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: "19.2.15", ngImport: i0, type: StaticAssetsService, providedIn: 'root' }); }
250
250
  }
251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StaticAssetsService, decorators: [{
251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.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":"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"}
@@ -57,10 +57,10 @@ class StaticAssetsModalComponent {
57
57
  this.modalRef.hide();
58
58
  this.reject();
59
59
  }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StaticAssetsModalComponent, deps: [{ token: i1.BsModalRef }, { token: i2.StaticAssetsService }], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: StaticAssetsModalComponent, isStandalone: true, selector: "c8y-static-assets-modal", inputs: { assetType: "assetType", supportedFileExtensions: "supportedFileExtensions", modalTitle: "modalTitle", layout: "layout" }, ngImport: i0, template: "<c8y-modal\n [title]=\"modalTitle\"\n (onDismiss)=\"cancel()\"\n [headerClasses]=\"'dialog-header'\"\n [labels]=\"{ cancel: 'Cancel' }\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'select-all'\"></span>\n </ng-container>\n <ng-container *ngIf=\"files$ | async as assets; else loading\">\n <div class=\"text-center sticky-top separator-bottom bg-component\" style=\"z-index: 1001;\">\n <p *ngIf=\"assets.length\" class=\"m-0 p-16\">\n {{ 'Select from the list below or`first part, followed by upload a new asset`' | translate }}\n <button\n class=\"btn-link\"\n aria-controls=\"collapseUpload\"\n [attr.aria-expanded]=\"isExpanded\"\n (click)=\"isExpanded = !isExpanded\"\n >\n {{ 'upload a new asset' | translate }}\n </button>\n </p>\n <div\n class=\"collapse\"\n id=\"collapseUpload\"\n [isAnimated]=\"true\"\n [collapse]=\"!isExpanded\"\n >\n <div class=\"p-t-24 p-l-24 p-r-24 bg-level-1 separator-top-bottom p-b-32\">\n <c8y-drop-area\n class=\"drop-area-sm m-b-8\"\n [icon]=\"'upload'\"\n [accept]=\"accept\"\n (dropped)=\"addFiles($event)\"\n ></c8y-drop-area>\n <c8y-messages\n [helpMessage]=\"\n 'After uploading, the asset will be visible in the list below.' | translate\n \"\n ></c8y-messages>\n </div>\n </div>\n </div>\n <div *ngIf=\"assets.length\">\n <c8y-list-group\n class=\"m-b-0\"\n *ngIf=\"layout != 'grid'\"\n >\n <c8y-list-item *ngFor=\"let asset of assets\">\n <c8y-list-item-icon icon=\"file\"></c8y-list-item-icon>\n\n <c8y-list-item-body>\n <div class=\"row\">\n <div class=\"col-md-3 col-xs-12 d-flex a-i-center\">\n <div\n class=\"text-truncate\"\n title=\"{{ asset.fileName }}\"\n >\n {{ asset.fileName }}\n </div>\n <button\n class=\"btn-dot m-l-4\"\n [title]=\"'Preview' | translate\"\n [popover]=\"preview\"\n placement=\"end\"\n triggers=\"focus\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n >\n <i c8yIcon=\"eye\"></i>\n </button>\n <ng-template #preview>\n <div class=\"bg-checkered\">\n <img\n class=\"fit-w\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n </ng-template>\n </div>\n <div class=\"col-md-3 col-xs-12 text-muted\">\n <code class=\"text-10\">{{ asset.type }}</code>\n </div>\n <div class=\"col-md-2 col-xs-12 text-muted\">\n <span class=\"small\">{{ asset.size | bytes }}</span>\n </div>\n <div\n class=\"col-md-2 col-xs-12 text-muted\"\n [title]=\"asset.addedAt | date\"\n >\n <div class=\"icon-flex small\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n ></i>\n <span>{{ asset.addedAt | date }}</span>\n </div>\n </div>\n <div class=\"col-md-2 col-xs-12 d-flex\">\n <button\n class=\"btn btn-default btn-sm m-l-auto showOnHover\"\n (click)=\"select(asset)\"\n translate\n >\n Select\n </button>\n </div>\n </div>\n </c8y-list-item-body>\n </c8y-list-item>\n </c8y-list-group>\n <div\n class=\"card-group-block interact-grid\"\n *ngIf=\"layout === 'grid'\"\n >\n <button\n class=\"col-md-3 col-sm-4 col-xs-12 card btn-clean interact pointer\"\n *ngFor=\"let asset of assets\"\n (click)=\"select(asset)\"\n >\n <div class=\"card-block\">\n <div class=\"bg-checkered\">\n <img\n class=\"img-responsive m-auto img-square\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n <p\n class=\"text-medium text-truncate-wrap m-t-8\"\n title=\"{{ asset.fileName }}\"\n >\n {{ asset.fileName }}\n </p>\n <p class=\"m-b-4\">\n <code class=\"text-10\">{{ asset.type }}</code>\n </p>\n <p class=\"small text-muted d-flex a-i-center\">\n {{ asset.size | bytes }}\n <span class=\"m-l-auto\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n ></i>\n <span>{{ asset.addedAt | date }}</span>\n </span>\n </p>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #loading>\n <div class=\"p-24\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n</c8y-modal>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: i3.BytesPipe, name: "bytes" }, { kind: "component", type: i3.DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "maxFileSizeInMegaBytes", "accept"], outputs: ["dropped"] }, { kind: "component", type: i3.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: i3.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: CollapseModule }, { kind: "directive", type: i5.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }] }); }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StaticAssetsModalComponent, deps: [{ token: i1.BsModalRef }, { token: i2.StaticAssetsService }], target: i0.ɵɵFactoryTarget.Component }); }
61
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: StaticAssetsModalComponent, isStandalone: true, selector: "c8y-static-assets-modal", inputs: { assetType: "assetType", supportedFileExtensions: "supportedFileExtensions", modalTitle: "modalTitle", layout: "layout" }, ngImport: i0, template: "<c8y-modal\n [title]=\"modalTitle\"\n (onDismiss)=\"cancel()\"\n [headerClasses]=\"'dialog-header'\"\n [labels]=\"{ cancel: 'Cancel' }\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'select-all'\"></span>\n </ng-container>\n <ng-container *ngIf=\"files$ | async as assets; else loading\">\n <div class=\"text-center sticky-top separator-bottom bg-component\" style=\"z-index: 1001;\">\n <p *ngIf=\"assets.length\" class=\"m-0 p-16\">\n {{ 'Select from the list below or`first part, followed by upload a new asset`' | translate }}\n <button\n class=\"btn-link\"\n aria-controls=\"collapseUpload\"\n [attr.aria-expanded]=\"isExpanded\"\n (click)=\"isExpanded = !isExpanded\"\n >\n {{ 'upload a new asset' | translate }}\n </button>\n </p>\n <div\n class=\"collapse\"\n id=\"collapseUpload\"\n [isAnimated]=\"true\"\n [collapse]=\"!isExpanded\"\n >\n <div class=\"p-t-24 p-l-24 p-r-24 bg-level-1 separator-top-bottom p-b-32\">\n <c8y-drop-area\n class=\"drop-area-sm m-b-8\"\n [icon]=\"'upload'\"\n [accept]=\"accept\"\n (dropped)=\"addFiles($event)\"\n ></c8y-drop-area>\n <c8y-messages\n [helpMessage]=\"\n 'After uploading, the asset will be visible in the list below.' | translate\n \"\n ></c8y-messages>\n </div>\n </div>\n </div>\n <div *ngIf=\"assets.length\">\n <c8y-list-group\n class=\"m-b-0\"\n *ngIf=\"layout != 'grid'\"\n >\n <c8y-list-item *ngFor=\"let asset of assets\">\n <c8y-list-item-icon icon=\"file\"></c8y-list-item-icon>\n\n <c8y-list-item-body>\n <div class=\"row\">\n <div class=\"col-md-3 col-xs-12 d-flex a-i-center\">\n <div\n class=\"text-truncate\"\n title=\"{{ asset.fileName }}\"\n >\n {{ asset.fileName }}\n </div>\n <button\n class=\"btn-dot m-l-4\"\n [title]=\"'Preview' | translate\"\n [popover]=\"preview\"\n placement=\"end\"\n triggers=\"focus\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n >\n <i c8yIcon=\"eye\"></i>\n </button>\n <ng-template #preview>\n <div class=\"bg-checkered\">\n <img\n class=\"fit-w\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n </ng-template>\n </div>\n <div class=\"col-md-3 col-xs-12 text-muted\">\n <code class=\"text-10\">{{ asset.type }}</code>\n </div>\n <div class=\"col-md-2 col-xs-12 text-muted\">\n <span class=\"small\">{{ asset.size | bytes }}</span>\n </div>\n <div\n class=\"col-md-2 col-xs-12 text-muted\"\n [title]=\"asset.addedAt | date\"\n >\n <div class=\"icon-flex small\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n ></i>\n <span>{{ asset.addedAt | date }}</span>\n </div>\n </div>\n <div class=\"col-md-2 col-xs-12 d-flex\">\n <button\n class=\"btn btn-default btn-sm m-l-auto showOnHover\"\n (click)=\"select(asset)\"\n translate\n >\n Select\n </button>\n </div>\n </div>\n </c8y-list-item-body>\n </c8y-list-item>\n </c8y-list-group>\n <div\n class=\"card-group-block interact-grid\"\n *ngIf=\"layout === 'grid'\"\n >\n <button\n class=\"col-md-3 col-sm-4 col-xs-12 card btn-clean interact pointer\"\n *ngFor=\"let asset of assets\"\n (click)=\"select(asset)\"\n >\n <div class=\"card-block\">\n <div class=\"bg-checkered\">\n <img\n class=\"img-responsive m-auto img-square\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n <p\n class=\"text-medium text-truncate-wrap m-t-8\"\n title=\"{{ asset.fileName }}\"\n >\n {{ asset.fileName }}\n </p>\n <p class=\"m-b-4\">\n <code class=\"text-10\">{{ asset.type }}</code>\n </p>\n <p class=\"small text-muted d-flex a-i-center\">\n {{ asset.size | bytes }}\n <span class=\"m-l-auto\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n ></i>\n <span>{{ asset.addedAt | date }}</span>\n </span>\n </p>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #loading>\n <div class=\"p-24\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n</c8y-modal>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: i3.BytesPipe, name: "bytes" }, { kind: "component", type: i3.DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "maxFileSizeInMegaBytes", "accept"], outputs: ["dropped"] }, { kind: "component", type: i3.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: i3.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: CollapseModule }, { kind: "directive", type: i5.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }] }); }
62
62
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StaticAssetsModalComponent, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StaticAssetsModalComponent, decorators: [{
64
64
  type: Component,
65
65
  args: [{ selector: 'c8y-static-assets-modal', imports: [NgFor, NgIf, AsyncPipe, DatePipe, CoreModule, PopoverModule, CollapseModule], standalone: true, template: "<c8y-modal\n [title]=\"modalTitle\"\n (onDismiss)=\"cancel()\"\n [headerClasses]=\"'dialog-header'\"\n [labels]=\"{ cancel: 'Cancel' }\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'select-all'\"></span>\n </ng-container>\n <ng-container *ngIf=\"files$ | async as assets; else loading\">\n <div class=\"text-center sticky-top separator-bottom bg-component\" style=\"z-index: 1001;\">\n <p *ngIf=\"assets.length\" class=\"m-0 p-16\">\n {{ 'Select from the list below or`first part, followed by upload a new asset`' | translate }}\n <button\n class=\"btn-link\"\n aria-controls=\"collapseUpload\"\n [attr.aria-expanded]=\"isExpanded\"\n (click)=\"isExpanded = !isExpanded\"\n >\n {{ 'upload a new asset' | translate }}\n </button>\n </p>\n <div\n class=\"collapse\"\n id=\"collapseUpload\"\n [isAnimated]=\"true\"\n [collapse]=\"!isExpanded\"\n >\n <div class=\"p-t-24 p-l-24 p-r-24 bg-level-1 separator-top-bottom p-b-32\">\n <c8y-drop-area\n class=\"drop-area-sm m-b-8\"\n [icon]=\"'upload'\"\n [accept]=\"accept\"\n (dropped)=\"addFiles($event)\"\n ></c8y-drop-area>\n <c8y-messages\n [helpMessage]=\"\n 'After uploading, the asset will be visible in the list below.' | translate\n \"\n ></c8y-messages>\n </div>\n </div>\n </div>\n <div *ngIf=\"assets.length\">\n <c8y-list-group\n class=\"m-b-0\"\n *ngIf=\"layout != 'grid'\"\n >\n <c8y-list-item *ngFor=\"let asset of assets\">\n <c8y-list-item-icon icon=\"file\"></c8y-list-item-icon>\n\n <c8y-list-item-body>\n <div class=\"row\">\n <div class=\"col-md-3 col-xs-12 d-flex a-i-center\">\n <div\n class=\"text-truncate\"\n title=\"{{ asset.fileName }}\"\n >\n {{ asset.fileName }}\n </div>\n <button\n class=\"btn-dot m-l-4\"\n [title]=\"'Preview' | translate\"\n [popover]=\"preview\"\n placement=\"end\"\n triggers=\"focus\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n >\n <i c8yIcon=\"eye\"></i>\n </button>\n <ng-template #preview>\n <div class=\"bg-checkered\">\n <img\n class=\"fit-w\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n </ng-template>\n </div>\n <div class=\"col-md-3 col-xs-12 text-muted\">\n <code class=\"text-10\">{{ asset.type }}</code>\n </div>\n <div class=\"col-md-2 col-xs-12 text-muted\">\n <span class=\"small\">{{ asset.size | bytes }}</span>\n </div>\n <div\n class=\"col-md-2 col-xs-12 text-muted\"\n [title]=\"asset.addedAt | date\"\n >\n <div class=\"icon-flex small\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n ></i>\n <span>{{ asset.addedAt | date }}</span>\n </div>\n </div>\n <div class=\"col-md-2 col-xs-12 d-flex\">\n <button\n class=\"btn btn-default btn-sm m-l-auto showOnHover\"\n (click)=\"select(asset)\"\n translate\n >\n Select\n </button>\n </div>\n </div>\n </c8y-list-item-body>\n </c8y-list-item>\n </c8y-list-group>\n <div\n class=\"card-group-block interact-grid\"\n *ngIf=\"layout === 'grid'\"\n >\n <button\n class=\"col-md-3 col-sm-4 col-xs-12 card btn-clean interact pointer\"\n *ngFor=\"let asset of assets\"\n (click)=\"select(asset)\"\n >\n <div class=\"card-block\">\n <div class=\"bg-checkered\">\n <img\n class=\"img-responsive m-auto img-square\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n <p\n class=\"text-medium text-truncate-wrap m-t-8\"\n title=\"{{ asset.fileName }}\"\n >\n {{ asset.fileName }}\n </p>\n <p class=\"m-b-4\">\n <code class=\"text-10\">{{ asset.type }}</code>\n </p>\n <p class=\"small text-muted d-flex a-i-center\">\n {{ asset.size | bytes }}\n <span class=\"m-l-auto\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n ></i>\n <span>{{ asset.addedAt | date }}</span>\n </span>\n </p>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #loading>\n <div class=\"p-24\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n</c8y-modal>\n" }]
66
66
  }], ctorParameters: () => [{ type: i1.BsModalRef }, { type: i2.StaticAssetsService }], propDecorators: { assetType: [{
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-static-assets-modal.mjs","sources":["../../static-assets/modal/static-assets-modal.component.ts","../../static-assets/modal/static-assets-modal.component.html","../../static-assets/modal/c8y-ngx-components-static-assets-modal.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport type { StaticAsset, StaticAssetType } from '@c8y/ngx-components/static-assets/data';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Observable, Subject, from, merge } from 'rxjs';\nimport { StaticAssetsService } from '@c8y/ngx-components/static-assets/data';\nimport { first, shareReplay, map, tap } from 'rxjs/operators';\nimport { AsyncPipe, DatePipe, NgFor, NgIf } from '@angular/common';\nimport { CoreModule, DroppedFile, gettext } from '@c8y/ngx-components';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\n\n@Component({\n selector: 'c8y-static-assets-modal',\n templateUrl: './static-assets-modal.component.html',\n imports: [NgFor, NgIf, AsyncPipe, DatePipe, CoreModule, PopoverModule, CollapseModule],\n standalone: true\n})\nexport class StaticAssetsModalComponent implements OnInit {\n @Input() assetType: StaticAssetType = 'branding';\n @Input() supportedFileExtensions: string[] = [];\n @Input() modalTitle: string = gettext('Select asset');\n @Input() layout: 'list' | 'grid' = 'grid';\n result: Promise<StaticAsset>;\n files$: Observable<StaticAsset[]>;\n accept = '';\n isExpanded = false;\n private _unfilteredFiles$: Observable<StaticAsset[]>;\n private _filesUpdate$ = new Subject<StaticAsset[]>();\n private resolve: (res: StaticAsset) => void;\n private reject: (err?: unknown) => void;\n\n constructor(\n private modalRef: BsModalRef,\n private staticAssets: StaticAssetsService\n ) {\n this.result = new Promise<StaticAsset>((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n ngOnInit() {\n this._unfilteredFiles$ = merge(\n this._filesUpdate$,\n from(this.staticAssets.listFiles(this.assetType))\n ).pipe(shareReplay(1));\n this.files$ = this._unfilteredFiles$.pipe(\n map(files =>\n this.supportedFileExtensions\n ? files.filter(tmp => this.supportedFileExtensions.includes(tmp.extension.toLowerCase()))\n : files\n ),\n map(files =>\n files.sort((a, b) => (a.addedAt < b.addedAt ? 1 : a.addedAt > b.addedAt ? -1 : 0))\n ),\n tap(files => {\n if (!files.length) {\n this.isExpanded = true;\n }\n })\n );\n if (this.supportedFileExtensions) {\n this.accept = this.supportedFileExtensions.join(',');\n }\n }\n\n async addFiles(files: DroppedFile[]) {\n if (!files?.length) {\n return;\n }\n const existingFiles = await this._unfilteredFiles$.pipe(first()).toPromise();\n const newFiles = await this.staticAssets.addFilesToStaticAssets(\n this.assetType,\n files,\n existingFiles\n );\n this._filesUpdate$.next(newFiles);\n }\n\n select(asset: StaticAsset) {\n this.modalRef.hide();\n this.resolve(asset);\n }\n\n cancel() {\n this.modalRef.hide();\n this.reject();\n }\n}\n","<c8y-modal\n [title]=\"modalTitle\"\n (onDismiss)=\"cancel()\"\n [headerClasses]=\"'dialog-header'\"\n [labels]=\"{ cancel: 'Cancel' }\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'select-all'\"></span>\n </ng-container>\n <ng-container *ngIf=\"files$ | async as assets; else loading\">\n <div class=\"text-center sticky-top separator-bottom bg-component\" style=\"z-index: 1001;\">\n <p *ngIf=\"assets.length\" class=\"m-0 p-16\">\n {{ 'Select from the list below or`first part, followed by upload a new asset`' | translate }}\n <button\n class=\"btn-link\"\n aria-controls=\"collapseUpload\"\n [attr.aria-expanded]=\"isExpanded\"\n (click)=\"isExpanded = !isExpanded\"\n >\n {{ 'upload a new asset' | translate }}\n </button>\n </p>\n <div\n class=\"collapse\"\n id=\"collapseUpload\"\n [isAnimated]=\"true\"\n [collapse]=\"!isExpanded\"\n >\n <div class=\"p-t-24 p-l-24 p-r-24 bg-level-1 separator-top-bottom p-b-32\">\n <c8y-drop-area\n class=\"drop-area-sm m-b-8\"\n [icon]=\"'upload'\"\n [accept]=\"accept\"\n (dropped)=\"addFiles($event)\"\n ></c8y-drop-area>\n <c8y-messages\n [helpMessage]=\"\n 'After uploading, the asset will be visible in the list below.' | translate\n \"\n ></c8y-messages>\n </div>\n </div>\n </div>\n <div *ngIf=\"assets.length\">\n <c8y-list-group\n class=\"m-b-0\"\n *ngIf=\"layout != 'grid'\"\n >\n <c8y-list-item *ngFor=\"let asset of assets\">\n <c8y-list-item-icon icon=\"file\"></c8y-list-item-icon>\n\n <c8y-list-item-body>\n <div class=\"row\">\n <div class=\"col-md-3 col-xs-12 d-flex a-i-center\">\n <div\n class=\"text-truncate\"\n title=\"{{ asset.fileName }}\"\n >\n {{ asset.fileName }}\n </div>\n <button\n class=\"btn-dot m-l-4\"\n [title]=\"'Preview' | translate\"\n [popover]=\"preview\"\n placement=\"end\"\n triggers=\"focus\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n >\n <i c8yIcon=\"eye\"></i>\n </button>\n <ng-template #preview>\n <div class=\"bg-checkered\">\n <img\n class=\"fit-w\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n </ng-template>\n </div>\n <div class=\"col-md-3 col-xs-12 text-muted\">\n <code class=\"text-10\">{{ asset.type }}</code>\n </div>\n <div class=\"col-md-2 col-xs-12 text-muted\">\n <span class=\"small\">{{ asset.size | bytes }}</span>\n </div>\n <div\n class=\"col-md-2 col-xs-12 text-muted\"\n [title]=\"asset.addedAt | date\"\n >\n <div class=\"icon-flex small\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n ></i>\n <span>{{ asset.addedAt | date }}</span>\n </div>\n </div>\n <div class=\"col-md-2 col-xs-12 d-flex\">\n <button\n class=\"btn btn-default btn-sm m-l-auto showOnHover\"\n (click)=\"select(asset)\"\n translate\n >\n Select\n </button>\n </div>\n </div>\n </c8y-list-item-body>\n </c8y-list-item>\n </c8y-list-group>\n <div\n class=\"card-group-block interact-grid\"\n *ngIf=\"layout === 'grid'\"\n >\n <button\n class=\"col-md-3 col-sm-4 col-xs-12 card btn-clean interact pointer\"\n *ngFor=\"let asset of assets\"\n (click)=\"select(asset)\"\n >\n <div class=\"card-block\">\n <div class=\"bg-checkered\">\n <img\n class=\"img-responsive m-auto img-square\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n <p\n class=\"text-medium text-truncate-wrap m-t-8\"\n title=\"{{ asset.fileName }}\"\n >\n {{ asset.fileName }}\n </p>\n <p class=\"m-b-4\">\n <code class=\"text-10\">{{ asset.type }}</code>\n </p>\n <p class=\"small text-muted d-flex a-i-center\">\n {{ asset.size | bytes }}\n <span class=\"m-l-auto\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n ></i>\n <span>{{ asset.addedAt | date }}</span>\n </span>\n </p>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #loading>\n <div class=\"p-24\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n</c8y-modal>\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-modal.mjs","sources":["../../static-assets/modal/static-assets-modal.component.ts","../../static-assets/modal/static-assets-modal.component.html","../../static-assets/modal/c8y-ngx-components-static-assets-modal.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport type { StaticAsset, StaticAssetType } from '@c8y/ngx-components/static-assets/data';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Observable, Subject, from, merge } from 'rxjs';\nimport { StaticAssetsService } from '@c8y/ngx-components/static-assets/data';\nimport { first, shareReplay, map, tap } from 'rxjs/operators';\nimport { AsyncPipe, DatePipe, NgFor, NgIf } from '@angular/common';\nimport { CoreModule, DroppedFile, gettext } from '@c8y/ngx-components';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\n\n@Component({\n selector: 'c8y-static-assets-modal',\n templateUrl: './static-assets-modal.component.html',\n imports: [NgFor, NgIf, AsyncPipe, DatePipe, CoreModule, PopoverModule, CollapseModule],\n standalone: true\n})\nexport class StaticAssetsModalComponent implements OnInit {\n @Input() assetType: StaticAssetType = 'branding';\n @Input() supportedFileExtensions: string[] = [];\n @Input() modalTitle: string = gettext('Select asset');\n @Input() layout: 'list' | 'grid' = 'grid';\n result: Promise<StaticAsset>;\n files$: Observable<StaticAsset[]>;\n accept = '';\n isExpanded = false;\n private _unfilteredFiles$: Observable<StaticAsset[]>;\n private _filesUpdate$ = new Subject<StaticAsset[]>();\n private resolve: (res: StaticAsset) => void;\n private reject: (err?: unknown) => void;\n\n constructor(\n private modalRef: BsModalRef,\n private staticAssets: StaticAssetsService\n ) {\n this.result = new Promise<StaticAsset>((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n ngOnInit() {\n this._unfilteredFiles$ = merge(\n this._filesUpdate$,\n from(this.staticAssets.listFiles(this.assetType))\n ).pipe(shareReplay(1));\n this.files$ = this._unfilteredFiles$.pipe(\n map(files =>\n this.supportedFileExtensions\n ? files.filter(tmp => this.supportedFileExtensions.includes(tmp.extension.toLowerCase()))\n : files\n ),\n map(files =>\n files.sort((a, b) => (a.addedAt < b.addedAt ? 1 : a.addedAt > b.addedAt ? -1 : 0))\n ),\n tap(files => {\n if (!files.length) {\n this.isExpanded = true;\n }\n })\n );\n if (this.supportedFileExtensions) {\n this.accept = this.supportedFileExtensions.join(',');\n }\n }\n\n async addFiles(files: DroppedFile[]) {\n if (!files?.length) {\n return;\n }\n const existingFiles = await this._unfilteredFiles$.pipe(first()).toPromise();\n const newFiles = await this.staticAssets.addFilesToStaticAssets(\n this.assetType,\n files,\n existingFiles\n );\n this._filesUpdate$.next(newFiles);\n }\n\n select(asset: StaticAsset) {\n this.modalRef.hide();\n this.resolve(asset);\n }\n\n cancel() {\n this.modalRef.hide();\n this.reject();\n }\n}\n","<c8y-modal\n [title]=\"modalTitle\"\n (onDismiss)=\"cancel()\"\n [headerClasses]=\"'dialog-header'\"\n [labels]=\"{ cancel: 'Cancel' }\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'select-all'\"></span>\n </ng-container>\n <ng-container *ngIf=\"files$ | async as assets; else loading\">\n <div class=\"text-center sticky-top separator-bottom bg-component\" style=\"z-index: 1001;\">\n <p *ngIf=\"assets.length\" class=\"m-0 p-16\">\n {{ 'Select from the list below or`first part, followed by upload a new asset`' | translate }}\n <button\n class=\"btn-link\"\n aria-controls=\"collapseUpload\"\n [attr.aria-expanded]=\"isExpanded\"\n (click)=\"isExpanded = !isExpanded\"\n >\n {{ 'upload a new asset' | translate }}\n </button>\n </p>\n <div\n class=\"collapse\"\n id=\"collapseUpload\"\n [isAnimated]=\"true\"\n [collapse]=\"!isExpanded\"\n >\n <div class=\"p-t-24 p-l-24 p-r-24 bg-level-1 separator-top-bottom p-b-32\">\n <c8y-drop-area\n class=\"drop-area-sm m-b-8\"\n [icon]=\"'upload'\"\n [accept]=\"accept\"\n (dropped)=\"addFiles($event)\"\n ></c8y-drop-area>\n <c8y-messages\n [helpMessage]=\"\n 'After uploading, the asset will be visible in the list below.' | translate\n \"\n ></c8y-messages>\n </div>\n </div>\n </div>\n <div *ngIf=\"assets.length\">\n <c8y-list-group\n class=\"m-b-0\"\n *ngIf=\"layout != 'grid'\"\n >\n <c8y-list-item *ngFor=\"let asset of assets\">\n <c8y-list-item-icon icon=\"file\"></c8y-list-item-icon>\n\n <c8y-list-item-body>\n <div class=\"row\">\n <div class=\"col-md-3 col-xs-12 d-flex a-i-center\">\n <div\n class=\"text-truncate\"\n title=\"{{ asset.fileName }}\"\n >\n {{ asset.fileName }}\n </div>\n <button\n class=\"btn-dot m-l-4\"\n [title]=\"'Preview' | translate\"\n [popover]=\"preview\"\n placement=\"end\"\n triggers=\"focus\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n >\n <i c8yIcon=\"eye\"></i>\n </button>\n <ng-template #preview>\n <div class=\"bg-checkered\">\n <img\n class=\"fit-w\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n </ng-template>\n </div>\n <div class=\"col-md-3 col-xs-12 text-muted\">\n <code class=\"text-10\">{{ asset.type }}</code>\n </div>\n <div class=\"col-md-2 col-xs-12 text-muted\">\n <span class=\"small\">{{ asset.size | bytes }}</span>\n </div>\n <div\n class=\"col-md-2 col-xs-12 text-muted\"\n [title]=\"asset.addedAt | date\"\n >\n <div class=\"icon-flex small\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n ></i>\n <span>{{ asset.addedAt | date }}</span>\n </div>\n </div>\n <div class=\"col-md-2 col-xs-12 d-flex\">\n <button\n class=\"btn btn-default btn-sm m-l-auto showOnHover\"\n (click)=\"select(asset)\"\n translate\n >\n Select\n </button>\n </div>\n </div>\n </c8y-list-item-body>\n </c8y-list-item>\n </c8y-list-group>\n <div\n class=\"card-group-block interact-grid\"\n *ngIf=\"layout === 'grid'\"\n >\n <button\n class=\"col-md-3 col-sm-4 col-xs-12 card btn-clean interact pointer\"\n *ngFor=\"let asset of assets\"\n (click)=\"select(asset)\"\n >\n <div class=\"card-block\">\n <div class=\"bg-checkered\">\n <img\n class=\"img-responsive m-auto img-square\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n <p\n class=\"text-medium text-truncate-wrap m-t-8\"\n title=\"{{ asset.fileName }}\"\n >\n {{ asset.fileName }}\n </p>\n <p class=\"m-b-4\">\n <code class=\"text-10\">{{ asset.type }}</code>\n </p>\n <p class=\"small text-muted d-flex a-i-center\">\n {{ asset.size | bytes }}\n <span class=\"m-l-auto\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n ></i>\n <span>{{ asset.addedAt | date }}</span>\n </span>\n </p>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #loading>\n <div class=\"p-24\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n</c8y-modal>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -26,10 +26,10 @@ class StaticAssetsModalService {
26
26
  });
27
27
  return modalRef.content.result;
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StaticAssetsModalService, deps: [{ token: i1.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
30
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StaticAssetsModalService, providedIn: 'root' }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StaticAssetsModalService, deps: [{ token: i1.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
30
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StaticAssetsModalService, providedIn: 'root' }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StaticAssetsModalService, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StaticAssetsModalService, decorators: [{
33
33
  type: Injectable,
34
34
  args: [{ providedIn: 'root' }]
35
35
  }], ctorParameters: () => [{ type: i1.BsModalService }] });
@@ -113,8 +113,8 @@ class StaticAssetsFilePickerComponent {
113
113
  const response = await fetch(url);
114
114
  return response.status === 200;
115
115
  }
116
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StaticAssetsFilePickerComponent, deps: [{ token: StaticAssetsModalService }, { token: i2.StaticAssetsService }], target: i0.ɵɵFactoryTarget.Component }); }
117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: StaticAssetsFilePickerComponent, isStandalone: true, selector: "c8y-static-assets-file-picker", inputs: { isCSSURL: "isCSSURL", staticAssetType: "staticAssetType", supportedFileExtensions: "supportedFileExtensions", layout: "layout", size: "size" }, providers: [
116
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StaticAssetsFilePickerComponent, deps: [{ token: StaticAssetsModalService }, { token: i2.StaticAssetsService }], target: i0.ɵɵFactoryTarget.Component }); }
117
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: StaticAssetsFilePickerComponent, isStandalone: true, selector: "c8y-static-assets-file-picker", inputs: { isCSSURL: "isCSSURL", staticAssetType: "staticAssetType", supportedFileExtensions: "supportedFileExtensions", layout: "layout", size: "size" }, providers: [
118
118
  {
119
119
  provide: NG_VALUE_ACCESSOR,
120
120
  useExisting: forwardRef(() => StaticAssetsFilePickerComponent),
@@ -122,7 +122,7 @@ class StaticAssetsFilePickerComponent {
122
122
  }
123
123
  ], ngImport: i0, template: "\n<div class=\"d-flex a-i-center gap-8\">\n <div *ngIf=\"!currentValue else fileSelected\" class=\"d-contents\">\n <i c8yIcon=\"no-image\" class=\"icon-48 text-muted\"></i>\n <p class=\"m-r-auto text-muted\"><em translate>No file selected.</em></p>\n </div>\n\n <ng-template #fileSelected>\n <c8y-loading *ngIf=\"loading\"></c8y-loading>\n <div *ngIf=\"!loading && !currentFile\">\n <p translate>Unable to locate file: \"{{ currentValue }}\"</p>\n </div>\n\n <div *ngIf=\"!loading && currentFile\" style=\"min-height: 48px\" class=\"d-flex a-i-center\">\n <img *ngIf=\"currentFile\" [src]=\"currentFile.path\" class=\"img-responsive\" [ngStyle]=\"{'width.px': size}\" alt=\"{{currentFile?.fileName }}\">\n </div>\n <span class=\"text-truncate\" title=\"{{ currentFile?.fileName || currentValue }}\">{{ currentFile?.fileName || currentValue }}</span>\n <button class=\" m-l-auto btn btn-dot btn-dot--danger\"\n type=\"button\" (click)=\"clear()\"\n [delay]=\"500\"\n [attr.aria-label]=\"'Remove' | translate\"\n placement=\"top\"\n tooltip=\"{{'Remove' | translate}}\">\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </ng-template>\n\n <button (click)=\"openFilePicker()\" class=\"btn btn-default btn-sm\">\n <span *ngIf=\"!currentFile\">\n {{'Select' | translate}}\n </span>\n <span *ngIf=\"currentFile\">\n {{'Replace' | translate}}\n </span>\n </button>\n</div>\n\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }] }); }
124
124
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StaticAssetsFilePickerComponent, decorators: [{
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StaticAssetsFilePickerComponent, decorators: [{
126
126
  type: Component,
127
127
  args: [{ selector: 'c8y-static-assets-file-picker', standalone: true, imports: [CoreModule, TooltipModule], providers: [
128
128
  {
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-static-assets.mjs","sources":["../../static-assets/static-assets-modal.service.ts","../../static-assets/static-assets-file-picker/static-assets-file-picker.component.ts","../../static-assets/static-assets-file-picker/static-assets-file-picker.component.html","../../static-assets/c8y-ngx-components-static-assets.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport type { StaticAsset } from '@c8y/ngx-components/static-assets/data';\nimport type { StaticAssetsModalComponent } from '@c8y/ngx-components/static-assets/modal';\nimport { BsModalService } from 'ngx-bootstrap/modal';\n\n@Injectable({ providedIn: 'root' })\nexport class StaticAssetsModalService {\n constructor(private modal: BsModalService) {}\n\n async pickStaticAsset(\n options?: Partial<\n Pick<StaticAssetsModalComponent, 'supportedFileExtensions' | 'assetType' | 'layout'>\n >\n ): Promise<StaticAsset> {\n const component = await import('@c8y/ngx-components/static-assets/modal').then(\n m => m.StaticAssetsModalComponent\n );\n const initialState: Partial<StaticAssetsModalComponent> = options || {};\n const modalRef = this.modal.show(component, {\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n ignoreBackdropClick: true,\n initialState,\n keyboard: false\n });\n return modalRef.content.result;\n }\n}\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StaticAssetsModalService } from '../static-assets-modal.service';\nimport { StaticAsset, StaticAssetsService } from '@c8y/ngx-components/static-assets/data';\nimport { CoreModule } from '@c8y/ngx-components';\nimport type { StaticAssetsModalComponent } from '@c8y/ngx-components/static-assets/modal';\n\n@Component({\n selector: 'c8y-static-assets-file-picker',\n templateUrl: './static-assets-file-picker.component.html',\n standalone: true,\n imports: [CoreModule, TooltipModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => StaticAssetsFilePickerComponent),\n multi: true\n }\n ]\n})\nexport class StaticAssetsFilePickerComponent implements ControlValueAccessor {\n @Input() isCSSURL = false;\n @Input() staticAssetType: StaticAssetsModalComponent['assetType'] = 'branding';\n @Input() supportedFileExtensions: StaticAssetsModalComponent['supportedFileExtensions'] = [];\n @Input() layout: StaticAssetsModalComponent['layout'] = 'grid';\n @Input() size = 48;\n loading = false;\n currentFile: StaticAsset | undefined = undefined;\n currentValue: string;\n\n private onChange: (value: string) => void;\n private onTouched: () => void;\n\n constructor(\n private staticAssetsModal: StaticAssetsModalService,\n private staticAssets: StaticAssetsService\n ) {}\n\n writeValue(value: string): void {\n if (/^url\\('.*'\\)$/.test(value)) {\n value = value.replace(/^url\\('/, '').replace(/'\\)$/, '');\n }\n if (/^url\\(.*\\)$/.test(value)) {\n value = value.replace(/^url\\(/, '').replace(/\\)$/, '');\n }\n this.currentValue = value;\n this.loadFileDetails(value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n async loadFileDetails(currentUrl: string) {\n if (!currentUrl) {\n this.currentFile = undefined;\n return;\n }\n this.loading = true;\n try {\n const fileList = await this.staticAssets.listFilesCached(this.staticAssetType);\n const foundFile = fileList.find(file => currentUrl.includes(file.path));\n this.currentFile = foundFile;\n if (!foundFile) {\n const filePresent = await this.ensureFileExists(currentUrl);\n if (filePresent) {\n this.currentFile = {\n path: currentUrl,\n fileName: currentUrl.split('/').pop(),\n originalFileName: currentUrl.split('/').pop()\n } as any;\n }\n }\n } catch (e) {}\n\n this.loading = false;\n }\n\n clear() {\n this.onChange('');\n this.currentFile = undefined;\n this.currentValue = '';\n this.onTouched();\n }\n\n async openFilePicker() {\n try {\n const res = await this.staticAssetsModal.pickStaticAsset({\n layout: this.layout,\n assetType: this.staticAssetType,\n supportedFileExtensions: this.supportedFileExtensions\n });\n const value = this.isCSSURL ? `url(${res.path})` : res.path;\n this.onChange(value);\n this.currentFile = res;\n this.currentValue = value;\n this.onTouched();\n } catch (e) {\n // modal closed\n }\n }\n\n private async ensureFileExists(url: string): Promise<boolean> {\n const response = await fetch(url);\n return response.status === 200;\n }\n}\n","\n<div class=\"d-flex a-i-center gap-8\">\n <div *ngIf=\"!currentValue else fileSelected\" class=\"d-contents\">\n <i c8yIcon=\"no-image\" class=\"icon-48 text-muted\"></i>\n <p class=\"m-r-auto text-muted\"><em translate>No file selected.</em></p>\n </div>\n\n <ng-template #fileSelected>\n <c8y-loading *ngIf=\"loading\"></c8y-loading>\n <div *ngIf=\"!loading && !currentFile\">\n <p translate>Unable to locate file: \"{{ currentValue }}\"</p>\n </div>\n\n <div *ngIf=\"!loading && currentFile\" style=\"min-height: 48px\" class=\"d-flex a-i-center\">\n <img *ngIf=\"currentFile\" [src]=\"currentFile.path\" class=\"img-responsive\" [ngStyle]=\"{'width.px': size}\" alt=\"{{currentFile?.fileName }}\">\n </div>\n <span class=\"text-truncate\" title=\"{{ currentFile?.fileName || currentValue }}\">{{ currentFile?.fileName || currentValue }}</span>\n <button class=\" m-l-auto btn btn-dot btn-dot--danger\"\n type=\"button\" (click)=\"clear()\"\n [delay]=\"500\"\n [attr.aria-label]=\"'Remove' | translate\"\n placement=\"top\"\n tooltip=\"{{'Remove' | translate}}\">\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </ng-template>\n\n <button (click)=\"openFilePicker()\" class=\"btn btn-default btn-sm\">\n <span *ngIf=\"!currentFile\">\n {{'Select' | translate}}\n </span>\n <span *ngIf=\"currentFile\">\n {{'Replace' | translate}}\n </span>\n </button>\n</div>\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.StaticAssetsModalService"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-static-assets.mjs","sources":["../../static-assets/static-assets-modal.service.ts","../../static-assets/static-assets-file-picker/static-assets-file-picker.component.ts","../../static-assets/static-assets-file-picker/static-assets-file-picker.component.html","../../static-assets/c8y-ngx-components-static-assets.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport type { StaticAsset } from '@c8y/ngx-components/static-assets/data';\nimport type { StaticAssetsModalComponent } from '@c8y/ngx-components/static-assets/modal';\nimport { BsModalService } from 'ngx-bootstrap/modal';\n\n@Injectable({ providedIn: 'root' })\nexport class StaticAssetsModalService {\n constructor(private modal: BsModalService) {}\n\n async pickStaticAsset(\n options?: Partial<\n Pick<StaticAssetsModalComponent, 'supportedFileExtensions' | 'assetType' | 'layout'>\n >\n ): Promise<StaticAsset> {\n const component = await import('@c8y/ngx-components/static-assets/modal').then(\n m => m.StaticAssetsModalComponent\n );\n const initialState: Partial<StaticAssetsModalComponent> = options || {};\n const modalRef = this.modal.show(component, {\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n ignoreBackdropClick: true,\n initialState,\n keyboard: false\n });\n return modalRef.content.result;\n }\n}\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StaticAssetsModalService } from '../static-assets-modal.service';\nimport { StaticAsset, StaticAssetsService } from '@c8y/ngx-components/static-assets/data';\nimport { CoreModule } from '@c8y/ngx-components';\nimport type { StaticAssetsModalComponent } from '@c8y/ngx-components/static-assets/modal';\n\n@Component({\n selector: 'c8y-static-assets-file-picker',\n templateUrl: './static-assets-file-picker.component.html',\n standalone: true,\n imports: [CoreModule, TooltipModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => StaticAssetsFilePickerComponent),\n multi: true\n }\n ]\n})\nexport class StaticAssetsFilePickerComponent implements ControlValueAccessor {\n @Input() isCSSURL = false;\n @Input() staticAssetType: StaticAssetsModalComponent['assetType'] = 'branding';\n @Input() supportedFileExtensions: StaticAssetsModalComponent['supportedFileExtensions'] = [];\n @Input() layout: StaticAssetsModalComponent['layout'] = 'grid';\n @Input() size = 48;\n loading = false;\n currentFile: StaticAsset | undefined = undefined;\n currentValue: string;\n\n private onChange: (value: string) => void;\n private onTouched: () => void;\n\n constructor(\n private staticAssetsModal: StaticAssetsModalService,\n private staticAssets: StaticAssetsService\n ) {}\n\n writeValue(value: string): void {\n if (/^url\\('.*'\\)$/.test(value)) {\n value = value.replace(/^url\\('/, '').replace(/'\\)$/, '');\n }\n if (/^url\\(.*\\)$/.test(value)) {\n value = value.replace(/^url\\(/, '').replace(/\\)$/, '');\n }\n this.currentValue = value;\n this.loadFileDetails(value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n async loadFileDetails(currentUrl: string) {\n if (!currentUrl) {\n this.currentFile = undefined;\n return;\n }\n this.loading = true;\n try {\n const fileList = await this.staticAssets.listFilesCached(this.staticAssetType);\n const foundFile = fileList.find(file => currentUrl.includes(file.path));\n this.currentFile = foundFile;\n if (!foundFile) {\n const filePresent = await this.ensureFileExists(currentUrl);\n if (filePresent) {\n this.currentFile = {\n path: currentUrl,\n fileName: currentUrl.split('/').pop(),\n originalFileName: currentUrl.split('/').pop()\n } as any;\n }\n }\n } catch (e) {}\n\n this.loading = false;\n }\n\n clear() {\n this.onChange('');\n this.currentFile = undefined;\n this.currentValue = '';\n this.onTouched();\n }\n\n async openFilePicker() {\n try {\n const res = await this.staticAssetsModal.pickStaticAsset({\n layout: this.layout,\n assetType: this.staticAssetType,\n supportedFileExtensions: this.supportedFileExtensions\n });\n const value = this.isCSSURL ? `url(${res.path})` : res.path;\n this.onChange(value);\n this.currentFile = res;\n this.currentValue = value;\n this.onTouched();\n } catch (e) {\n // modal closed\n }\n }\n\n private async ensureFileExists(url: string): Promise<boolean> {\n const response = await fetch(url);\n return response.status === 200;\n }\n}\n","\n<div class=\"d-flex a-i-center gap-8\">\n <div *ngIf=\"!currentValue else fileSelected\" class=\"d-contents\">\n <i c8yIcon=\"no-image\" class=\"icon-48 text-muted\"></i>\n <p class=\"m-r-auto text-muted\"><em translate>No file selected.</em></p>\n </div>\n\n <ng-template #fileSelected>\n <c8y-loading *ngIf=\"loading\"></c8y-loading>\n <div *ngIf=\"!loading && !currentFile\">\n <p translate>Unable to locate file: \"{{ currentValue }}\"</p>\n </div>\n\n <div *ngIf=\"!loading && currentFile\" style=\"min-height: 48px\" class=\"d-flex a-i-center\">\n <img *ngIf=\"currentFile\" [src]=\"currentFile.path\" class=\"img-responsive\" [ngStyle]=\"{'width.px': size}\" alt=\"{{currentFile?.fileName }}\">\n </div>\n <span class=\"text-truncate\" title=\"{{ currentFile?.fileName || currentValue }}\">{{ currentFile?.fileName || currentValue }}</span>\n <button class=\" m-l-auto btn btn-dot btn-dot--danger\"\n type=\"button\" (click)=\"clear()\"\n [delay]=\"500\"\n [attr.aria-label]=\"'Remove' | translate\"\n placement=\"top\"\n tooltip=\"{{'Remove' | translate}}\">\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </ng-template>\n\n <button (click)=\"openFilePicker()\" class=\"btn btn-default btn-sm\">\n <span *ngIf=\"!currentFile\">\n {{'Select' | translate}}\n </span>\n <span *ngIf=\"currentFile\">\n {{'Replace' | translate}}\n </span>\n </button>\n</div>\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.StaticAssetsModalService"],"mappings":"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"}