@c8y/ngx-components 1023.5.3 → 1023.7.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 (379) hide show
  1. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
  2. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  3. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
  4. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs.map +1 -1
  5. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +9 -9
  6. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs.map +1 -1
  7. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +13 -13
  8. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs.map +1 -1
  9. package/fesm2022/c8y-ngx-components-ai.mjs +3 -3
  10. package/fesm2022/c8y-ngx-components-ai.mjs.map +1 -1
  11. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
  12. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  13. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
  14. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  15. package/fesm2022/c8y-ngx-components-alarms.mjs +76 -76
  16. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  17. package/fesm2022/c8y-ngx-components-api.mjs +7 -7
  18. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  19. package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
  20. package/fesm2022/c8y-ngx-components-app-logs.mjs.map +1 -1
  21. package/fesm2022/c8y-ngx-components-asset-properties.mjs +41 -41
  22. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  23. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-B0Yspstg.mjs → c8y-ngx-components-asset-property-grid.component-B1q7kXRu.mjs} +13 -13
  24. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-B0Yspstg.mjs.map → c8y-ngx-components-asset-property-grid.component-B1q7kXRu.mjs.map} +1 -1
  25. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
  26. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  27. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +114 -114
  28. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  29. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
  30. package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
  31. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
  32. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  33. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
  34. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs.map +1 -1
  35. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
  36. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
  37. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
  38. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
  39. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
  40. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs.map +1 -1
  41. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
  42. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
  43. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
  44. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  45. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
  46. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
  47. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +36 -36
  48. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-branding-shared.mjs +13 -13
  50. package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
  52. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  53. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
  54. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  55. package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Bl18pHcM.mjs +68 -0
  56. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BeFT75x1.mjs.map → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Bl18pHcM.mjs.map} +1 -1
  57. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-B8_RmTvv.mjs → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C5QMFdX1.mjs} +4 -4
  58. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-B8_RmTvv.mjs.map → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C5QMFdX1.mjs.map} +1 -1
  59. package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-C-Lc5Ble.mjs +44 -0
  60. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-BUxC3Tmh.mjs.map → c8y-ngx-components-computed-asset-properties-event-count-config.component-C-Lc5Ble.mjs.map} +1 -1
  61. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-Dcmrw2Wg.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BXfM7hTQ.mjs} +4 -4
  62. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-Dcmrw2Wg.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BXfM7hTQ.mjs.map} +1 -1
  63. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +6 -6
  64. package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
  65. package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
  66. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
  67. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs.map +1 -1
  68. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
  69. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs.map +1 -1
  70. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
  71. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
  72. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C30if8-Q.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BuGMpNrA.mjs} +4 -4
  73. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C30if8-Q.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BuGMpNrA.mjs.map} +1 -1
  74. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-FBfdlVT1.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DN-f35bA.mjs} +10 -10
  75. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-FBfdlVT1.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DN-f35bA.mjs.map} +1 -1
  76. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DrVQS63v.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-BlIVEV__.mjs} +4 -4
  77. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DrVQS63v.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-BlIVEV__.mjs.map} +1 -1
  78. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
  79. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs.map +1 -1
  80. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
  81. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs.map +1 -1
  82. package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs +3 -3
  83. package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs.map +1 -1
  84. package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs +3 -3
  85. package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs.map +1 -1
  86. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +103 -103
  87. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  88. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-BHmaZVgy.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-m7YeEj9R.mjs} +16 -16
  89. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-BHmaZVgy.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-m7YeEj9R.mjs.map} +1 -1
  90. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
  91. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
  92. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +6 -6
  93. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs.map +1 -1
  94. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
  95. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  96. package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
  97. package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
  99. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
  101. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +24 -24
  103. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +7 -7
  105. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
  107. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
  109. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
  111. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs.map +1 -1
  112. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
  113. package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
  114. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +40 -40
  115. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  116. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +33 -33
  117. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  118. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
  119. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  120. package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
  121. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  122. package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
  123. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  124. package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
  125. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  126. package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
  127. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  128. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
  129. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
  130. package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
  131. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  132. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
  133. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  134. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
  135. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  136. package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
  137. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  138. package/fesm2022/c8y-ngx-components-echart.mjs +30 -30
  139. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  140. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
  141. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  142. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
  143. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -1
  144. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
  145. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  146. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
  147. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
  148. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
  149. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  150. package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
  151. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  152. package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
  153. package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
  154. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +4 -4
  155. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
  156. package/fesm2022/c8y-ngx-components-events.mjs +3 -3
  157. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  158. package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
  159. package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
  160. package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
  161. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  162. package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
  163. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  164. package/fesm2022/c8y-ngx-components-global-context.mjs +130 -130
  165. package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
  166. package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
  167. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  168. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  169. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  170. package/fesm2022/c8y-ngx-components-location.mjs +28 -28
  171. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  172. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
  173. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  174. package/fesm2022/c8y-ngx-components-map.mjs +19 -19
  175. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  176. package/fesm2022/c8y-ngx-components-messaging-management.mjs +56 -56
  177. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
  178. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
  179. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
  180. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
  181. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  182. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
  183. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  184. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
  185. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  186. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
  187. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  188. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
  189. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs.map +1 -1
  190. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
  191. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
  192. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +3 -3
  193. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  194. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
  195. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  196. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
  197. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  198. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
  199. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
  200. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
  201. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
  202. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
  203. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
  204. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
  205. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  206. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +13 -13
  207. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  208. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
  209. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  210. package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
  211. package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
  212. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
  213. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
  214. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
  215. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  216. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
  217. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  218. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
  219. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  220. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
  221. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  222. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
  223. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
  224. package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
  225. package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
  226. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
  227. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
  228. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
  229. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  230. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
  231. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  232. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
  233. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  234. package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
  235. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  236. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +10 -10
  237. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
  238. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
  239. package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -1
  240. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
  241. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
  242. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
  243. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  244. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
  245. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -1
  246. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
  247. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
  248. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
  249. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
  250. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
  251. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -1
  252. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
  253. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -1
  254. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
  255. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  256. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
  257. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
  258. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
  259. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  260. package/fesm2022/c8y-ngx-components-replace-device.mjs +10 -10
  261. package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
  262. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
  263. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  264. package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
  265. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  266. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
  267. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  268. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
  269. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  270. package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
  271. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  272. package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
  273. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  274. package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
  275. package/fesm2022/c8y-ngx-components-repository.mjs.map +1 -1
  276. package/fesm2022/c8y-ngx-components-search.mjs +19 -19
  277. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  278. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +6 -6
  279. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
  280. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +7 -7
  281. package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
  282. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
  283. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
  284. package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
  285. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
  286. package/fesm2022/c8y-ngx-components-services.mjs +29 -29
  287. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  288. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
  289. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  290. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
  291. package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  292. package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
  293. package/fesm2022/c8y-ngx-components-static-assets-data.mjs.map +1 -1
  294. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +10 -10
  295. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs.map +1 -1
  296. package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
  297. package/fesm2022/c8y-ngx-components-static-assets.mjs.map +1 -1
  298. package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
  299. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  300. package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
  301. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  302. package/fesm2022/c8y-ngx-components-time-context.mjs +7 -7
  303. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
  304. package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
  305. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
  306. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
  307. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  308. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
  309. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  310. package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
  311. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -1
  312. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
  313. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  314. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
  315. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  316. package/fesm2022/c8y-ngx-components-upgrade.mjs +62 -43
  317. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  318. package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
  319. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  320. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
  321. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  322. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +3 -3
  323. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs.map +1 -1
  324. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +6 -6
  325. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  326. package/fesm2022/c8y-ngx-components-widgets-exports.mjs +8 -1
  327. package/fesm2022/c8y-ngx-components-widgets-exports.mjs.map +1 -1
  328. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +19 -19
  329. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  330. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +4 -4
  331. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  332. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
  333. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs.map +1 -1
  334. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
  335. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  336. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +6 -6
  337. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  338. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +27 -27
  339. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  340. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
  341. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  342. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +7 -7
  343. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  344. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
  345. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
  346. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +25 -25
  347. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  348. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
  349. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  350. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
  351. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  352. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
  353. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  354. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
  355. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  356. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
  357. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  358. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
  359. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
  360. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +22 -22
  361. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  362. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
  363. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs.map +1 -1
  364. package/fesm2022/c8y-ngx-components-widgets-widget-providers.mjs +5 -2
  365. package/fesm2022/c8y-ngx-components-widgets-widget-providers.mjs.map +1 -1
  366. package/fesm2022/c8y-ngx-components.mjs +1325 -1325
  367. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  368. package/package.json +1 -1
  369. package/upgrade/index.d.ts +1 -0
  370. package/upgrade/index.d.ts.map +1 -1
  371. package/widgets/cockpit-exports/index.d.ts +6 -0
  372. package/widgets/cockpit-exports/index.d.ts.map +1 -1
  373. package/widgets/device-management-exports/index.d.ts +6 -0
  374. package/widgets/device-management-exports/index.d.ts.map +1 -1
  375. package/widgets/exports/index.d.ts +8 -1
  376. package/widgets/exports/index.d.ts.map +1 -1
  377. package/widgets/widget-providers/index.d.ts.map +1 -1
  378. package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BeFT75x1.mjs +0 -68
  379. package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-BUxC3Tmh.mjs +0 -44
@@ -27,10 +27,10 @@ class StaticAssetMainTypePipe {
27
27
  }
28
28
  return 'unknown';
29
29
  }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetMainTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
31
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetMainTypePipe, isStandalone: true, name: "staticAssetMainType" }); }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: StaticAssetMainTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
31
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: StaticAssetMainTypePipe, isStandalone: true, name: "staticAssetMainType" }); }
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetMainTypePipe, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: StaticAssetMainTypePipe, decorators: [{
34
34
  type: Pipe,
35
35
  args: [{
36
36
  name: 'staticAssetMainType',
@@ -107,10 +107,10 @@ class StaticAssetsFileListComponent {
107
107
  removeStyleTag() {
108
108
  document.getElementById(this.styleTagId)?.remove();
109
109
  }
110
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetsFileListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
111
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.3", type: StaticAssetsFileListComponent, isStandalone: true, selector: "c8y-static-assets-file-list", inputs: { inModalView: { classPropertyName: "inModalView", publicName: "inModalView", isSignal: true, isRequired: false, transformFunction: null }, assetType: { classPropertyName: "assetType", publicName: "assetType", isSignal: true, isRequired: false, transformFunction: null }, supportedFileExtensions: { classPropertyName: "supportedFileExtensions", publicName: "supportedFileExtensions", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelected: "itemSelected" }, viewQueries: [{ propertyName: "dropArea", first: true, predicate: DropAreaComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as assets; else loading\">\n <div\n class=\"text-center sticky-top separator-bottom bg-component\"\n style=\"z-index: 1001\"\n >\n <p\n class=\"m-0 p-16\"\n *ngIf=\"assets.length\"\n >\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$ | async\"\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 | c8yDate\"\n >\n <div class=\"icon-flex small\">\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"'calendar'\"\n ></i>\n <span>{{ asset.addedAt | c8yDate }}</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=\"card btn-clean interact pointer\"\n [ngClass]=\"{\n 'col-md-3 col-sm-4 col-xs-12': inModalView(),\n 'col-md-1 col-sm-3 col-xs-12': !inModalView()\n }\"\n *ngFor=\"let asset of assets\"\n (click)=\"select(asset)\"\n >\n <div class=\"card-block\">\n <ng-container [ngSwitch]=\"asset | staticAssetMainType\">\n <div\n class=\"bg-checkered\"\n *ngSwitchCase=\"'image'\"\n >\n <img\n class=\"img-responsive m-auto img-square\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n <div\n class=\"bg-checkered\"\n *ngSwitchCase=\"'font'\"\n >\n <div\n class=\"img-responsive m-auto img-square\"\n [ngStyle]=\"{ 'font-family': asset.hashSum }\"\n >\n <p class=\"fit-h text-balance text-truncate-wrap\">\n <!-- intentionally not translated -->\n The quick brown fox jumps over the lazy dog.\n </p>\n </div>\n </div>\n <div\n class=\"bg-checkered\"\n *ngSwitchDefault\n >\n <div class=\"img-responsive m-auto img-square d-flex a-i-center j-c-center\">\n <i\n class=\"icon-2x\"\n [c8yIcon]=\"'file'\"\n ></i>\n </div>\n </div>\n </ng-container>\n <p\n class=\"text-medium text-truncate-wrap m-t-8\"\n [title]=\"asset.fileName\"\n >\n <a\n [href]=\"asset.path\"\n download\n (click)=\"$event.stopPropagation()\"\n >\n <i [c8yIcon]=\"'download'\"></i>\n {{ asset.fileName }}\n </a>\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 flex-wrap 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 | c8yDate }}</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", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "maxFileSizeInMegaBytes", "accept"], outputs: ["dropped"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "directive", type: 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: i1.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }, { kind: "pipe", type: BytesPipe, name: "bytes" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: StaticAssetMainTypePipe, name: "staticAssetMainType" }] }); }
110
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: StaticAssetsFileListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
111
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.15", type: StaticAssetsFileListComponent, isStandalone: true, selector: "c8y-static-assets-file-list", inputs: { inModalView: { classPropertyName: "inModalView", publicName: "inModalView", isSignal: true, isRequired: false, transformFunction: null }, assetType: { classPropertyName: "assetType", publicName: "assetType", isSignal: true, isRequired: false, transformFunction: null }, supportedFileExtensions: { classPropertyName: "supportedFileExtensions", publicName: "supportedFileExtensions", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelected: "itemSelected" }, viewQueries: [{ propertyName: "dropArea", first: true, predicate: DropAreaComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as assets; else loading\">\n <div\n class=\"text-center sticky-top separator-bottom bg-component\"\n style=\"z-index: 1001\"\n >\n <p\n class=\"m-0 p-16\"\n *ngIf=\"assets.length\"\n >\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$ | async\"\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 | c8yDate\"\n >\n <div class=\"icon-flex small\">\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"'calendar'\"\n ></i>\n <span>{{ asset.addedAt | c8yDate }}</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=\"card btn-clean interact pointer\"\n [ngClass]=\"{\n 'col-md-3 col-sm-4 col-xs-12': inModalView(),\n 'col-md-1 col-sm-3 col-xs-12': !inModalView()\n }\"\n *ngFor=\"let asset of assets\"\n (click)=\"select(asset)\"\n >\n <div class=\"card-block\">\n <ng-container [ngSwitch]=\"asset | staticAssetMainType\">\n <div\n class=\"bg-checkered\"\n *ngSwitchCase=\"'image'\"\n >\n <img\n class=\"img-responsive m-auto img-square\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n <div\n class=\"bg-checkered\"\n *ngSwitchCase=\"'font'\"\n >\n <div\n class=\"img-responsive m-auto img-square\"\n [ngStyle]=\"{ 'font-family': asset.hashSum }\"\n >\n <p class=\"fit-h text-balance text-truncate-wrap\">\n <!-- intentionally not translated -->\n The quick brown fox jumps over the lazy dog.\n </p>\n </div>\n </div>\n <div\n class=\"bg-checkered\"\n *ngSwitchDefault\n >\n <div class=\"img-responsive m-auto img-square d-flex a-i-center j-c-center\">\n <i\n class=\"icon-2x\"\n [c8yIcon]=\"'file'\"\n ></i>\n </div>\n </div>\n </ng-container>\n <p\n class=\"text-medium text-truncate-wrap m-t-8\"\n [title]=\"asset.fileName\"\n >\n <a\n [href]=\"asset.path\"\n download\n (click)=\"$event.stopPropagation()\"\n >\n <i [c8yIcon]=\"'download'\"></i>\n {{ asset.fileName }}\n </a>\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 flex-wrap 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 | c8yDate }}</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", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "maxFileSizeInMegaBytes", "accept"], outputs: ["dropped"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "directive", type: 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: i1.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }, { kind: "pipe", type: BytesPipe, name: "bytes" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: StaticAssetMainTypePipe, name: "staticAssetMainType" }] }); }
112
112
  }
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetsFileListComponent, decorators: [{
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: StaticAssetsFileListComponent, decorators: [{
114
114
  type: Component,
115
115
  args: [{ selector: 'c8y-static-assets-file-list', standalone: true, imports: [
116
116
  NgForOf,
@@ -137,7 +137,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
137
137
  NgSwitchCase,
138
138
  NgSwitchDefault
139
139
  ], template: "<ng-container *ngIf=\"files$ | async as assets; else loading\">\n <div\n class=\"text-center sticky-top separator-bottom bg-component\"\n style=\"z-index: 1001\"\n >\n <p\n class=\"m-0 p-16\"\n *ngIf=\"assets.length\"\n >\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$ | async\"\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 | c8yDate\"\n >\n <div class=\"icon-flex small\">\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"'calendar'\"\n ></i>\n <span>{{ asset.addedAt | c8yDate }}</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=\"card btn-clean interact pointer\"\n [ngClass]=\"{\n 'col-md-3 col-sm-4 col-xs-12': inModalView(),\n 'col-md-1 col-sm-3 col-xs-12': !inModalView()\n }\"\n *ngFor=\"let asset of assets\"\n (click)=\"select(asset)\"\n >\n <div class=\"card-block\">\n <ng-container [ngSwitch]=\"asset | staticAssetMainType\">\n <div\n class=\"bg-checkered\"\n *ngSwitchCase=\"'image'\"\n >\n <img\n class=\"img-responsive m-auto img-square\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n <div\n class=\"bg-checkered\"\n *ngSwitchCase=\"'font'\"\n >\n <div\n class=\"img-responsive m-auto img-square\"\n [ngStyle]=\"{ 'font-family': asset.hashSum }\"\n >\n <p class=\"fit-h text-balance text-truncate-wrap\">\n <!-- intentionally not translated -->\n The quick brown fox jumps over the lazy dog.\n </p>\n </div>\n </div>\n <div\n class=\"bg-checkered\"\n *ngSwitchDefault\n >\n <div class=\"img-responsive m-auto img-square d-flex a-i-center j-c-center\">\n <i\n class=\"icon-2x\"\n [c8yIcon]=\"'file'\"\n ></i>\n </div>\n </div>\n </ng-container>\n <p\n class=\"text-medium text-truncate-wrap m-t-8\"\n [title]=\"asset.fileName\"\n >\n <a\n [href]=\"asset.path\"\n download\n (click)=\"$event.stopPropagation()\"\n >\n <i [c8yIcon]=\"'download'\"></i>\n {{ asset.fileName }}\n </a>\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 flex-wrap 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 | c8yDate }}</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" }]
140
- }], ctorParameters: () => [] });
140
+ }], ctorParameters: () => [], propDecorators: { itemSelected: [{ type: i0.Output, args: ["itemSelected"] }], inModalView: [{ type: i0.Input, args: [{ isSignal: true, alias: "inModalView", required: false }] }], assetType: [{ type: i0.Input, args: [{ isSignal: true, alias: "assetType", required: false }] }], supportedFileExtensions: [{ type: i0.Input, args: [{ isSignal: true, alias: "supportedFileExtensions", required: false }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], dropArea: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DropAreaComponent), { isSignal: true }] }] } });
141
141
 
142
142
  class StaticAssetsModalComponent {
143
143
  constructor(modalRef) {
@@ -159,10 +159,10 @@ class StaticAssetsModalComponent {
159
159
  this.modalRef.hide();
160
160
  this.reject();
161
161
  }
162
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetsModalComponent, deps: [{ token: i1$1.BsModalRef }], target: i0.ɵɵFactoryTarget.Component }); }
163
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", 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 <c8y-static-assets-file-list\n (itemSelected)=\"select($event)\"\n [assetType]=\"assetType\"\n [supportedFileExtensions]=\"supportedFileExtensions\"\n [layout]=\"layout\"\n [inModalView]=\"true\"\n ></c8y-static-assets-file-list>\n</c8y-modal>\n", dependencies: [{ kind: "component", type: StaticAssetsFileListComponent, selector: "c8y-static-assets-file-list", inputs: ["inModalView", "assetType", "supportedFileExtensions", "layout"], outputs: ["itemSelected"] }, { kind: "component", type: ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }] }); }
162
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: StaticAssetsModalComponent, deps: [{ token: i1$1.BsModalRef }], target: i0.ɵɵFactoryTarget.Component }); }
163
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.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 <c8y-static-assets-file-list\n (itemSelected)=\"select($event)\"\n [assetType]=\"assetType\"\n [supportedFileExtensions]=\"supportedFileExtensions\"\n [layout]=\"layout\"\n [inModalView]=\"true\"\n ></c8y-static-assets-file-list>\n</c8y-modal>\n", dependencies: [{ kind: "component", type: StaticAssetsFileListComponent, selector: "c8y-static-assets-file-list", inputs: ["inModalView", "assetType", "supportedFileExtensions", "layout"], outputs: ["itemSelected"] }, { kind: "component", type: ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }] }); }
164
164
  }
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetsModalComponent, decorators: [{
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: StaticAssetsModalComponent, decorators: [{
166
166
  type: Component,
167
167
  args: [{ selector: 'c8y-static-assets-modal', imports: [StaticAssetsFileListComponent, ModalComponent, IconDirective], 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 <c8y-static-assets-file-list\n (itemSelected)=\"select($event)\"\n [assetType]=\"assetType\"\n [supportedFileExtensions]=\"supportedFileExtensions\"\n [layout]=\"layout\"\n [inModalView]=\"true\"\n ></c8y-static-assets-file-list>\n</c8y-modal>\n" }]
168
168
  }], ctorParameters: () => [{ type: i1$1.BsModalRef }], propDecorators: { assetType: [{
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-static-assets-modal.mjs","sources":["../../static-assets/modal/static-asset-main-type.pipe.ts","../../static-assets/modal/static-assets-file-list/static-assets-file-list.component.ts","../../static-assets/modal/static-assets-file-list/static-assets-file-list.component.html","../../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 { Pipe, PipeTransform } from '@angular/core';\nimport { StaticAsset } from '@c8y/ngx-components/static-assets/data';\n\n@Pipe({\n name: 'staticAssetMainType',\n pure: true,\n standalone: true\n})\nexport class StaticAssetMainTypePipe implements PipeTransform {\n supportedTypes = ['image', 'font'];\n\n transform(value: Pick<StaticAsset, 'type'> | StaticAsset): string {\n if (!value?.type) {\n return 'unknown';\n }\n\n const typePrefix = value.type.replace(/\\/.*$/, '');\n\n if (this.supportedTypes.includes(typePrefix)) {\n return typePrefix;\n }\n\n return 'unknown';\n }\n}\n","import {\n AsyncPipe,\n NgClass,\n NgForOf,\n NgIf,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault\n} from '@angular/common';\nimport { Component, inject, input, OnDestroy, output, viewChild } from '@angular/core';\nimport {\n AlertService,\n BytesPipe,\n C8yTranslateDirective,\n C8yTranslatePipe,\n DatePipe,\n DropAreaComponent,\n DroppedFile,\n IconDirective,\n ListGroupComponent,\n ListItemBodyComponent,\n ListItemComponent,\n ListItemIconComponent,\n LoadingComponent,\n MessagesComponent\n} from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\nimport { combineLatest, firstValueFrom, merge, Observable, Subject } from 'rxjs';\nimport { first, map, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport {\n StaticAsset,\n StaticAssetsService,\n StaticAssetType\n} from '@c8y/ngx-components/static-assets/data';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { StaticAssetMainTypePipe } from '../static-asset-main-type.pipe';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'c8y-static-assets-file-list',\n templateUrl: './static-assets-file-list.component.html',\n standalone: true,\n imports: [\n NgForOf,\n NgIf,\n AsyncPipe,\n DatePipe,\n BytesPipe,\n LoadingComponent,\n DropAreaComponent,\n C8yTranslatePipe,\n C8yTranslateDirective,\n MessagesComponent,\n ListGroupComponent,\n ListItemComponent,\n ListItemIconComponent,\n ListItemBodyComponent,\n PopoverDirective,\n CollapseModule,\n NgStyle,\n NgClass,\n IconDirective,\n StaticAssetMainTypePipe,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault\n ]\n})\nexport class StaticAssetsFileListComponent implements OnDestroy {\n itemSelected = output<StaticAsset>();\n inModalView = input<boolean>(false);\n assetType = input<StaticAssetType>('branding');\n supportedFileExtensions = input<string[]>([]);\n layout = input<'list' | 'grid'>('grid');\n files$: Observable<StaticAsset[]>;\n accept$: Observable<string>;\n isExpanded = false;\n private _unfilteredFiles$: Observable<StaticAsset[]>;\n private _filesUpdate$ = new Subject<StaticAsset[]>();\n private styleTagId = `static-assets-font-faces`;\n private dropArea = viewChild(DropAreaComponent);\n private alert = inject(AlertService);\n private translate = inject(TranslateService);\n private staticAssets = inject(StaticAssetsService);\n\n constructor() {\n this._unfilteredFiles$ = merge(\n toObservable(this.assetType).pipe(\n switchMap(assetType => this.staticAssets.listFiles(assetType))\n ),\n this._filesUpdate$\n ).pipe(shareReplay({ bufferSize: 1, refCount: true }));\n\n this.files$ = combineLatest([\n this._unfilteredFiles$,\n toObservable(this.supportedFileExtensions)\n ]).pipe(\n map(([files, supportedFileExtensions]) =>\n supportedFileExtensions?.length\n ? files.filter(tmp => 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 shareReplay({ bufferSize: 1, refCount: true })\n );\n\n this.accept$ = toObservable(this.supportedFileExtensions).pipe(map(exts => exts.join(',')));\n this.files$.pipe(takeUntilDestroyed()).subscribe(files => this.applyStylesForFiles(files));\n }\n\n ngOnDestroy(): void {\n this.removeStyleTag();\n }\n\n async addFiles(files: DroppedFile[]) {\n if (!files?.length) {\n return;\n }\n this.dropArea().loading = true;\n try {\n const existingFiles = await firstValueFrom(this._unfilteredFiles$.pipe(first()));\n const updatedFiles = await this.staticAssets.addFilesToStaticAssets(\n this.assetType(),\n files,\n existingFiles\n );\n this._filesUpdate$.next(updatedFiles);\n } catch (e) {\n this.alert.danger(this.translate.instant(gettext('Failed to upload asset.')), e?.message);\n }\n\n this.dropArea().files = null;\n this.dropArea().loading = false;\n }\n\n select(asset: StaticAsset) {\n this.itemSelected.emit(asset);\n }\n\n private applyStylesForFiles(files: StaticAsset[]) {\n this.removeStyleTag();\n const styles = files\n .filter(file => file.type.startsWith('font/'))\n .map(file => `@font-face { font-family: '${file.hashSum}'; src: url('${file.path}'); }`)\n .join('\\n');\n\n if (!styles) {\n return;\n }\n const styleTag = document.createElement('style');\n styleTag.id = this.styleTagId;\n styleTag.innerHTML = styles;\n styleTag.type = 'text/css';\n document.body.appendChild(styleTag);\n }\n\n private removeStyleTag() {\n document.getElementById(this.styleTagId)?.remove();\n }\n}\n","<ng-container *ngIf=\"files$ | async as assets; else loading\">\n <div\n class=\"text-center sticky-top separator-bottom bg-component\"\n style=\"z-index: 1001\"\n >\n <p\n class=\"m-0 p-16\"\n *ngIf=\"assets.length\"\n >\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$ | async\"\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 | c8yDate\"\n >\n <div class=\"icon-flex small\">\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"'calendar'\"\n ></i>\n <span>{{ asset.addedAt | c8yDate }}</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=\"card btn-clean interact pointer\"\n [ngClass]=\"{\n 'col-md-3 col-sm-4 col-xs-12': inModalView(),\n 'col-md-1 col-sm-3 col-xs-12': !inModalView()\n }\"\n *ngFor=\"let asset of assets\"\n (click)=\"select(asset)\"\n >\n <div class=\"card-block\">\n <ng-container [ngSwitch]=\"asset | staticAssetMainType\">\n <div\n class=\"bg-checkered\"\n *ngSwitchCase=\"'image'\"\n >\n <img\n class=\"img-responsive m-auto img-square\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n <div\n class=\"bg-checkered\"\n *ngSwitchCase=\"'font'\"\n >\n <div\n class=\"img-responsive m-auto img-square\"\n [ngStyle]=\"{ 'font-family': asset.hashSum }\"\n >\n <p class=\"fit-h text-balance text-truncate-wrap\">\n <!-- intentionally not translated -->\n The quick brown fox jumps over the lazy dog.\n </p>\n </div>\n </div>\n <div\n class=\"bg-checkered\"\n *ngSwitchDefault\n >\n <div class=\"img-responsive m-auto img-square d-flex a-i-center j-c-center\">\n <i\n class=\"icon-2x\"\n [c8yIcon]=\"'file'\"\n ></i>\n </div>\n </div>\n </ng-container>\n <p\n class=\"text-medium text-truncate-wrap m-t-8\"\n [title]=\"asset.fileName\"\n >\n <a\n [href]=\"asset.path\"\n download\n (click)=\"$event.stopPropagation()\"\n >\n <i [c8yIcon]=\"'download'\"></i>\n {{ asset.fileName }}\n </a>\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 flex-wrap 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 | c8yDate }}</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","import { Component, Input } from '@angular/core';\nimport type { StaticAsset, StaticAssetType } from '@c8y/ngx-components/static-assets/data';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { IconDirective, ModalComponent } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { StaticAssetsFileListComponent } from './static-assets-file-list/static-assets-file-list.component';\n\n@Component({\n selector: 'c8y-static-assets-modal',\n templateUrl: './static-assets-modal.component.html',\n imports: [StaticAssetsFileListComponent, ModalComponent, IconDirective],\n standalone: true\n})\nexport class StaticAssetsModalComponent {\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 private resolve: (res: StaticAsset) => void;\n private reject: (err?: unknown) => void;\n\n constructor(private modalRef: BsModalRef) {\n this.result = new Promise<StaticAsset>((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\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 <c8y-static-assets-file-list\n (itemSelected)=\"select($event)\"\n [assetType]=\"assetType\"\n [supportedFileExtensions]=\"supportedFileExtensions\"\n [layout]=\"layout\"\n [inModalView]=\"true\"\n ></c8y-static-assets-file-list>\n</c8y-modal>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-static-assets-modal.mjs","sources":["../../static-assets/modal/static-asset-main-type.pipe.ts","../../static-assets/modal/static-assets-file-list/static-assets-file-list.component.ts","../../static-assets/modal/static-assets-file-list/static-assets-file-list.component.html","../../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 { Pipe, PipeTransform } from '@angular/core';\nimport { StaticAsset } from '@c8y/ngx-components/static-assets/data';\n\n@Pipe({\n name: 'staticAssetMainType',\n pure: true,\n standalone: true\n})\nexport class StaticAssetMainTypePipe implements PipeTransform {\n supportedTypes = ['image', 'font'];\n\n transform(value: Pick<StaticAsset, 'type'> | StaticAsset): string {\n if (!value?.type) {\n return 'unknown';\n }\n\n const typePrefix = value.type.replace(/\\/.*$/, '');\n\n if (this.supportedTypes.includes(typePrefix)) {\n return typePrefix;\n }\n\n return 'unknown';\n }\n}\n","import {\n AsyncPipe,\n NgClass,\n NgForOf,\n NgIf,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault\n} from '@angular/common';\nimport { Component, inject, input, OnDestroy, output, viewChild } from '@angular/core';\nimport {\n AlertService,\n BytesPipe,\n C8yTranslateDirective,\n C8yTranslatePipe,\n DatePipe,\n DropAreaComponent,\n DroppedFile,\n IconDirective,\n ListGroupComponent,\n ListItemBodyComponent,\n ListItemComponent,\n ListItemIconComponent,\n LoadingComponent,\n MessagesComponent\n} from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\nimport { combineLatest, firstValueFrom, merge, Observable, Subject } from 'rxjs';\nimport { first, map, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport {\n StaticAsset,\n StaticAssetsService,\n StaticAssetType\n} from '@c8y/ngx-components/static-assets/data';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { StaticAssetMainTypePipe } from '../static-asset-main-type.pipe';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'c8y-static-assets-file-list',\n templateUrl: './static-assets-file-list.component.html',\n standalone: true,\n imports: [\n NgForOf,\n NgIf,\n AsyncPipe,\n DatePipe,\n BytesPipe,\n LoadingComponent,\n DropAreaComponent,\n C8yTranslatePipe,\n C8yTranslateDirective,\n MessagesComponent,\n ListGroupComponent,\n ListItemComponent,\n ListItemIconComponent,\n ListItemBodyComponent,\n PopoverDirective,\n CollapseModule,\n NgStyle,\n NgClass,\n IconDirective,\n StaticAssetMainTypePipe,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault\n ]\n})\nexport class StaticAssetsFileListComponent implements OnDestroy {\n itemSelected = output<StaticAsset>();\n inModalView = input<boolean>(false);\n assetType = input<StaticAssetType>('branding');\n supportedFileExtensions = input<string[]>([]);\n layout = input<'list' | 'grid'>('grid');\n files$: Observable<StaticAsset[]>;\n accept$: Observable<string>;\n isExpanded = false;\n private _unfilteredFiles$: Observable<StaticAsset[]>;\n private _filesUpdate$ = new Subject<StaticAsset[]>();\n private styleTagId = `static-assets-font-faces`;\n private dropArea = viewChild(DropAreaComponent);\n private alert = inject(AlertService);\n private translate = inject(TranslateService);\n private staticAssets = inject(StaticAssetsService);\n\n constructor() {\n this._unfilteredFiles$ = merge(\n toObservable(this.assetType).pipe(\n switchMap(assetType => this.staticAssets.listFiles(assetType))\n ),\n this._filesUpdate$\n ).pipe(shareReplay({ bufferSize: 1, refCount: true }));\n\n this.files$ = combineLatest([\n this._unfilteredFiles$,\n toObservable(this.supportedFileExtensions)\n ]).pipe(\n map(([files, supportedFileExtensions]) =>\n supportedFileExtensions?.length\n ? files.filter(tmp => 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 shareReplay({ bufferSize: 1, refCount: true })\n );\n\n this.accept$ = toObservable(this.supportedFileExtensions).pipe(map(exts => exts.join(',')));\n this.files$.pipe(takeUntilDestroyed()).subscribe(files => this.applyStylesForFiles(files));\n }\n\n ngOnDestroy(): void {\n this.removeStyleTag();\n }\n\n async addFiles(files: DroppedFile[]) {\n if (!files?.length) {\n return;\n }\n this.dropArea().loading = true;\n try {\n const existingFiles = await firstValueFrom(this._unfilteredFiles$.pipe(first()));\n const updatedFiles = await this.staticAssets.addFilesToStaticAssets(\n this.assetType(),\n files,\n existingFiles\n );\n this._filesUpdate$.next(updatedFiles);\n } catch (e) {\n this.alert.danger(this.translate.instant(gettext('Failed to upload asset.')), e?.message);\n }\n\n this.dropArea().files = null;\n this.dropArea().loading = false;\n }\n\n select(asset: StaticAsset) {\n this.itemSelected.emit(asset);\n }\n\n private applyStylesForFiles(files: StaticAsset[]) {\n this.removeStyleTag();\n const styles = files\n .filter(file => file.type.startsWith('font/'))\n .map(file => `@font-face { font-family: '${file.hashSum}'; src: url('${file.path}'); }`)\n .join('\\n');\n\n if (!styles) {\n return;\n }\n const styleTag = document.createElement('style');\n styleTag.id = this.styleTagId;\n styleTag.innerHTML = styles;\n styleTag.type = 'text/css';\n document.body.appendChild(styleTag);\n }\n\n private removeStyleTag() {\n document.getElementById(this.styleTagId)?.remove();\n }\n}\n","<ng-container *ngIf=\"files$ | async as assets; else loading\">\n <div\n class=\"text-center sticky-top separator-bottom bg-component\"\n style=\"z-index: 1001\"\n >\n <p\n class=\"m-0 p-16\"\n *ngIf=\"assets.length\"\n >\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$ | async\"\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 | c8yDate\"\n >\n <div class=\"icon-flex small\">\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"'calendar'\"\n ></i>\n <span>{{ asset.addedAt | c8yDate }}</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=\"card btn-clean interact pointer\"\n [ngClass]=\"{\n 'col-md-3 col-sm-4 col-xs-12': inModalView(),\n 'col-md-1 col-sm-3 col-xs-12': !inModalView()\n }\"\n *ngFor=\"let asset of assets\"\n (click)=\"select(asset)\"\n >\n <div class=\"card-block\">\n <ng-container [ngSwitch]=\"asset | staticAssetMainType\">\n <div\n class=\"bg-checkered\"\n *ngSwitchCase=\"'image'\"\n >\n <img\n class=\"img-responsive m-auto img-square\"\n [alt]=\"asset.fileName\"\n [src]=\"asset.path\"\n />\n </div>\n <div\n class=\"bg-checkered\"\n *ngSwitchCase=\"'font'\"\n >\n <div\n class=\"img-responsive m-auto img-square\"\n [ngStyle]=\"{ 'font-family': asset.hashSum }\"\n >\n <p class=\"fit-h text-balance text-truncate-wrap\">\n <!-- intentionally not translated -->\n The quick brown fox jumps over the lazy dog.\n </p>\n </div>\n </div>\n <div\n class=\"bg-checkered\"\n *ngSwitchDefault\n >\n <div class=\"img-responsive m-auto img-square d-flex a-i-center j-c-center\">\n <i\n class=\"icon-2x\"\n [c8yIcon]=\"'file'\"\n ></i>\n </div>\n </div>\n </ng-container>\n <p\n class=\"text-medium text-truncate-wrap m-t-8\"\n [title]=\"asset.fileName\"\n >\n <a\n [href]=\"asset.path\"\n download\n (click)=\"$event.stopPropagation()\"\n >\n <i [c8yIcon]=\"'download'\"></i>\n {{ asset.fileName }}\n </a>\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 flex-wrap 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 | c8yDate }}</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","import { Component, Input } from '@angular/core';\nimport type { StaticAsset, StaticAssetType } from '@c8y/ngx-components/static-assets/data';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { IconDirective, ModalComponent } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { StaticAssetsFileListComponent } from './static-assets-file-list/static-assets-file-list.component';\n\n@Component({\n selector: 'c8y-static-assets-modal',\n templateUrl: './static-assets-modal.component.html',\n imports: [StaticAssetsFileListComponent, ModalComponent, IconDirective],\n standalone: true\n})\nexport class StaticAssetsModalComponent {\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 private resolve: (res: StaticAsset) => void;\n private reject: (err?: unknown) => void;\n\n constructor(private modalRef: BsModalRef) {\n this.result = new Promise<StaticAsset>((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\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 <c8y-static-assets-file-list\n (itemSelected)=\"select($event)\"\n [assetType]=\"assetType\"\n [supportedFileExtensions]=\"supportedFileExtensions\"\n [layout]=\"layout\"\n [inModalView]=\"true\"\n ></c8y-static-assets-file-list>\n</c8y-modal>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"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: "20.3.3", ngImport: i0, type: StaticAssetsModalService, deps: [{ token: i1.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
30
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetsModalService, providedIn: 'root' }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: StaticAssetsModalService, deps: [{ token: i1.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
30
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: StaticAssetsModalService, providedIn: 'root' }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetsModalService, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.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: "20.3.3", 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: "20.3.3", 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: "20.3.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: "20.3.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: "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"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); }
124
124
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StaticAssetsFilePickerComponent, decorators: [{
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.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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"}