@c8y/ngx-components 1022.35.1 → 1022.44.7

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 (925) hide show
  1. package/actility-device-registration/actility-device-registration.component.d.ts.map +1 -1
  2. package/actility-device-registration/actility-device-registration.service.d.ts.map +1 -1
  3. package/alarms/alarm-details.component.d.ts.map +1 -1
  4. package/alarms/alarm-info.component.d.ts.map +1 -1
  5. package/alarms/alarm-severity-to-icon-class.pipe.d.ts +9 -0
  6. package/alarms/alarm-severity-to-icon-class.pipe.d.ts.map +1 -0
  7. package/alarms/alarms-icon.component.d.ts.map +1 -1
  8. package/alarms/alarms-interval-refresh.component.d.ts.map +1 -1
  9. package/alarms/alarms-list.component.d.ts.map +1 -1
  10. package/alarms/alarms-view.service.d.ts.map +1 -1
  11. package/alarms/alarms.component.d.ts.map +1 -1
  12. package/alarms/alarms.helper.d.ts.map +1 -1
  13. package/alarms/alarms.model.d.ts.map +1 -1
  14. package/alarms/cockpit/index.d.ts.map +1 -1
  15. package/alarms/devicemanagement/index.d.ts.map +1 -1
  16. package/alarms/index.d.ts +1 -0
  17. package/alarms/index.d.ts.map +1 -1
  18. package/asset-properties/asset-properties.model.d.ts +77 -1
  19. package/asset-properties/asset-properties.model.d.ts.map +1 -1
  20. package/asset-properties/asset-properties.service.d.ts +17 -0
  21. package/asset-properties/asset-properties.service.d.ts.map +1 -1
  22. package/asset-properties/asset-property-list/asset-property-collapse-button-title.pipe.d.ts +14 -0
  23. package/asset-properties/asset-property-list/asset-property-collapse-button-title.pipe.d.ts.map +1 -0
  24. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts +2 -1
  25. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts.map +1 -1
  26. package/asset-properties/asset-property-list/asset-property-list.component.d.ts +52 -13
  27. package/asset-properties/asset-property-list/asset-property-list.component.d.ts.map +1 -1
  28. package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts +7 -3
  29. package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts.map +1 -1
  30. package/asset-properties/asset-property-list/tree-data-source.d.ts +1 -0
  31. package/asset-properties/asset-property-list/tree-data-source.d.ts.map +1 -1
  32. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts.map +1 -1
  33. package/asset-properties/computed-properties-config/computed-properties-config.component.d.ts +39 -0
  34. package/asset-properties/computed-properties-config/computed-properties-config.component.d.ts.map +1 -0
  35. package/asset-properties/computed-properties.service.d.ts +27 -0
  36. package/asset-properties/computed-properties.service.d.ts.map +1 -0
  37. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts +11 -6
  38. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts.map +1 -1
  39. package/asset-properties/custom-properties-drawer.service.d.ts +2 -1
  40. package/asset-properties/custom-properties-drawer.service.d.ts.map +1 -1
  41. package/asset-properties/index.d.ts +1 -0
  42. package/asset-properties/index.d.ts.map +1 -1
  43. package/assets-navigator/asset-node.d.ts.map +1 -1
  44. package/assets-navigator/asset-node.service.d.ts.map +1 -1
  45. package/assets-navigator/asset-selector/asset-selector-node.component.d.ts.map +1 -1
  46. package/assets-navigator/asset-selector/asset-selector.model.d.ts +1 -2
  47. package/assets-navigator/asset-selector/asset-selector.model.d.ts.map +1 -1
  48. package/assets-navigator/asset-selector/miller-view.component.d.ts +17 -5
  49. package/assets-navigator/asset-selector/miller-view.component.d.ts.map +1 -1
  50. package/assets-navigator/asset-selector/unassigned-devices-node.d.ts.map +1 -1
  51. package/assets-navigator/load-more-node.d.ts.map +1 -1
  52. package/auth-configuration/basic-settings/login-settings.component.d.ts.map +1 -1
  53. package/auth-configuration/basic-settings/session-configuration.component.d.ts.map +1 -1
  54. package/auth-configuration/factories/navigation.factory.d.ts.map +1 -1
  55. package/auth-configuration/factories/tabs.factory.d.ts.map +1 -1
  56. package/auth-configuration/sso-configuration/sso-configuration.component.d.ts.map +1 -1
  57. package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.d.ts.map +1 -1
  58. package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts.map +1 -1
  59. package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts.map +1 -1
  60. package/binary-file-download/binary-file-download.service.d.ts.map +1 -1
  61. package/bookmarks/bookmarks.component.d.ts.map +1 -1
  62. package/bookmarks/bookmarks.service.d.ts.map +1 -1
  63. package/bookmarks/edit-bookmarks/edit-bookmarks.component.d.ts.map +1 -1
  64. package/branding/dark-theme/dark-theme-tab.factory.d.ts.map +1 -1
  65. package/branding/extra-css-branding-editor/extra-css-branding-editor-tab.factory.d.ts.map +1 -1
  66. package/branding/plain-branding-editor/plain-branding-editor-tab.factory.d.ts.map +1 -1
  67. package/branding/shared/lazy/branding-form/branding-form.component.d.ts.map +1 -1
  68. package/branding/shared/lazy/branding-import-modal/branding-import-modal.component.d.ts.map +1 -1
  69. package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
  70. package/cockpit-config/cockpit-config.guard.d.ts.map +1 -1
  71. package/cockpit-config/cockpit-configuration.component.d.ts.map +1 -1
  72. package/computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.d.ts +8 -0
  73. package/computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.d.ts.map +1 -0
  74. package/computed-asset-properties/alarm-count/alarm-count-config.component.d.ts +26 -0
  75. package/computed-asset-properties/alarm-count/alarm-count-config.component.d.ts.map +1 -0
  76. package/computed-asset-properties/alarm-count/alarm-count-today-computed-property.d.ts +8 -0
  77. package/computed-asset-properties/alarm-count/alarm-count-today-computed-property.d.ts.map +1 -0
  78. package/computed-asset-properties/alarm-count/alarm-count-value.d.ts +17 -0
  79. package/computed-asset-properties/alarm-count/alarm-count-value.d.ts.map +1 -0
  80. package/computed-asset-properties/alarm-count/alarm-count.model.d.ts +6 -0
  81. package/computed-asset-properties/alarm-count/alarm-count.model.d.ts.map +1 -0
  82. package/computed-asset-properties/c8y-ngx-components-computed-asset-properties.d.ts.map +1 -0
  83. package/computed-asset-properties/child-count/child-assets-count-computed-property.d.ts +14 -0
  84. package/computed-asset-properties/child-count/child-assets-count-computed-property.d.ts.map +1 -0
  85. package/computed-asset-properties/child-count/child-count-value.d.ts +14 -0
  86. package/computed-asset-properties/child-count/child-count-value.d.ts.map +1 -0
  87. package/computed-asset-properties/child-count/child-devices-count-computed-property.d.ts +14 -0
  88. package/computed-asset-properties/child-count/child-devices-count-computed-property.d.ts.map +1 -0
  89. package/computed-asset-properties/common/realtime-value-base.d.ts +32 -0
  90. package/computed-asset-properties/common/realtime-value-base.d.ts.map +1 -0
  91. package/computed-asset-properties/common/realtime-value-handler.d.ts +19 -0
  92. package/computed-asset-properties/common/realtime-value-handler.d.ts.map +1 -0
  93. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.d.ts +7 -0
  94. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.d.ts.map +1 -0
  95. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.d.ts +21 -0
  96. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.d.ts.map +1 -0
  97. package/computed-asset-properties/configuration-snapshot/configuration-snapshot.model.d.ts +8 -0
  98. package/computed-asset-properties/configuration-snapshot/configuration-snapshot.model.d.ts.map +1 -0
  99. package/computed-asset-properties/event-count/event-count-3-months.d.ts +8 -0
  100. package/computed-asset-properties/event-count/event-count-3-months.d.ts.map +1 -0
  101. package/computed-asset-properties/event-count/event-count-config.component.d.ts +18 -0
  102. package/computed-asset-properties/event-count/event-count-config.component.d.ts.map +1 -0
  103. package/computed-asset-properties/event-count/event-count-today.d.ts +8 -0
  104. package/computed-asset-properties/event-count/event-count-today.d.ts.map +1 -0
  105. package/computed-asset-properties/event-count/event-count-value.d.ts +17 -0
  106. package/computed-asset-properties/event-count/event-count-value.d.ts.map +1 -0
  107. package/computed-asset-properties/event-count/event-count.model.d.ts +4 -0
  108. package/computed-asset-properties/event-count/event-count.model.d.ts.map +1 -0
  109. package/computed-asset-properties/index.d.ts +3 -0
  110. package/computed-asset-properties/index.d.ts.map +1 -0
  111. package/computed-asset-properties/last-device-message/last-device-message-computed-property.d.ts +3 -0
  112. package/computed-asset-properties/last-device-message/last-device-message-computed-property.d.ts.map +1 -0
  113. package/computed-asset-properties/last-device-message/last-device-message-value.d.ts +13 -0
  114. package/computed-asset-properties/last-device-message/last-device-message-value.d.ts.map +1 -0
  115. package/computed-asset-properties/last-measurement/last-measurement-computed-property.d.ts +8 -0
  116. package/computed-asset-properties/last-measurement/last-measurement-computed-property.d.ts.map +1 -0
  117. package/computed-asset-properties/last-measurement/last-measurement-config.component.d.ts +48 -0
  118. package/computed-asset-properties/last-measurement/last-measurement-config.component.d.ts.map +1 -0
  119. package/computed-asset-properties/last-measurement/last-measurement-value.d.ts +13 -0
  120. package/computed-asset-properties/last-measurement/last-measurement-value.d.ts.map +1 -0
  121. package/computed-asset-properties/last-measurement/last-measurement.model.d.ts +28 -0
  122. package/computed-asset-properties/last-measurement/last-measurement.model.d.ts.map +1 -0
  123. package/computed-asset-properties/strategies/alarm-count-strategy.d.ts +17 -0
  124. package/computed-asset-properties/strategies/alarm-count-strategy.d.ts.map +1 -0
  125. package/computed-asset-properties/strategies/child-count-strategy.d.ts +14 -0
  126. package/computed-asset-properties/strategies/child-count-strategy.d.ts.map +1 -0
  127. package/computed-asset-properties/strategies/count-strategy-base.d.ts +12 -0
  128. package/computed-asset-properties/strategies/count-strategy-base.d.ts.map +1 -0
  129. package/computed-asset-properties/strategies/event-count-strategy.d.ts +16 -0
  130. package/computed-asset-properties/strategies/event-count-strategy.d.ts.map +1 -0
  131. package/computed-asset-properties/strategies/last-device-message-strategy.d.ts +20 -0
  132. package/computed-asset-properties/strategies/last-device-message-strategy.d.ts.map +1 -0
  133. package/computed-asset-properties/strategies/last-measurement-strategy.d.ts +16 -0
  134. package/computed-asset-properties/strategies/last-measurement-strategy.d.ts.map +1 -0
  135. package/connectivity/abstract-connectivity-node.factory.d.ts.map +1 -1
  136. package/connectivity/actility/actility-tab.factory.d.ts.map +1 -1
  137. package/connectivity/sigfox/sigfox-tab.factory.d.ts.map +1 -1
  138. package/connectivity/sim/sim.module.d.ts.map +1 -1
  139. package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.component.d.ts.map +1 -1
  140. package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.model.d.ts.map +1 -1
  141. package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.module.d.ts.map +1 -1
  142. package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
  143. package/context-dashboard/context-dashboard.model.d.ts +16 -0
  144. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  145. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  146. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  147. package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
  148. package/context-dashboard/dashboard-details-tabs.factory.d.ts.map +1 -1
  149. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
  150. package/context-dashboard/dashboard-settings/dashboard-version-history.component.d.ts.map +1 -1
  151. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
  152. package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts.map +1 -1
  153. package/context-dashboard/device-info-dashboard/device-info-dashboard.module.d.ts.map +1 -1
  154. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.d.ts.map +1 -1
  155. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.d.ts.map +1 -1
  156. package/context-dashboard/new-dashboard.guard.d.ts.map +1 -1
  157. package/context-dashboard/widget-config/appearance-settings.component.d.ts.map +1 -1
  158. package/context-dashboard/widget-config.service.d.ts +11 -1
  159. package/context-dashboard/widget-config.service.d.ts.map +1 -1
  160. package/core/action/action.service.d.ts +1 -1
  161. package/core/action-bar/action-bar.service.d.ts +1 -1
  162. package/core/authentication/simplified-auth.service.d.ts +1 -1
  163. package/core/authentication/simplified-auth.service.d.ts.map +1 -1
  164. package/core/bottom-drawer/bottom-drawer.component.d.ts +16 -2
  165. package/core/bottom-drawer/bottom-drawer.component.d.ts.map +1 -1
  166. package/core/bottom-drawer/bottom-drawer.service.d.ts +13 -5
  167. package/core/bottom-drawer/bottom-drawer.service.d.ts.map +1 -1
  168. package/core/breadcrumb/breadcrumb.service.d.ts +1 -1
  169. package/core/common/extension-hooks.d.ts.map +1 -1
  170. package/core/common/options.service.d.ts +1 -1
  171. package/core/common/service-registry.service.d.ts +1 -1
  172. package/core/common/ui-state.service.d.ts +7 -7
  173. package/core/common/ui-state.service.d.ts.map +1 -1
  174. package/core/common/user-preferences/user-preferences.service.d.ts +4 -4
  175. package/core/common/user-preferences/user-preferences.service.d.ts.map +1 -1
  176. package/core/dashboard/widgets-dashboard.component.d.ts +9 -1
  177. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  178. package/core/data-grid/action-controls-extension.service.d.ts +1 -1
  179. package/core/data-grid/filter-chip/filter-mapper.factory.d.ts +1 -1
  180. package/core/date-picker/date-picker.component.d.ts.map +1 -1
  181. package/core/docs/docs.models.d.ts +1 -1
  182. package/core/docs/docs.module.d.ts +1 -1
  183. package/core/docs/help-and-support-outlet/help-and-support-outlet.module.d.ts +1 -1
  184. package/core/docs/legal-notices-outlet/legal-notices-outlet.module.d.ts +1 -1
  185. package/core/docs/support-outlet/support-outlet.component.d.ts +4 -3
  186. package/core/docs/support-outlet/support-outlet.component.d.ts.map +1 -1
  187. package/core/docs/support-outlet/support-outlet.module.d.ts +1 -1
  188. package/core/drawer/drawer.service.d.ts +1 -1
  189. package/core/dynamic-component/dynamic-component.model.d.ts +18 -4
  190. package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
  191. package/core/dynamic-forms/i18n/translate.extension.d.ts.map +1 -1
  192. package/core/feedback-form/feedback-form.component.d.ts +27 -0
  193. package/core/feedback-form/feedback-form.component.d.ts.map +1 -0
  194. package/core/feedback-form/feedback-form.model.d.ts +6 -0
  195. package/core/feedback-form/feedback-form.model.d.ts.map +1 -0
  196. package/core/feedback-form/index.d.ts +2 -0
  197. package/core/feedback-form/index.d.ts.map +1 -0
  198. package/core/i18n/gettext.d.ts +4 -1
  199. package/core/i18n/gettext.d.ts.map +1 -1
  200. package/core/i18n/pattern-messages.data.d.ts +61 -0
  201. package/core/i18n/pattern-messages.data.d.ts.map +1 -1
  202. package/core/i18n/patterns-message.hook.d.ts +1 -1
  203. package/core/index.d.ts +1 -0
  204. package/core/index.d.ts.map +1 -1
  205. package/core/modal/modal.service.d.ts +0 -1
  206. package/core/modal/modal.service.d.ts.map +1 -1
  207. package/core/navigator/navigator-bottom/navigator-bottom.module.d.ts +1 -1
  208. package/core/navigator/navigator-top/navigator-top.module.d.ts +1 -1
  209. package/core/navigator/navigator.module.d.ts +1 -1
  210. package/core/navigator/navigator.service.d.ts +1 -1
  211. package/core/plugins/index.d.ts +1 -0
  212. package/core/plugins/index.d.ts.map +1 -1
  213. package/core/plugins/plugins-injection-token.d.ts +14 -0
  214. package/core/plugins/plugins-injection-token.d.ts.map +1 -0
  215. package/core/plugins/plugins-loader.service.d.ts +7 -21
  216. package/core/plugins/plugins-loader.service.d.ts.map +1 -1
  217. package/core/plugins/plugins-resolve.service.d.ts +1 -0
  218. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  219. package/core/preview-feature/preview-feature.component.d.ts.map +1 -1
  220. package/core/preview-feature/preview-feature.service.d.ts +1 -1
  221. package/core/provider-configuration/provider-configuration-hook.d.ts +1 -1
  222. package/core/query-param-handler/index.d.ts +1 -1
  223. package/core/query-param-handler/query-param-bottom-drawer.service.d.ts +1 -1
  224. package/core/query-param-handler/query-param-handler.service.d.ts +1 -1
  225. package/core/query-param-handler/query-param-modal-handler.service.d.ts +1 -1
  226. package/core/router/router.service.d.ts +1 -1
  227. package/core/search/search.service.d.ts +1 -1
  228. package/core/stepper/stepper.service.d.ts +1 -1
  229. package/core/tabs/tab.component.d.ts +2 -2
  230. package/core/tabs/tab.component.d.ts.map +1 -1
  231. package/core/tabs/tab.model.d.ts +2 -2
  232. package/core/tabs/tab.model.d.ts.map +1 -1
  233. package/core/tabs/tabs.service.d.ts +1 -1
  234. package/core/tabs/tabs.service.d.ts.map +1 -1
  235. package/core/ui-settings/ui-settings.module.d.ts +1 -1
  236. package/core/user/change-current-user-password.service.d.ts +10 -0
  237. package/core/user/change-current-user-password.service.d.ts.map +1 -0
  238. package/core/user/index.d.ts +1 -0
  239. package/core/user/index.d.ts.map +1 -1
  240. package/core/user/user-details-drawer/user-details-drawer.module.d.ts +1 -1
  241. package/core/user/user-menu.service.d.ts +1 -1
  242. package/core/user/user.module.d.ts +1 -1
  243. package/core/version/version.model.d.ts +1 -1
  244. package/core/version/version.module.d.ts +1 -1
  245. package/core/wizard/wizard.model.d.ts +1 -1
  246. package/dashboard-details-advanced-tab/advanced-tab.factory.d.ts.map +1 -1
  247. package/dashboard-details-advanced-tab/assign-widget-assets/assign-widget-asset-modal.component.d.ts.map +1 -1
  248. package/dashboard-details-advanced-tab/dashboard-json-editor/dashboard-json-editor.component.d.ts.map +1 -1
  249. package/dashboard-details-advanced-tab/dashboard-json-editor/import-export-widgets.service.d.ts.map +1 -1
  250. package/dashboard-manager/dashboard-manager-tabs.factory.d.ts.map +1 -1
  251. package/dashboard-manager/dashboard-manager.service.d.ts.map +1 -1
  252. package/dashboard-manager/devicemanagement/index.d.ts +1 -1
  253. package/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.d.ts.map +1 -1
  254. package/dashboard-manager/type-dashboard-target-assets-modal/type-dashboard-target-assets-modal.component.d.ts.map +1 -1
  255. package/dashboard-manager/type-dashboards-list/device-type-value.grid-column.d.ts.map +1 -1
  256. package/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
  257. package/data-grid-columns/asset-type/asset-type-grid-column.d.ts.map +1 -1
  258. package/data-grid-columns/asset-type/asset-type.cell-renderer.component.d.ts.map +1 -1
  259. package/datapoint-explorer/datapoint-explorer-navigation-factory.d.ts.map +1 -1
  260. package/datapoint-explorer/devicemanagement/index.d.ts +3 -0
  261. package/datapoint-explorer/devicemanagement/index.d.ts.map +1 -1
  262. package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts +4 -2
  263. package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts.map +1 -1
  264. package/datapoint-explorer/view/create-new-report-modal/create-new-report-modal.component.d.ts.map +1 -1
  265. package/datapoint-explorer/view/datapoint-explorer.model.d.ts +1 -0
  266. package/datapoint-explorer/view/datapoint-explorer.model.d.ts.map +1 -1
  267. package/datapoint-explorer/view/index.d.ts +3 -0
  268. package/datapoint-explorer/view/index.d.ts.map +1 -1
  269. package/datapoint-explorer/view/send-as-widget-to-dashboard-modal/send-as-widget-to-dashboard-modal.component.d.ts.map +1 -1
  270. package/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.d.ts.map +1 -1
  271. package/datapoint-library/datapoint-library.module.d.ts.map +1 -1
  272. package/datapoint-library/details/datapoint-library-details.component.d.ts +1 -2
  273. package/datapoint-library/details/datapoint-library-details.component.d.ts.map +1 -1
  274. package/datapoint-library/list/datapoint-library-list.component.d.ts.map +1 -1
  275. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
  276. package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts.map +1 -1
  277. package/datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.d.ts.map +1 -1
  278. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
  279. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -1
  280. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -1
  281. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -1
  282. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
  283. package/default-subscriptions/default-subscriptions-navigation.factory.d.ts.map +1 -1
  284. package/default-subscriptions/default-subscriptions.component.d.ts.map +1 -1
  285. package/device-grid/columns/alarms.cell-renderer.component.d.ts.map +1 -1
  286. package/device-grid/columns/alarms.device-grid-column.d.ts.map +1 -1
  287. package/device-grid/columns/group.device-grid-column.d.ts.map +1 -1
  288. package/device-grid/columns/imei.device-grid-column.d.ts.map +1 -1
  289. package/device-grid/columns/model.device-grid-column.d.ts.map +1 -1
  290. package/device-grid/columns/name.device-grid-column.d.ts.map +1 -1
  291. package/device-grid/columns/registration-date.device-grid-column.d.ts.map +1 -1
  292. package/device-grid/columns/serial-number.device-grid-column.d.ts.map +1 -1
  293. package/device-grid/columns/status.device-grid-column.d.ts.map +1 -1
  294. package/device-grid/columns/system-id.device-grid-column.d.ts.map +1 -1
  295. package/device-grid/columns/type.device-grid-column.d.ts.map +1 -1
  296. package/device-grid/device-grid.component.d.ts.map +1 -1
  297. package/device-grid/device-grid.service.d.ts.map +1 -1
  298. package/device-list/add-smart-group.component.d.ts.map +1 -1
  299. package/device-list/device-list-navigation.factory.d.ts.map +1 -1
  300. package/device-list/devices.breadcrumb-factory.d.ts.map +1 -1
  301. package/device-map/device-map-navigation.factory.d.ts.map +1 -1
  302. package/device-profile/add-device-profile.component.d.ts.map +1 -1
  303. package/device-profile/device-profile-list.component.d.ts.map +1 -1
  304. package/device-profile/device-profile-navigation.factory.d.ts.map +1 -1
  305. package/device-profile/device-profile.component.d.ts.map +1 -1
  306. package/device-profile/device-profile.service.d.ts.map +1 -1
  307. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts.map +1 -1
  308. package/device-profile/select-configuration-modal.component.d.ts.map +1 -1
  309. package/device-protocols/device-protocols.guard.d.ts.map +1 -1
  310. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -1
  311. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
  312. package/device-shell/device-shell.module.d.ts.map +1 -1
  313. package/device-shell/shared/device-shell.service.d.ts.map +1 -1
  314. package/device-shell/shell/shell.component.d.ts.map +1 -1
  315. package/diagnostics/diagnostics.module.d.ts.map +1 -1
  316. package/diagnostics/diagnostics.service.d.ts.map +1 -1
  317. package/echart/services/echarts-options.service.d.ts +2 -3
  318. package/echart/services/echarts-options.service.d.ts.map +1 -1
  319. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  320. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  321. package/ecosystem/application-plugins/apps-to-update-remotes-select.component.d.ts.map +1 -1
  322. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -1
  323. package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
  324. package/ecosystem/application-plugins/plugin-list.service.d.ts.map +1 -1
  325. package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
  326. package/ecosystem/application-properties/application-properties.component.d.ts.map +1 -1
  327. package/ecosystem/application-properties/subscription-modal/subscription-modal.component.d.ts.map +1 -1
  328. package/ecosystem/ecosystem-tabs.factory.d.ts.map +1 -1
  329. package/ecosystem/license-confirm/license-confirm-modal.component.d.ts.map +1 -1
  330. package/ecosystem/license-confirm/license-view.component.d.ts.map +1 -1
  331. package/ecosystem/microservices/add-microservice.component.d.ts.map +1 -1
  332. package/ecosystem/packages/add-package.component.d.ts.map +1 -1
  333. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
  334. package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
  335. package/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.d.ts.map +1 -1
  336. package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
  337. package/ecosystem/plugin-setup-stepper/plugin-setup-stepper.module.d.ts.map +1 -1
  338. package/ecosystem/shared/add-application.component.d.ts.map +1 -1
  339. package/ecosystem/shared/application-card.component.d.ts.map +1 -1
  340. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -1
  341. package/ecosystem/shared/ecosystem.constants.d.ts.map +1 -1
  342. package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
  343. package/ecosystem/shared/package-availability.service.d.ts.map +1 -1
  344. package/ecosystem/shared/package-version-select/package-version-select.component.d.ts.map +1 -1
  345. package/ecosystem/shared/upload-archive.component.d.ts.map +1 -1
  346. package/editor/editor.component.d.ts +16 -0
  347. package/editor/editor.component.d.ts.map +1 -1
  348. package/exports/index.d.ts +1 -1
  349. package/exports/index.d.ts.map +1 -1
  350. package/exports/list/exports-grid.service.d.ts.map +1 -1
  351. package/exports/list/exports-list/exports-list.component.d.ts.map +1 -1
  352. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +2 -1
  353. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  354. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +8 -7
  355. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  356. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +2 -1
  357. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  358. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +2 -1
  359. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  360. package/fesm2022/c8y-ngx-components-alarms.mjs +40 -2
  361. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  362. package/fesm2022/c8y-ngx-components-asset-properties.mjs +608 -97
  363. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  364. package/fesm2022/c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs.map +1 -1
  365. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +70 -23
  366. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  367. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +2 -1
  368. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  369. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +2 -1
  370. package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
  371. package/fesm2022/c8y-ngx-components-bookmarks.mjs +2 -1
  372. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  373. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +2 -1
  374. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
  375. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +3 -3
  376. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
  377. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +2 -1
  378. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
  379. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +22 -12
  380. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  381. package/fesm2022/c8y-ngx-components-child-devices.mjs +2 -1
  382. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  383. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +2 -1
  384. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  385. package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BOpIFCYh.mjs +68 -0
  386. package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BOpIFCYh.mjs.map +1 -0
  387. package/fesm2022/c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-D8otkLI8.mjs +73 -0
  388. package/fesm2022/c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-D8otkLI8.mjs.map +1 -0
  389. package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-AVm6qa9k.mjs +44 -0
  390. package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-AVm6qa9k.mjs.map +1 -0
  391. package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CtUoKGuU.mjs +91 -0
  392. package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CtUoKGuU.mjs.map +1 -0
  393. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +643 -0
  394. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs.map +1 -0
  395. package/fesm2022/c8y-ngx-components-connectivity.mjs +2 -1
  396. package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
  397. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +2 -1
  398. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
  399. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BkcNSexF.mjs} +3 -2
  400. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BkcNSexF.mjs.map +1 -0
  401. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-D9W68e7h.mjs} +3 -2
  402. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-version-history.component-D9W68e7h.mjs.map +1 -0
  403. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +45 -12
  404. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  405. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0lATUjO.mjs} +12 -8
  406. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0lATUjO.mjs.map +1 -0
  407. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +4 -3
  408. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
  409. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +2 -1
  410. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  411. package/fesm2022/c8y-ngx-components-data-broker.mjs +2 -1
  412. package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
  413. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +2 -1
  414. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  415. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +2 -1
  416. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  417. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs +38 -9
  418. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
  419. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +58 -53
  420. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  421. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +2 -1
  422. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  423. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +2 -1
  424. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  425. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +2 -1
  426. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  427. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +2 -1
  428. package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
  429. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -1
  430. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  431. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +2 -1
  432. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  433. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +2 -1
  434. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  435. package/fesm2022/c8y-ngx-components-device-grid.mjs +3 -3
  436. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  437. package/fesm2022/c8y-ngx-components-device-list.mjs +2 -1
  438. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  439. package/fesm2022/c8y-ngx-components-device-map.mjs +2 -1
  440. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  441. package/fesm2022/c8y-ngx-components-device-profile.mjs +2 -1
  442. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  443. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -2
  444. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
  445. package/fesm2022/c8y-ngx-components-device-protocols.mjs +2 -1
  446. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  447. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +2 -1
  448. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  449. package/fesm2022/c8y-ngx-components-device-shell.mjs +2 -1
  450. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  451. package/fesm2022/c8y-ngx-components-diagnostics.mjs +2 -1
  452. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  453. package/fesm2022/c8y-ngx-components-echart.mjs +6 -8
  454. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  455. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +2 -1
  456. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  457. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +2 -1
  458. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  459. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +2 -1
  460. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
  461. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +2 -1
  462. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  463. package/fesm2022/c8y-ngx-components-ecosystem.mjs +2 -1
  464. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  465. package/fesm2022/c8y-ngx-components-editor.mjs +39 -1
  466. package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
  467. package/fesm2022/c8y-ngx-components-events.mjs +1 -1
  468. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  469. package/fesm2022/c8y-ngx-components-exports-list.mjs +2 -1
  470. package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
  471. package/fesm2022/c8y-ngx-components-exports.mjs +2 -1
  472. package/fesm2022/c8y-ngx-components-exports.mjs.map +1 -1
  473. package/fesm2022/c8y-ngx-components-file-preview.mjs +2 -1
  474. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  475. package/fesm2022/c8y-ngx-components-files-repository.mjs +2 -1
  476. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  477. package/fesm2022/c8y-ngx-components-icon-selector.mjs +2 -1
  478. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  479. package/fesm2022/c8y-ngx-components-location.mjs +2 -1
  480. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  481. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +2 -1
  482. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  483. package/fesm2022/c8y-ngx-components-map.mjs +2 -1
  484. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  485. package/fesm2022/c8y-ngx-components-messaging-management.mjs +2 -1
  486. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
  487. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +2 -1
  488. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  489. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +2 -1
  490. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  491. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +2 -1
  492. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  493. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +2 -1
  494. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  495. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +2 -1
  496. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  497. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +2 -1
  498. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
  499. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +2 -1
  500. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  501. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +2 -1
  502. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  503. package/fesm2022/c8y-ngx-components-operations-shared.mjs +2 -1
  504. package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
  505. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +4 -4
  506. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  507. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +4 -4
  508. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  509. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +4 -4
  510. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  511. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +4 -4
  512. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  513. package/fesm2022/c8y-ngx-components-operations.mjs +2 -1
  514. package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
  515. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +2 -1
  516. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
  517. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +2 -1
  518. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  519. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +2 -1
  520. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  521. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs +1 -1
  522. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs.map +1 -1
  523. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +2 -1
  524. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  525. package/fesm2022/c8y-ngx-components-register-device.mjs +2 -1
  526. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  527. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +3 -3
  528. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
  529. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +2 -1
  530. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
  531. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +2 -1
  532. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  533. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +2 -1
  534. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
  535. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +2 -1
  536. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
  537. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +3 -3
  538. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  539. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +2 -1
  540. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
  541. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +2 -1
  542. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  543. package/fesm2022/c8y-ngx-components-replace-device.mjs +2 -1
  544. package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
  545. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +2 -1
  546. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  547. package/fesm2022/c8y-ngx-components-reports.mjs +2 -1
  548. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  549. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +2 -1
  550. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  551. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +2 -1
  552. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  553. package/fesm2022/c8y-ngx-components-repository-shared.mjs +3 -2
  554. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  555. package/fesm2022/c8y-ngx-components-repository-software.mjs +2 -1
  556. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  557. package/fesm2022/c8y-ngx-components-search.mjs +2 -1
  558. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  559. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +2 -1
  560. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
  561. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +3 -2
  562. package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
  563. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +2 -1
  564. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
  565. package/fesm2022/c8y-ngx-components-services-shared.mjs +1 -1
  566. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
  567. package/fesm2022/c8y-ngx-components-services.mjs +2 -1
  568. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  569. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +2 -1
  570. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  571. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +3 -2
  572. package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  573. package/fesm2022/c8y-ngx-components-sub-assets.mjs +13 -9
  574. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  575. package/fesm2022/c8y-ngx-components-tenants.mjs +37 -37
  576. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  577. package/fesm2022/c8y-ngx-components-tracking.mjs +2 -1
  578. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
  579. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +5 -5
  580. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  581. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +2 -1
  582. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  583. package/fesm2022/c8y-ngx-components-upgrade.mjs +10 -3
  584. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  585. package/fesm2022/c8y-ngx-components-user-roles.mjs +2 -1
  586. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  587. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +2 -1
  588. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  589. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +2 -1
  590. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  591. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +2 -1
  592. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  593. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs +2 -1
  594. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
  595. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs +2 -1
  596. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
  597. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs +2 -1
  598. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
  599. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs +2 -1
  600. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
  601. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +2 -1
  602. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  603. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +2 -1
  604. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  605. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs +2 -1
  606. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
  607. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs +1 -1
  608. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
  609. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs +2 -1
  610. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
  611. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +3 -3
  612. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  613. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +3 -6
  614. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
  615. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +2 -1
  616. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  617. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +2 -1
  618. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  619. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs +2 -1
  620. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  621. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +2 -1
  622. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  623. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +2 -2
  624. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  625. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs +2 -1
  626. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs.map +1 -1
  627. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +2 -1
  628. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  629. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs +2 -1
  630. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  631. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs +2 -1
  632. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
  633. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +2 -1
  634. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  635. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +2 -1
  636. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  637. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +9 -6
  638. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  639. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -1
  640. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  641. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +2 -1
  642. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  643. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +2 -1
  644. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  645. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +2 -1
  646. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
  647. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +13 -8
  648. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  649. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +2 -1
  650. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  651. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +2 -1
  652. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  653. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +2 -1
  654. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  655. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +2 -1
  656. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  657. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +2 -1
  658. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
  659. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +2 -1
  660. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  661. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs +3 -10
  662. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs.map +1 -1
  663. package/fesm2022/c8y-ngx-components.mjs +789 -531
  664. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  665. package/file-preview/file-preview.component.d.ts.map +1 -1
  666. package/files-repository/files-repository-navigation.factory.d.ts.map +1 -1
  667. package/files-repository/files-repository-upload.component.d.ts.map +1 -1
  668. package/files-repository/files-repository.component.d.ts.map +1 -1
  669. package/files-repository/files-repository.service.d.ts +1 -2
  670. package/files-repository/files-repository.service.d.ts.map +1 -1
  671. package/icon-selector/icon-selector-modal/icon-selector-modal.component.d.ts.map +1 -1
  672. package/icon-selector/icon-selector.component.d.ts.map +1 -1
  673. package/locales/de.po +105 -12
  674. package/locales/es.po +105 -12
  675. package/locales/fr.po +105 -12
  676. package/locales/ja_JP.po +99 -12
  677. package/locales/ko.po +104 -12
  678. package/locales/locales.pot +97 -12
  679. package/locales/nl.po +105 -12
  680. package/locales/pl.po +105 -12
  681. package/locales/pt_BR.po +105 -12
  682. package/locales/zh_CN.po +104 -12
  683. package/locales/zh_TW.po +104 -12
  684. package/location/location-tab.factory.d.ts.map +1 -1
  685. package/location/location.component.d.ts.map +1 -1
  686. package/loriot-device-registration/loriot-device-registration.component.d.ts.map +1 -1
  687. package/loriot-device-registration/loriot-provider.service.d.ts.map +1 -1
  688. package/map/map.component.d.ts.map +1 -1
  689. package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts.map +1 -1
  690. package/messaging-management/messaging/shared/usage/usage.component.d.ts.map +1 -1
  691. package/messaging-management/messaging/topic/topic-list-view.component.d.ts.map +1 -1
  692. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts.map +1 -1
  693. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts.map +1 -1
  694. package/messaging-management/messaging/topic/topics-data-grid.service.d.ts.map +1 -1
  695. package/messaging-management/navigator/messaging-navigator-factory.d.ts.map +1 -1
  696. package/messaging-management/navigator/topic-details-tab.factory.d.ts.map +1 -1
  697. package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts.map +1 -1
  698. package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts.map +1 -1
  699. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
  700. package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts.map +1 -1
  701. package/operations/bulk-single-operations-list/single-operation-item.component.d.ts.map +1 -1
  702. package/operations/bulk-single-operations-list/single-operations-list.component.d.ts.map +1 -1
  703. package/operations/factories/bulk-operations-tab.factory.d.ts.map +1 -1
  704. package/operations/grid-columns/creation-time.grid-column.d.ts.map +1 -1
  705. package/operations/grid-columns/device.grid-column.d.ts.map +1 -1
  706. package/operations/grid-columns/failure-reason.grid-column.d.ts.map +1 -1
  707. package/operations/grid-columns/status.grid-column.d.ts.map +1 -1
  708. package/operations/operations-list/device-control.feature.d.ts.map +1 -1
  709. package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
  710. package/operations/operations-list/operations-list.component.d.ts.map +1 -1
  711. package/operations/operations-list/single-operations-tab.factory.d.ts.map +1 -1
  712. package/operations/operations-list-item-details/operation-details-tabs.component.d.ts.map +1 -1
  713. package/operations/shared/nav.factory.d.ts.map +1 -1
  714. package/operations/shared/operations.service.d.ts.map +1 -1
  715. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts.map +1 -1
  716. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts.map +1 -1
  717. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts.map +1 -1
  718. package/operations/stepper-bulk-type-software/select-software-step.component.d.ts.map +1 -1
  719. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts.map +1 -1
  720. package/package.json +1 -1
  721. package/pending-mo-request/pending-mo-request-interceptor.d.ts.map +1 -1
  722. package/pending-mo-request/pending-mo-request.service.d.ts.map +1 -1
  723. package/platform-configuration/platform-configuration-form-provider.service.d.ts.map +1 -1
  724. package/protocol-lpwan/lpwan-protocol.module.d.ts.map +1 -1
  725. package/protocol-lpwan/lpwan-set-connections.component.d.ts.map +1 -1
  726. package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts.map +1 -1
  727. package/protocol-lpwan/multiple-lns-connectors/actility-multiple-lns-connector.component.d.ts.map +1 -1
  728. package/protocol-lpwan/multiple-lns-connectors/connection-info-with-download-csv.component.d.ts.map +1 -1
  729. package/protocol-lpwan/multiple-lns-connectors/loriot/loriot-multiple-lns-connector.component.d.ts.map +1 -1
  730. package/protocol-lpwan/multiple-lns-connectors/no-connections-found.component.d.ts.map +1 -1
  731. package/protocol-lpwan/multiple-lns-connectors/sigfox-multiple-lns-connector.component.d.ts.map +1 -1
  732. package/protocol-opcua/opcua-address-space.component.d.ts.map +1 -1
  733. package/protocol-opcua/opcua-device-protocol-detail.component.d.ts.map +1 -1
  734. package/protocol-opcua/opcua-server-config.component.d.ts.map +1 -1
  735. package/protocol-opcua/opcua-servers.component.d.ts.map +1 -1
  736. package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
  737. package/register-device/device-registration-view.component.d.ts.map +1 -1
  738. package/register-device/extensible/base-extensible-device-registration.service.d.ts.map +1 -1
  739. package/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.d.ts.map +1 -1
  740. package/register-device/extensible/bulk/extensible-bulk-device-registration.service.d.ts.map +1 -1
  741. package/register-device/extensible/single/extensible-device-registration-modal.component.d.ts.map +1 -1
  742. package/register-device/extensible/single/extensible-device-registration-stepper.component.d.ts.map +1 -1
  743. package/register-device/extensible/single/extensible-device-registration.service.d.ts.map +1 -1
  744. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  745. package/register-device/register-device-navigation.factory.d.ts.map +1 -1
  746. package/register-device/register-device.service.d.ts.map +1 -1
  747. package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts.map +1 -1
  748. package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts.map +1 -1
  749. package/remote-access/passthrough/index.d.ts +1 -1
  750. package/remote-access/passthrough/index.d.ts.map +1 -1
  751. package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts.map +1 -1
  752. package/remote-access/ssh/index.d.ts.map +1 -1
  753. package/remote-access/telnet/index.d.ts.map +1 -1
  754. package/remote-access/vnc/index.d.ts.map +1 -1
  755. package/replace-device/replace-device-grid-action.factory.d.ts.map +1 -1
  756. package/replace-device/replace-device-wizard/replace-device-wizard.component.d.ts.map +1 -1
  757. package/replace-device/replace-device-wizard/replace-device-wizard.service.d.ts.map +1 -1
  758. package/replace-device/replace-device.service.d.ts.map +1 -1
  759. package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
  760. package/report-dashboard/report-dashboard-navigation.factory.d.ts.map +1 -1
  761. package/reports/export-schedules.component.d.ts.map +1 -1
  762. package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts.map +1 -1
  763. package/repository/configuration/device-tab/save-to-repository.component.d.ts.map +1 -1
  764. package/repository/configuration/device-tab/text-based-configuration.component.d.ts.map +1 -1
  765. package/repository/configuration/list/configuration-detail.component.d.ts.map +1 -1
  766. package/repository/configuration/list/configuration-list.component.d.ts.map +1 -1
  767. package/repository/configuration/list/configuration-repository-navigation-factory.d.ts.map +1 -1
  768. package/repository/firmware/device-tab/firmware-device-tab.component.d.ts.map +1 -1
  769. package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts.map +1 -1
  770. package/repository/firmware/list/add-firmware-modal.component.d.ts.map +1 -1
  771. package/repository/firmware/list/add-firmware-patch-modal.component.d.ts.map +1 -1
  772. package/repository/firmware/list/firmware-details.component.d.ts.map +1 -1
  773. package/repository/firmware/list/firmware-list.component.d.ts.map +1 -1
  774. package/repository/firmware/list/firmware-repository-navigation-factory.d.ts.map +1 -1
  775. package/repository/shared/columns/description.grid-column.d.ts.map +1 -1
  776. package/repository/shared/columns/device-type.grid-column.d.ts.map +1 -1
  777. package/repository/shared/columns/file.grid-column.d.ts.map +1 -1
  778. package/repository/shared/columns/name.grid-column.d.ts.map +1 -1
  779. package/repository/shared/columns/type.filtering-form-renderer.component.d.ts.map +1 -1
  780. package/repository/shared/columns/type.grid-column.d.ts.map +1 -1
  781. package/repository/shared/columns/versions.grid-column.d.ts.map +1 -1
  782. package/repository/shared/repository.service.d.ts.map +1 -1
  783. package/repository/shared/select-modal/repository-select-modal.component.d.ts +1 -1
  784. package/repository/shared/select-modal/repository-select-modal.component.d.ts.map +1 -1
  785. package/repository/shared/software-type/software-type.component.d.ts.map +1 -1
  786. package/repository/software/device-tab/installed-software.component.d.ts.map +1 -1
  787. package/repository/software/device-tab/software-repository-device-tab.module.d.ts.map +1 -1
  788. package/repository/software/list/add-software-modal.component.d.ts.map +1 -1
  789. package/repository/software/list/software-details.component.d.ts.map +1 -1
  790. package/repository/software/list/software-list.component.d.ts.map +1 -1
  791. package/repository/software/list/software-repository-navigation-factory.d.ts.map +1 -1
  792. package/search/columns/asset-type-search-grid-column.d.ts.map +1 -1
  793. package/search/search-grid.component.d.ts.map +1 -1
  794. package/search/search-results.component.d.ts.map +1 -1
  795. package/sensor-phone/connect-smartphone.factory.d.ts.map +1 -1
  796. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts.map +1 -1
  797. package/sensor-phone/sensor-phone-modal/sensor-phone.service.d.ts.map +1 -1
  798. package/services/service-command-tab/service-command.feature.d.ts.map +1 -1
  799. package/services/services-device-tab/columns/last-updated-date.device-grid-column.d.ts.map +1 -1
  800. package/services/services-device-tab/columns/name.grid-column.d.ts.map +1 -1
  801. package/services/services-device-tab/columns/service-type.grid-column.d.ts.map +1 -1
  802. package/services/services-device-tab/columns/status.grid-column.d.ts.map +1 -1
  803. package/services/services-device-tab/services-device-tab.component.d.ts.map +1 -1
  804. package/services/services-device-tab/services-device-tab.module.d.ts.map +1 -1
  805. package/services/services-device-tab/services.breadcrumb-factory.d.ts.map +1 -1
  806. package/services/shared/service-command.service.d.ts.map +1 -1
  807. package/services/status-options/status-options.model.d.ts.map +1 -1
  808. package/sigfox-device-registration/sigfox-device-registration.component.d.ts.map +1 -1
  809. package/sigfox-device-registration/sigfox-provider.service.d.ts.map +1 -1
  810. package/sms-gateway/sms-gateway.module.d.ts.map +1 -1
  811. package/sub-assets/add-group/add-group.component.d.ts.map +1 -1
  812. package/sub-assets/asset-properties-item.component.d.ts.map +1 -1
  813. package/sub-assets/asset-properties.component.d.ts.map +1 -1
  814. package/sub-assets/assign-devices/assign-child-devices.component.d.ts.map +1 -1
  815. package/sub-assets/assign-devices/assign-devices.component.d.ts.map +1 -1
  816. package/sub-assets/delete-assets-modal/delete-assets-modal.component.d.ts.map +1 -1
  817. package/sub-assets/group-info.component.d.ts.map +1 -1
  818. package/sub-assets/sub-assets-grid.component.d.ts.map +1 -1
  819. package/sub-assets/sub-assets.component.d.ts.map +1 -1
  820. package/sub-assets/sub-assets.module.d.ts.map +1 -1
  821. package/sub-assets/sub-assets.service.d.ts.map +1 -1
  822. package/sub-assets/unassign-assets-modal/unassign-modal.component.d.ts.map +1 -1
  823. package/tenants/custom-properties/custom-properties.component.d.ts.map +1 -1
  824. package/tenants/tenant-form/tenant-form.component.d.ts.map +1 -1
  825. package/tenants/tenant-limits/tenant-limits.component.d.ts.map +1 -1
  826. package/tenants/tenant-list/creation-time.filtering-form-renderer.component.d.ts.map +1 -1
  827. package/tenants/tenant-list/tenant-list.component.d.ts.map +1 -1
  828. package/tenants/tenants-navigation.factory.d.ts.map +1 -1
  829. package/tenants/tenants.module.d.ts.map +1 -1
  830. package/tracking/tracking.feature.d.ts.map +1 -1
  831. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -1
  832. package/trusted-certificates/crl/crl-check-settings.component.d.ts.map +1 -1
  833. package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
  834. package/trusted-certificates/factories/tabs.factory.d.ts.map +1 -1
  835. package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts.map +1 -1
  836. package/trusted-certificates/list/add-trusted-certificate.component.d.ts.map +1 -1
  837. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  838. package/upgrade/auth-bridge.service.d.ts.map +1 -1
  839. package/upgrade/bridge.service.d.ts.map +1 -1
  840. package/upgrade/ng1/downgraded.services.d.ts +1 -0
  841. package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
  842. package/upgrade/ng1/index.d.ts.map +1 -1
  843. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
  844. package/widgets/cockpit/index.d.ts +4 -4
  845. package/widgets/definitions/alarms/alarm-list/index.d.ts +1 -1
  846. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  847. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +1 -1
  848. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
  849. package/widgets/definitions/alarms/recent-alarms/index.d.ts +1 -1
  850. package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
  851. package/widgets/definitions/applications/index.d.ts +1 -1
  852. package/widgets/definitions/applications/index.d.ts.map +1 -1
  853. package/widgets/definitions/asset-notes/index.d.ts +1 -1
  854. package/widgets/definitions/asset-notes/index.d.ts.map +1 -1
  855. package/widgets/definitions/cockpit-legacy-welcome/index.d.ts +1 -1
  856. package/widgets/definitions/cockpit-legacy-welcome/index.d.ts.map +1 -1
  857. package/widgets/definitions/cockpit-welcome/index.d.ts +1 -1
  858. package/widgets/definitions/cockpit-welcome/index.d.ts.map +1 -1
  859. package/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.d.ts.map +1 -1
  860. package/widgets/definitions/datapoints-graph/index.d.ts +1 -1
  861. package/widgets/definitions/datapoints-table/index.d.ts +1 -1
  862. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  863. package/widgets/definitions/device-control-message/index.d.ts +1 -1
  864. package/widgets/definitions/device-control-message/index.d.ts.map +1 -1
  865. package/widgets/definitions/help-and-service/index.d.ts +1 -1
  866. package/widgets/definitions/help-and-service/index.d.ts.map +1 -1
  867. package/widgets/definitions/html-widget/html-widget.factory.d.ts.map +1 -1
  868. package/widgets/definitions/html-widget/index.d.ts +1 -1
  869. package/widgets/definitions/image/index.d.ts +5 -3
  870. package/widgets/definitions/image/index.d.ts.map +1 -1
  871. package/widgets/definitions/info-gauge/index.d.ts +2 -3
  872. package/widgets/definitions/info-gauge/index.d.ts.map +1 -1
  873. package/widgets/definitions/kpi/index.d.ts +1 -1
  874. package/widgets/definitions/kpi/index.d.ts.map +1 -1
  875. package/widgets/definitions/linear-gauge/index.d.ts +1 -1
  876. package/widgets/definitions/linear-gauge/index.d.ts.map +1 -1
  877. package/widgets/definitions/map/index.d.ts +1 -1
  878. package/widgets/definitions/map/index.d.ts.map +1 -1
  879. package/widgets/definitions/markdown/index.d.ts +5 -3
  880. package/widgets/definitions/markdown/index.d.ts.map +1 -1
  881. package/widgets/definitions/quick-links/index.d.ts +1 -1
  882. package/widgets/definitions/quick-links/index.d.ts.map +1 -1
  883. package/widgets/definitions/radial-gauge/index.d.ts +1 -1
  884. package/widgets/definitions/radial-gauge/index.d.ts.map +1 -1
  885. package/widgets/definitions/silo/index.d.ts +1 -1
  886. package/widgets/definitions/silo/index.d.ts.map +1 -1
  887. package/widgets/definitions/three-d-rotation/index.d.ts +1 -1
  888. package/widgets/definitions/three-d-rotation/index.d.ts.map +1 -1
  889. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  890. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  891. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  892. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  893. package/widgets/implementations/cockpit-welcome/welcome.component.d.ts +3 -2
  894. package/widgets/implementations/cockpit-welcome/welcome.component.d.ts.map +1 -1
  895. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
  896. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -1
  897. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  898. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -1
  899. package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -1
  900. package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts.map +1 -1
  901. package/widgets/implementations/device-management-welcome/welcome.component.d.ts.map +1 -1
  902. package/widgets/implementations/help-and-service-widget/help-and-service-view/help-and-service-view.component.d.ts.map +1 -1
  903. package/widgets/implementations/html-widget/advanced-settings/advanced-settings.component.d.ts.map +1 -1
  904. package/widgets/implementations/html-widget/html-widget-config.service.d.ts.map +1 -1
  905. package/widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.d.ts +5 -3
  906. package/widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.d.ts.map +1 -1
  907. package/widgets/implementations/image/image-widget-config/image-widget-config.component.d.ts.map +1 -1
  908. package/widgets/implementations/image/image-widget.service.d.ts +1 -2
  909. package/widgets/implementations/image/image-widget.service.d.ts.map +1 -1
  910. package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts.map +1 -1
  911. package/widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.d.ts.map +1 -1
  912. package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
  913. package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
  914. package/widgets/implementations/markdown/markdown-widget-config/markdown-widget-config.component.d.ts.map +1 -1
  915. package/widgets/implementations/markdown/markdown-widget.service.d.ts.map +1 -1
  916. package/widgets/implementations/quick-links/quick-links-widget-config/quick-links-widget-config.component.d.ts.map +1 -1
  917. package/widgets/import-export-config/config-target-export.d.ts +3 -1
  918. package/widgets/import-export-config/config-target-export.d.ts.map +1 -1
  919. package/widgets/import-export-config/config-target-import.d.ts +3 -1
  920. package/widgets/import-export-config/config-target-import.d.ts.map +1 -1
  921. package/widgets/import-export-config/device-import-export.d.ts +3 -1
  922. package/widgets/import-export-config/device-import-export.d.ts.map +1 -1
  923. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs.map +0 -1
  924. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs.map +0 -1
  925. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-assets-navigator.mjs","sources":["../../assets-navigator/action.enum.ts","../../assets-navigator/load-more-node.ts","../../assets-navigator/asset-node.ts","../../assets-navigator/dynamic-group-node.ts","../../assets-navigator/asset-node-config.model.ts","../../assets-navigator/group.service.ts","../../assets-navigator/asset-node.service.ts","../../assets-navigator/asset-node.factory.ts","../../assets-navigator/asset-selector/group-node.ts","../../assets-navigator/asset-selector/group-node.service.ts","../../assets-navigator/asset-selector/asset-selector.service.ts","../../assets-navigator/asset-selector/asset-selector-node.component.ts","../../assets-navigator/asset-selector/asset-selector-node.component.html","../../assets-navigator/asset-selector/asset-selector-base.ts","../../assets-navigator/asset-selector/asset-selector.model.ts","../../assets-navigator/asset-selector/unassigned-devices-node.ts","../../assets-navigator/asset-selector/asset-selector.component.ts","../../assets-navigator/asset-selector/asset-selector.component.html","../../assets-navigator/asset-selector/miller-view.component.ts","../../assets-navigator/asset-selector/miller-view.component.html","../../assets-navigator/asset-selector/asset-selector.module.ts","../../assets-navigator/assets-navigator.module.ts","../../assets-navigator/c8y-ngx-components-assets-navigator.ts"],"sourcesContent":["export enum AssetsNavigatorAction {\n FETCH,\n NEXT,\n REFRESH,\n LOADING_DONE\n}\n","import { NavigatorNode, gettext } from '@c8y/ngx-components';\n\nexport class LoadMoreNode extends NavigatorNode {\n static NAME = 'LoadMoreNode';\n label = gettext('Load more');\n icon = 'plus';\n droppable = true;\n\n constructor() {\n super();\n this.priority = -Infinity;\n }\n\n toString() {\n return LoadMoreNode.NAME;\n }\n\n isGroup() {\n return false;\n }\n}\n","import { IIdentified, Paging } from '@c8y/client';\nimport {\n ClickOptions,\n DeviceStatusComponent,\n gettext,\n GroupFragment,\n NavigatorNode,\n NavigatorNodeData\n} from '@c8y/ngx-components';\nimport { debounce } from 'lodash-es';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\nimport { AssetsNavigatorAction } from './action.enum';\nimport { AssetNodeMo, AssetNodeService } from './asset-node.service';\nimport { LoadMoreNode } from './load-more-node';\n\nexport class AssetNode extends NavigatorNode {\n static NAME = 'AssetNode';\n root: boolean;\n mo: any;\n hideDevices = false;\n filterQuery$ = new BehaviorSubject<string>('');\n showChildDevices = false;\n\n /**\n * Asset node children (subentries).\n */\n children: AssetNode[] = [];\n\n get hasChildren() {\n return this.root || this.service.isGroup(this.mo);\n }\n\n get isDevice() {\n return !!this.mo.c8y_IsDevice;\n }\n\n get isDeviceOrProbablyChildDevice() {\n return this.isDevice || this.isNeitherDeviceOrGroup;\n }\n\n get isNeitherDeviceOrGroup() {\n return (\n !this.service.isGroup(this.mo) &&\n !this.service.isDynamicGroup(this.mo) &&\n !this.isDevice &&\n !this.root\n );\n }\n\n events: Subject<AssetsNavigatorAction>;\n nodesFetched: Subject<void> = new Subject();\n protected paging: Paging<AssetNodeMo>;\n protected loadMoreNode: LoadMoreNode;\n private onUpdateSubscription: Subscription;\n\n constructor(\n protected service: AssetNodeService,\n protected config: NavigatorNodeData = {}\n ) {\n super(config);\n\n this.root = this.root || false;\n this.hideDevices = config.hideDevices ?? this.hideDevices;\n this.mo = this.mo || {};\n this.path = this.getPath();\n this.draggable = !this.service?.moduleConfig?.disableDragAndDrop && !this.root;\n this.droppable =\n !this.service?.moduleConfig?.disableDragAndDrop && !this.isDeviceOrProbablyChildDevice;\n this.routerLinkExact = this.root;\n this.updateIcon(false);\n this.onUpdateSubscription = this.service\n .onUpdate(this)\n .subscribe(({ data, method }) => this.refresh(data, method));\n this.setLabel();\n this.iconComponent = this.isDeviceOrProbablyChildDevice ? DeviceStatusComponent : undefined;\n }\n\n getPath() {\n if (this.config.path) {\n return this.config.path;\n }\n\n return this.root\n ? 'group'\n : this.isDeviceOrProbablyChildDevice\n ? `device/${this.mo.id}`\n : `group/${this.mo.id}`;\n }\n\n refresh(mo: any = {}, method = 'GET') {\n if (mo?.id === this.mo.id) {\n this.mo = mo;\n this.setLabel();\n } else if (method === 'DELETE') {\n this.parents.forEach((node: AssetNode) => node.refresh());\n return;\n }\n if (this.events) {\n this.events.next(AssetsNavigatorAction.REFRESH);\n }\n }\n\n setLabel() {\n if (this.config.label || this.root) {\n this.label = this.config.label || gettext('Groups');\n this.translateLabel = true;\n } else {\n this.label = this.service.label(this.mo);\n this.translateLabel = false;\n }\n }\n\n click(options: ClickOptions = {}) {\n if (this.isDeviceOrProbablyChildDevice && !this.showChildDevices) {\n this.service.preferBreadcrumb(this.parents);\n return;\n }\n this.hookEvents();\n this.updateIcon(options.open);\n if (options.open) {\n this.events.next(AssetsNavigatorAction.FETCH);\n }\n }\n\n sort() {\n this.children.sort((a, b) => {\n if (a.priority > b.priority) {\n return -1;\n } else if (a.priority < b.priority) {\n return 1;\n } else {\n return 0;\n }\n });\n }\n\n addManagedObject(mo) {\n const { childAdditions } = this.mo;\n if (!this.isChildAddition(childAdditions, mo)) {\n this.add(this.service.createChildNode(mo, { hideDevices: this.hideDevices }));\n }\n }\n\n isChildAddition(childAdditions, mo) {\n return (\n childAdditions && childAdditions.references.some(({ managedObject: { id } }) => id === mo.id)\n );\n }\n\n destroy() {\n this.onUpdateSubscription.unsubscribe();\n }\n\n get canDrop() {\n const nodeToMove = this.service.draggedData;\n if (nodeToMove) {\n const shouldGetChildOfItsOwn = !!nodeToMove.find(child => child === this);\n const isAlreadyChild = (this.children as AssetNode[]).some(\n child => child.mo && child.mo.id === nodeToMove.mo.id\n );\n const preventMove = this === nodeToMove || shouldGetChildOfItsOwn || isAlreadyChild;\n return this.droppable && !preventMove && this.service.canDropNode(this.root);\n }\n return this.droppable;\n }\n\n dragStart($event) {\n super.dragStart($event);\n this.service.draggedData = this;\n this.service.rootNode.droppable = !this.isDeviceOrProbablyChildDevice;\n }\n\n dragEnd($event) {\n super.dragEnd($event);\n }\n\n async drop($event) {\n const nodeToMove = this.service.draggedData;\n\n // TODO remove when asset type node can be used on the root level.\n if (this.root && this.isAsset(nodeToMove)) {\n this.service.alert.info(gettext('Asset type node cannot become root node.'));\n this.draggedHover = false;\n this.service.draggedData = undefined;\n return;\n }\n\n super.drop($event);\n if (this.canDrop) {\n await this.moveNode(nodeToMove);\n } else {\n this.draggedHover = false;\n this.service.draggedData = undefined;\n }\n }\n\n hookEvents() {\n if (!this.events) {\n this.events = new Subject();\n this.events.subscribe(evt => {\n if (!this.loading) {\n this.handleEvent(evt);\n }\n });\n }\n }\n\n toString() {\n return AssetNode.NAME;\n }\n\n /**\n * Checks if the current node has child devices.\n */\n hasChildDevices() {\n return this.mo && this.mo.c8y_IsDevice && this.mo.childDevices.references.length > 0;\n }\n\n protected fetch() {\n return this.root\n ? this.service.getRootNodes()\n : this.service.getGroupItems(\n this.mo.id,\n this.hideDevices\n ? {\n query: `$filter=(has(${GroupFragment.groupFragmentType}))$orderby=name`\n }\n : {}\n );\n }\n\n protected async updateIcon(open) {\n this.icon = await this.service.icon(\n // if it's root we are going to pass a fake mo to get the same icon as groups\n this.root ? { c8y_IsDeviceGroup: {} } : this.mo,\n open\n );\n }\n\n protected countChildren() {\n return this.children.length;\n }\n\n protected async handleEvent(evt: AssetsNavigatorAction) {\n if (!this.countChildren() && evt === AssetsNavigatorAction.FETCH) {\n this.loading = true;\n this.addNodes(await this.fetch());\n this.loading = false;\n } else if (evt === AssetsNavigatorAction.NEXT) {\n this.loadMoreNode.loading = true;\n this.addNodes(await this.paging.next());\n this.loadMoreNode.loading = false;\n } else if (evt === AssetsNavigatorAction.REFRESH) {\n this.loading = false;\n this.paging = undefined;\n this.loadMoreNode = undefined;\n this.empty();\n this.events.next(AssetsNavigatorAction.FETCH);\n }\n }\n\n protected addNodes(res) {\n if (res.paging) {\n const { currentPage, nextPage, pageSize } = (this.paging = res.paging);\n if (currentPage === 1) {\n this.empty();\n }\n const itemsCount = res.data.length;\n const moreItemsAvailable = !!nextPage && itemsCount === pageSize;\n this.toggleLoadMore(moreItemsAvailable);\n }\n (res.data || res).map(mo => {\n return this.addManagedObject(mo);\n });\n this.events.next(AssetsNavigatorAction.LOADING_DONE);\n this.nodesFetched.next();\n }\n\n protected toggleLoadMore(show: boolean) {\n if (!this.loadMoreNode && show) {\n this.loadMoreNode = new LoadMoreNode();\n this.add(this.loadMoreNode);\n this.loadMoreNode.click = debounce(() => this.events.next(AssetsNavigatorAction.NEXT), 300, {\n leading: true,\n trailing: false\n });\n }\n\n if (this.loadMoreNode) {\n this.loadMoreNode.hidden = !show;\n }\n }\n\n private async moveNode(nodeToMove: AssetNode) {\n try {\n const isCopy = await this.showDropConfirm(nodeToMove);\n await this.verifyNodeAccess(nodeToMove);\n await this.addMovedNode(nodeToMove);\n if (!isCopy) {\n await this.removeMovedNode(nodeToMove);\n }\n this.expand();\n } catch (ex) {\n if (ex) {\n this.service.alert.addServerFailure(ex);\n }\n } finally {\n this.draggedHover = false;\n this.service.draggedData = undefined;\n }\n }\n\n private async showDropConfirm(nodeToMove: AssetNode) {\n this.confirm.title = gettext('Move');\n this.confirm.message = gettext('Do you want to move the group?');\n const buttons: any = [\n {\n label: gettext('Cancel'),\n action: () => Promise.reject()\n },\n {\n label: gettext('Move'),\n status: 'default',\n action: () => Promise.resolve(false)\n }\n ];\n if (nodeToMove.isDeviceOrProbablyChildDevice) {\n this.confirm.title = gettext('Move or add');\n this.confirm.message = gettext('Do you want to move or add the device?');\n buttons.push({\n label: gettext('Add'),\n status: 'primary',\n action: () => Promise.resolve(true)\n });\n }\n return this.confirm.show(buttons);\n }\n\n private async verifyNodeAccess(nodeToMove: AssetNode) {\n return this.service.inventory.update({ id: nodeToMove.mo.id });\n }\n\n private async addMovedNode(nodeToMove: AssetNode) {\n let mo: IIdentified;\n\n if (this.root && !this.isAsset(nodeToMove)) {\n mo = (\n await this.service.inventory.update({\n id: nodeToMove.mo.id,\n type: GroupFragment.groupType\n })\n ).data;\n\n this.addManagedObject(mo);\n return;\n }\n\n mo = (await this.service.inventory.childAssetsAdd(nodeToMove.mo, this.mo)).data;\n this.addManagedObject(mo);\n }\n\n private isAsset(nodeToMove: AssetNode) {\n // TODO use isAsset check when https://github.com/Cumulocity-IoT/cumulocity-ui/pull/690 is merged.\n // Do not override asset type!\n return nodeToMove.mo?.c8y_IsAsset;\n }\n\n private async removeMovedNode(nodeToMove: AssetNode) {\n for (const parent of nodeToMove.parents as AssetNode[]) {\n if (parent.mo && parent.mo.type === GroupFragment.dynamicGroupType) {\n break; // smart groups don't need to be changed\n }\n\n if (parent.root && !this.isAsset(nodeToMove)) {\n await this.service.inventory.update({\n id: nodeToMove.mo.id,\n type: GroupFragment.subGroupType\n });\n }\n\n if (!parent.root) {\n await this.service.inventory.childAssetsRemove(nodeToMove.mo, parent.mo);\n }\n parent.remove(nodeToMove);\n }\n }\n}\n","import { AssetNode } from './asset-node';\nimport { AssetNodeService } from './asset-node.service';\n\nexport class DynamicGroupNode extends AssetNode {\n constructor(protected service: AssetNodeService, config = {}) {\n super(service, config);\n this.draggable = false;\n this.droppable = false;\n }\n\n get hasChildren() {\n return true;\n }\n\n get query() {\n return this.mo.c8y_DeviceQueryString;\n }\n\n protected fetch(): any {\n return this.service.getDynamicGroupItems(this.query);\n }\n}\n","import { InjectionToken } from '@angular/core';\r\nimport { NavigatorNode } from '@c8y/ngx-components';\r\nimport { AssetNode } from './asset-node';\r\nexport const ASSET_NAVIGATOR_CONFIG = new InjectionToken<AssetNavigatorConfig>('AssetNodeConfig');\r\n\r\n/**\r\n * Configuration object of the AssetsNavigatorModule.\r\n */\r\nexport interface AssetNavigatorConfig {\r\n /**\r\n * Allows to enable smart groups in the module.\r\n * Default value: false.\r\n */\r\n smartGroups?: boolean;\r\n /**\r\n * Expands the root navigator node when the navigator is initialized.\r\n * Default value: false\r\n */\r\n openOnStart?: boolean;\r\n /**\r\n * Allows to change the position of the root group in the navigator.\r\n * The higher the value, the higher the position in navigation.\r\n * Default value: 2000.\r\n */\r\n rootNodePriority?: number;\r\n /**\r\n * Allows to drag and drop items in the asset navigator.\r\n * Default value: true.\r\n */\r\n disableDragAndDrop?: boolean;\r\n /**\r\n * Allows to override properies of the root group or hide it.\r\n * Setup examples:\r\n * - `rootNavigatorNode: true` - shows the default navigator node (default),\r\n * - `rootNavigatorNode: false` - hides the navigator node,\r\n * - `rootNavigatorNode: { label: 'New name', ... }` - overrides default navigator node,\r\n * - `rootNavigatorNode: new NavigatorNode({ label: 'New name', ... })` - overrides default navigator node,\r\n */\r\n rootNavigatorNode?: boolean | Partial<NavigatorNode | AssetNode>;\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport { GroupService as MigratedDeviceGroupService } from '@c8y/ngx-components';\n\n@Injectable({\n providedIn: 'root'\n})\n\n/**\n * @deprecated\n * Original service was moved to core/common.\n * This service is deprecated and serves as a proxy to maintain backward compatibility.\n */\nexport class DeviceGroupService {\n constructor(private migratedDeviceGroupService: MigratedDeviceGroupService) {}\n\n icon(mo: IManagedObject, open = false): Promise<string> {\n return this.migratedDeviceGroupService.getIcon(mo, open);\n }\n\n isGroup(mo: IManagedObject): boolean {\n return this.migratedDeviceGroupService.isGroup(mo);\n }\n\n isDynamicGroup(mo: IManagedObject): boolean {\n return this.migratedDeviceGroupService.isDynamicGroup(mo);\n }\n\n isDataBroker(mo: IManagedObject): boolean {\n return this.migratedDeviceGroupService.isDataBroker(mo);\n }\n\n isDataBrokerActive(mo: IManagedObject) {\n return this.migratedDeviceGroupService.isDataBrokerActive(mo);\n }\n\n isAsset(mo: IManagedObject) {\n return this.migratedDeviceGroupService.isAsset(mo);\n }\n\n isAnyGroup(mo: IManagedObject) {\n return this.migratedDeviceGroupService.isAnyGroup(mo);\n }\n\n isDevice(mo: IManagedObject) {\n return this.migratedDeviceGroupService.isDevice(mo);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, ActivationEnd, Router } from '@angular/router';\nimport { IManagedObject, IResult, InventoryService, QueriesUtil, UserService } from '@c8y/client';\nimport {\n AlertService,\n AppStateService,\n BreadcrumbService,\n GroupFragment,\n ModalService,\n NavigatorNode,\n NavigatorNodeData,\n OptionsService,\n ViewContext,\n Permissions,\n gettext\n} from '@c8y/ngx-components';\nimport { ApiService } from '@c8y/ngx-components/api';\nimport { empty } from 'rxjs';\nimport { filter, first, mergeMap } from 'rxjs/operators';\nimport { AssetsNavigatorAction } from './action.enum';\nimport { AssetNode } from './asset-node';\nimport { ASSET_NAVIGATOR_CONFIG, AssetNavigatorConfig } from './asset-node-config.model';\nimport { DynamicGroupNode } from './dynamic-group-node';\nimport { DeviceGroupService } from './group.service';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport interface AssetNodeMo {\n id: string;\n type: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AssetNodeService {\n rootNode: AssetNode;\n firstUrl = true;\n draggedData: AssetNode;\n queriesUtil: QueriesUtil;\n protected PAGE_SIZE = 20;\n\n inventory = inject(InventoryService);\n apiService = inject(ApiService);\n modal = inject(ModalService);\n alert = inject(AlertService);\n translateService = inject(TranslateService);\n\n protected breadcrumbService = inject(BreadcrumbService);\n protected user = inject(UserService);\n protected appState = inject(AppStateService);\n protected optionsService = inject(OptionsService);\n moduleConfig: AssetNavigatorConfig;\n protected deviceGroupService = inject(DeviceGroupService);\n protected router = inject(Router);\n\n constructor() {\n this.moduleConfig = {\n rootNodePriority: 2000,\n ...(inject(ASSET_NAVIGATOR_CONFIG, { optional: true }) || {})\n };\n this.queriesUtil = new QueriesUtil();\n\n this.router.events\n .pipe(\n filter(\n (event: ActivationEnd) =>\n event instanceof ActivationEnd && event.snapshot.data?.contextData\n ),\n first()\n )\n .subscribe(({ snapshot }) => {\n this.expandNodesOnStart(snapshot);\n });\n }\n\n /**\n * Expands the navigator nodes on first navigation.\n * @param snapshot The current navigation snapshot.\n */\n async expandNodesOnStart(snapshot: ActivatedRouteSnapshot): Promise<void> {\n if (!this.rootNode) {\n return;\n }\n if (\n snapshot.data?.context === ViewContext.Group ||\n snapshot.data?.context === ViewContext.Device\n ) {\n const { data } = await this.inventory.detail(snapshot.data.contextData, {\n withParents: true\n });\n\n const allManagedObjectParentIds = [\n ...data.assetParents.references.map(({ managedObject }) => {\n return managedObject.id;\n }),\n data.id\n ];\n this.expandAll(this.rootNode, allManagedObjectParentIds);\n return;\n }\n\n if (this.moduleConfig.openOnStart) {\n this.expandAll(this.rootNode, []);\n }\n }\n\n /**\n * Expands all the given ids recursively. Stops if it does not find any.\n * @param node The node where the expanding should be started\n * @param ids The ids that should be expanded.\n */\n expandAll(node: AssetNode, ids: string[]) {\n node.open = true;\n node.click({ open: true });\n if (node.events) {\n node.events\n .pipe(\n filter(action => action === AssetsNavigatorAction.LOADING_DONE),\n first()\n )\n .subscribe(() => {\n const nodeToExpand = node.children.find(\n childNode => childNode.mo?.id && ids.includes(childNode.mo.id)\n );\n if (nodeToExpand) {\n this.expandAll(\n nodeToExpand,\n ids.filter(id => id !== nodeToExpand.mo.id)\n );\n }\n });\n }\n }\n\n label(mo: IManagedObject): string {\n return (\n mo.name ||\n (this.isDevice(mo) &&\n this.translateService.instant(gettext('Device {{id}}'), { id: mo.id })) ||\n '--'\n );\n }\n\n icon(mo: IManagedObject, open?: boolean): Promise<string> {\n return this.deviceGroupService.icon(mo, open);\n }\n\n isGroup(mo: IManagedObject) {\n return this.deviceGroupService.isGroup(mo);\n }\n\n isDynamicGroup(mo: IManagedObject) {\n return this.deviceGroupService.isDynamicGroup(mo);\n }\n\n isDataBroker(mo: IManagedObject) {\n return this.deviceGroupService.isDataBroker(mo);\n }\n\n isDataBrokerActive(mo: IManagedObject) {\n return this.deviceGroupService.isDataBrokerActive(mo);\n }\n\n isAsset(mo: IManagedObject) {\n return this.deviceGroupService.isAsset(mo);\n }\n\n isAnyGroup(mo: IManagedObject) {\n return this.deviceGroupService.isAnyGroup(mo);\n }\n\n isDevice(mo: IManagedObject) {\n return this.deviceGroupService.isDevice(mo);\n }\n\n createRootNode(config: NavigatorNodeData = {}) {\n this.rootNode = this.createAssetNode({\n root: true,\n ...config,\n priority: this.moduleConfig.rootNodePriority,\n featureId: 'groups'\n });\n return this.rootNode;\n }\n\n createDynamicGroupNode(config) {\n return new DynamicGroupNode(this, config);\n }\n\n createAssetNode(config: Partial<AssetNode>) {\n return new AssetNode(this, config);\n }\n\n createChildNode(managedObject, config: Partial<AssetNode>) {\n const { type } = managedObject;\n config.mo = managedObject;\n if (type === GroupFragment.dynamicGroupType) {\n return this.createDynamicGroupNode(config);\n }\n return this.createAssetNode(config);\n }\n\n getRootNodes(customFilter?: any): Promise<any> {\n const defaultFilter = {\n pageSize: this.PAGE_SIZE,\n withChildren: false,\n onlyRoots: !this.optionsService.disableOnlyRootsQuery,\n query: this.queriesUtil.buildQuery(this.navRootQueryFilter())\n };\n const groupFilter = { ...defaultFilter, ...customFilter };\n\n // due to BE performance limitations we do not allow filtering and sorting for a user without inventory roles\n if (\n this.appState?.currentUser?.value &&\n !this.user.hasAnyRole(this.appState.currentUser.value, [\n Permissions.ROLE_INVENTORY_READ,\n Permissions.ROLE_MANAGED_OBJECT_READ\n ])\n ) {\n delete groupFilter.query;\n Object.assign(groupFilter, {\n fragmentType: GroupFragment.groupFragmentType,\n onlyRoots: true\n });\n }\n return this.inventory.list(this.createFilter(groupFilter));\n }\n\n getAllInventories(customFilter?: any): Promise<any> {\n const defaultFilter = {\n pageSize: this.PAGE_SIZE,\n withChildren: false\n };\n const groupFilter = { ...defaultFilter, ...customFilter };\n return this.inventory.list(this.createFilter(groupFilter));\n }\n\n getGroupItems(moId: string, extraFilter: object = {}, withChildren = false, filterQuery = '') {\n const queryFilter = {\n withChildren,\n pageSize: this.PAGE_SIZE,\n query: this.groupQueryFilter(moId, filterQuery)\n };\n return this.inventory.childAssetsList(moId, { ...queryFilter, ...extraFilter });\n }\n\n getUnassignedDevices(withChildren = false, filterQuery = '') {\n const queryFilter: any = {\n fragmentType: 'c8y_IsDevice',\n onlyRoots: true,\n withChildren,\n pageSize: this.PAGE_SIZE,\n q: this.getUnassignedDevicesQueryStr(filterQuery)\n };\n return this.inventory.list(this.createFilter(queryFilter));\n }\n\n getDynamicGroupItems(groupQuery: string, filterObj: any = {}) {\n const { query, ...queryParams } = filterObj;\n const orderByQuery = query;\n const queryFilter = {\n q: this.buildCombinedQuery(groupQuery, orderByQuery),\n ...queryParams\n };\n return this.inventory.list(this.createFilter(queryFilter));\n }\n\n getDeviceChildren(\n moId: string,\n extraFilter: object = {},\n filterQuery = '',\n withChildren = false\n ) {\n const queryFilter = {\n withChildren,\n pageSize: this.PAGE_SIZE,\n query: this.groupQueryFilter(moId, filterQuery)\n };\n return this.inventory.childDevicesList(moId, { ...queryFilter, ...extraFilter });\n }\n\n getUnassignedDevicesQueryStr(filterQuery): string {\n const hasGroupId = filterQuery.includes('bygroupid');\n // Fetch all unassigned devices.\n const defaultQueryStr = '$orderby=name';\n\n // filterQuery is a custom query to fetch unassigned devices filtered by name.\n return hasGroupId || !filterQuery ? defaultQueryStr : filterQuery;\n }\n\n groupQueryFilter(moId: string, filterQuery?: string) {\n if (!filterQuery) {\n return `$filter=(bygroupid(${moId}))$orderby=name`;\n }\n return filterQuery;\n }\n\n navRootQueryFilter() {\n const navRootFilter = this.rootQueryFilter();\n navRootFilter.__orderby = [{ name: 1 }];\n return navRootFilter;\n }\n\n rootQueryFilter() {\n const { moduleConfig } = this;\n const rootFilter = this.optionsService.disableOnlyRootsQuery\n ? {\n __filter: {\n type: GroupFragment.groupType\n },\n __orderby: []\n }\n : {\n __filter: {\n __has: GroupFragment.groupFragmentType\n },\n __orderby: []\n };\n if (moduleConfig.smartGroups) {\n const queryFilter = {\n __filter: {\n __and: [\n {\n type: GroupFragment.dynamicGroupType\n },\n {\n __has: GroupFragment.dynamicGroupFragment\n },\n { __not: { __has: `${GroupFragment.dynamicGroupFragment}.invisible` } }\n ]\n }\n };\n this.queriesUtil.addOrFilter(rootFilter, queryFilter);\n }\n return rootFilter;\n }\n\n onUpdate({ mo, root }) {\n if (mo.id) {\n return this.apiService\n .hookResponse(\n ({ url, method }) =>\n ['PUT', 'DELETE', 'POST'].includes(method) &&\n RegExp(`inventory/managedObjects/${mo.id}`).test(url)\n )\n .pipe(\n filter(() => !this.draggedData),\n this.apiService.excludePermissionCall(),\n mergeMap(this.apiService.resolveData<IManagedObject>),\n filter(response => !response?.data?.c8y_Dashboard)\n );\n } else if (root) {\n return this.apiService\n .hookResponse(\n ({ url, method }) => RegExp('inventory/managedObjects/?$').test(url) && method === 'POST'\n )\n .pipe(\n mergeMap(this.apiService.resolveData<IManagedObject>),\n filter(response => this.isNewManagedObjectRoot(response))\n );\n } else {\n return empty();\n }\n }\n\n isNewManagedObjectRoot(response: Partial<IResult<IManagedObject>> = {}) {\n const { data } = response;\n let isRootAsset = false;\n\n if (typeof data === 'object') {\n isRootAsset = !!data[GroupFragment.groupFragmentType];\n if (!isRootAsset && this.moduleConfig.smartGroups) {\n isRootAsset = !!data[GroupFragment.dynamicGroupFragment];\n }\n }\n return isRootAsset;\n }\n\n /**\n * Check if it is possible to drop a node after dragging.\n * @param dropOnRoot Is the drop performed on the root node\n */\n canDropNode(dropOnRoot: boolean): boolean {\n return (\n !dropOnRoot ||\n this.user.hasAnyRole(this.appState.currentUser.value, [\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_ADMIN\n ])\n );\n }\n\n /**\n * There could be multiple breadcrumbs for devices,\n * so we set a preferred one on click on a device.\n * @param parents The parent nodes of the device to select the prefered one.\n */\n preferBreadcrumb(parents: NavigatorNode[]) {\n if (parents.length === 1) {\n this.breadcrumbService.selectPreferredByPath(parents[0].path);\n }\n }\n\n protected createFilter(extraParams: any = {}) {\n const params = {\n currentPage: 1,\n withTotalPages: true,\n pageSize: 10\n };\n return { ...params, ...extraParams };\n }\n\n private buildCombinedQuery(queryA, queryB) {\n let combinedQuery;\n if (queryA && queryB) {\n const filterQuery = this.queriesUtil.buildQuery([\n {\n __useFilterQueryString: queryA\n },\n {\n __useFilterQueryString: queryB\n }\n ]);\n const orberByQuery = this.queriesUtil.extractAndMergeOrderBys([queryA, queryB]);\n combinedQuery = `${filterQuery} ${orberByQuery}`;\n } else {\n combinedQuery = queryA || queryB || '';\n }\n return combinedQuery;\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { get as getProp } from 'lodash-es';\nimport { AssetNode } from './asset-node';\nimport { AssetNavigatorConfig, ASSET_NAVIGATOR_CONFIG } from './asset-node-config.model';\nimport { AssetNodeService } from './asset-node.service';\n\n@Injectable()\nexport class AssetNodeFactory {\n constructor(\n private service: AssetNodeService,\n @Optional() @Inject(ASSET_NAVIGATOR_CONFIG) public moduleConfig: AssetNavigatorConfig\n ) {}\n\n get(): AssetNode {\n const rootNavigatorNode = getProp(this.moduleConfig, 'rootNavigatorNode') ?? true;\n let { rootNode } = this.service;\n\n if (rootNavigatorNode === false) {\n return;\n }\n\n if (!rootNode) {\n rootNode = this.service.createRootNode(rootNavigatorNode === true ? {} : rootNavigatorNode);\n }\n return rootNode;\n }\n}\n","import { GroupFragment } from '@c8y/ngx-components';\nimport { GroupNodeService } from './group-node.service';\nimport { AssetNode } from '../asset-node';\nimport { GroupNodeConfig } from './asset-selector.model';\n\nexport class GroupNode extends AssetNode {\n static NAME = 'GroupNode';\n\n /**\n * Set this true, if only groups should be shown.\n */\n groupsOnly = false;\n\n /**\n * Set this true, if it groups are also selectable.\n */\n groupsSelectable = false;\n /**\n * Devices with children can be selected to show their child devices.\n */\n showChildDevices = false;\n\n /**\n * Group node children (subentries).\n */\n children: GroupNode[] = [];\n\n /**\n * Creates a new node which shows only groups.\n *\n * @param service The service to use.\n * @param config The default configuration of the node.\n * @param groupsOnly Set this true, if only groups should be shown.\n * @param selectable Set this true, if it is selectable.\n */\n\n constructor(protected service: GroupNodeService, config: GroupNodeConfig = {}) {\n super(service, config);\n this.groupsOnly = config.groupsOnly || false;\n this.groupsSelectable = config.groupsSelectable || false;\n this.showChildDevices = config.showChildDevices || false;\n }\n\n /**\n * Adds the MO as a child node.\n * @param mo ManagedObject\n */\n addManagedObject(mo) {\n const { childAdditions } = this.mo;\n if (!this.isChildAddition(childAdditions, mo)) {\n this.add(\n this.service.createChildNode({\n mo,\n groupsOnly: this.groupsOnly,\n groupsSelectable: this.groupsSelectable,\n showChildDevices: this.showChildDevices\n })\n );\n }\n }\n\n /**\n * Counts the number of children for the current node (with the exception of the UnassignedDevicesNode).\n */\n countChildren(): number {\n return this.children.filter(value => value.toString() !== 'UnassignedDevicesNode').length;\n }\n\n /**\n * Removes all child nodes except the UnassignedDevicesNode.\n */\n empty() {\n this.children = this.children.filter(value => value.toString() === 'UnassignedDevicesNode');\n }\n\n fetch() {\n const isRoot = this.root;\n const isDevice = this.mo.c8y_IsDevice;\n return isRoot\n ? this.service.getRootNodes()\n : isDevice\n ? this.service.getDeviceChildren(\n this.mo.id,\n {},\n this.filterQuery$.value,\n this.showChildDevices\n )\n : this.service.getGroupItems(\n this.mo.id,\n this.groupsOnly\n ? {\n query: `$filter=(has(${GroupFragment.groupFragmentType}))`\n }\n : {},\n this.showChildDevices,\n this.filterQuery$.value\n );\n }\n\n toString() {\n return GroupNode.NAME;\n }\n\n isGroup() {\n return this.mo && this.service.isGroup(this.mo);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AssetNodeService } from '../asset-node.service';\nimport { GroupNodeConfig } from './asset-selector.model';\nimport { GroupNode } from './group-node';\n\n@Injectable({ providedIn: 'root' })\nexport class GroupNodeService extends AssetNodeService {\n protected PAGE_SIZE = 5;\n\n createGroupNode(config: GroupNodeConfig) {\n return new GroupNode(this, config);\n }\n\n createChildNode(config: GroupNodeConfig): GroupNode {\n return this.createGroupNode(config);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IIdentified, IManagedObject } from '@c8y/client';\nimport { AssetNodeService } from '../asset-node.service';\nimport { isArray, isNumber, isObject, isString } from 'lodash';\nimport { GroupNode } from './group-node';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AssetSelectorService extends AssetNodeService {\n /**\n * Function which will check if the node is selectable.\n */\n private isNodeSelectableFn: boolean | ((node: GroupNode) => boolean) = true;\n\n /**\n * Sets the function that will decide if the node is selectable.\n * @param fn A boolean or a function that will decide if the node is selectable.\n */\n setIsNodeSelectable(fn: boolean | ((node: GroupNode) => boolean)): void {\n this.isNodeSelectableFn = fn;\n }\n\n /**\n * Checks if the node is selectable.\n * @param node The node to check.\n */\n isNodeSelectable(node: GroupNode): boolean {\n if (typeof this.isNodeSelectableFn === 'boolean') {\n return this.isNodeSelectableFn;\n } else if (typeof this.isNodeSelectableFn === 'function') {\n return this.isNodeSelectableFn(node);\n }\n return true;\n }\n /**\n * Simplifies the object model based on the selected mode.\n * @param obj The selected asset.\n * @param mode The mode which will decide what type of model will be returned.\n */\n normalizeValue(\n obj: Partial<IManagedObject>,\n modelMode: 'simple' | 'full'\n ): Partial<IManagedObject> | IIdentified {\n return this.simplifyModel(this.normalizeModelValue(obj), modelMode);\n }\n\n simplifyModel(\n model: Partial<IManagedObject> | IIdentified[],\n mode: 'simple' | 'full'\n ): Partial<IManagedObject> | IIdentified {\n const mapModel = model => {\n const { id, name, c8y_DeviceQueryString } = model as IIdentified;\n return { id, name, ...(c8y_DeviceQueryString ? { c8y_DeviceQueryString } : {}) };\n };\n\n if (mode === 'full') {\n return model;\n }\n if (!isArray(model)) {\n return mapModel(model);\n }\n return model.map(mapModel);\n }\n\n /**\n * Returns the index of the currently selected item.\n * @param selected All selected items\n * @param selectedMo The new selected item-\n * @returns An index, or -1 if not found.\n */\n getIndexOfSelected(\n selected: Array<Partial<IIdentified>> | Partial<IIdentified>,\n selectedMo: IIdentified\n ) {\n return selected.findIndex(mo => mo.id === selectedMo.id);\n }\n\n private normalizeModelValue(value: any): IIdentified[] {\n if (isNumber(value) || isString(value)) {\n return [{ id: value }];\n }\n if (isArray(value)) {\n return value;\n }\n if (isObject(value)) {\n return [value];\n }\n return [];\n }\n}\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IIdentified, IManagedObject } from '@c8y/client';\nimport {\n gettext,\n IconDirective,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { AssetsNavigatorAction } from '../action.enum';\nimport { AssetSelectorService } from './asset-selector.service';\nimport { GroupNode } from './group-node';\nimport { NgIf, NgStyle, NgClass, NgFor } from '@angular/common';\nimport { CollapseDirective } from 'ngx-bootstrap/collapse';\n\n@Component({\n selector: 'c8y-asset-selector-node',\n templateUrl: './asset-selector-node.component.html',\n imports: [\n NgIf,\n NgStyle,\n NgClass,\n IconDirective,\n C8yTranslateDirective,\n CollapseDirective,\n NgFor,\n C8yTranslatePipe\n ]\n})\nexport class AssetSelectorNodeComponent implements OnInit {\n /**\n * The current node.\n */\n @Input() node: GroupNode;\n /**\n * Root node. Node found at the top of the hierarchy.\n */\n @Input() rootNode: GroupNode;\n /**\n * All preselected items.\n */\n @Input() preselected: IIdentified | IIdentified[] = [];\n /**\n * Should the path be shown.\n */\n @Input() showPath = false;\n /**\n * Can the user select multiple assets.\n */\n @Input() multi = false;\n /**\n * The current path to the node.\n */\n @Input() view: 'tree' | 'miller' = 'tree';\n /**\n * Used only for miller-view, displays the column level for the current node.\n * E.g if the index is one, this will be second column.\n */\n @Input() index;\n /**\n * Sets the active node.\n */\n @Input() active: GroupNode;\n /**\n * A function that should verify the need to add a column when a node is clicked.\n */\n @Input() handleNextMillerViewColumn: (node: GroupNode, index: number) => boolean;\n\n @Input() disabled = false;\n /**\n * Event, which indicates whether the loading of the node has completed.\n */\n @Output() isLoadingState: EventEmitter<boolean> = new EventEmitter();\n /**\n * Event that emits when a node is selected.\n */\n @Output() onSelect: EventEmitter<IManagedObject> = new EventEmitter();\n /**\n * Event that emits when a node is deselected.\n */\n @Output() onDeselect: EventEmitter<{ deselectMode: 'single' | 'all'; mo: IManagedObject }> =\n new EventEmitter();\n\n breadcrumb: string;\n /**\n * @ignore\n */\n level = 0;\n /**\n * @ignore\n */\n unsubscribe$ = new Subject<void>();\n isNodeSelectable = true;\n\n /** sets the `btn-pending` class in the load more button */\n isLoading = false;\n /**\n * @ignore\n */\n get expandTitle() {\n return !this.node.open ? gettext('Expand') : gettext('Collapse');\n }\n\n /**\n * @ignore only di\n */\n constructor(\n private translateService: TranslateService,\n private cd: ChangeDetectorRef,\n public assetSelectorService: AssetSelectorService\n ) {}\n\n /**\n * @ignore\n */\n async ngOnInit() {\n this.isNodeSelectable = this.assetSelectorService.isNodeSelectable(this.node);\n this.breadcrumb = this.node.label;\n this.setupBreadcrumbsAndLevel(this.node);\n\n if (this.node instanceof GroupNode) {\n this.node.hookEvents();\n }\n\n // open on startup\n if (this.node.root) {\n this.click();\n }\n\n // used for loading and to trigger change detection when the node is no longer loading.\n if (this.node.events) {\n this.node.events\n .pipe(\n takeUntil(this.unsubscribe$),\n filter((a: AssetsNavigatorAction) => a === AssetsNavigatorAction.LOADING_DONE)\n )\n .subscribe(() => {\n this.isLoadingState.emit(false);\n this.cd.markForCheck();\n });\n }\n }\n\n /**\n * Opens a node.\n */\n click() {\n this.node.open = !this.node.open;\n this.node.click({ open: this.node.open });\n }\n\n setupBreadcrumbsAndLevel(node: GroupNode) {\n if (node.parents && node.parents.length) {\n const parent = node.parents[0] as GroupNode;\n this.breadcrumb =\n this.translateService.instant(parent.label) +\n ' > ' +\n this.translateService.instant(this.breadcrumb);\n this.level++;\n\n this.setupBreadcrumbsAndLevel(parent);\n }\n }\n\n /**\n * Selects the node and emits a change on the parent component.\n * @param node The node to select.\n */\n selected(node: GroupNode) {\n if (node.mo) {\n this.updateSelection(node.mo);\n return;\n }\n this.click();\n }\n\n /**\n * Handles clicks on a item in Miller View.\n * @param node The node that was clicked.\n */\n millerViewClick(node: GroupNode) {\n node.breadcrumb = this.breadcrumb;\n\n if (!this.handleNextMillerViewColumn) {\n return;\n }\n const shouldHandleDefault = this.handleNextMillerViewColumn(node, this.index);\n if (shouldHandleDefault) {\n this.selected(node);\n }\n }\n\n /**\n * @ignore\n */\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n isSelected() {\n if (!this.node.mo) {\n return false;\n }\n return this.assetSelectorService.getIndexOfSelected(this.preselected, this.node.mo) > -1;\n }\n\n isActive() {\n if (this.active && this.node.mo) {\n return this.active.mo?.id === this.node.mo.id;\n }\n return false;\n }\n\n private updateSelection(selectedMo: IManagedObject) {\n if (!this.multi) {\n this.onDeselect.emit({ deselectMode: 'all', mo: selectedMo });\n return;\n }\n if (this.isSelected()) {\n this.onDeselect.emit({ deselectMode: 'single', mo: selectedMo });\n return;\n }\n this.onSelect.emit(selectedMo);\n this.cd.markForCheck();\n }\n}\n","<!-- Hierarchy tree -->\n<div\n class=\"c8y-asset-selector__item\"\n [ngStyle]=\"{\n 'margin-left': level > 1 ? 16 + 'px' : '0'\n }\"\n *ngIf=\"view === 'tree'\"\n [attr.role]=\"view === 'tree' ? 'tree' : 'list'\"\n [ngClass]=\"{\n 'c8y-asset-selector__item--more': node?.icon === 'plus',\n 'c8y-asset-selector__item--start': level === 0\n }\"\n>\n <div\n class=\"c8y-asset-selector__node\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n [ngClass]=\"{ 'c8y-asset-selector__node--open': node?.open }\"\n >\n <!-- expand button -->\n <div class=\"c8y-asset-selector__node__btn-spacer\">\n <button\n class=\"collapse-btn btn-dot\"\n [title]=\"expandTitle | translate\"\n [attr.aria-expanded]=\"node.open\"\n (click)=\"click()\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </button>\n </div>\n <div\n class=\"d-flex a-i-center p-t-4 p-b-4\"\n *ngIf=\"node.toString() !== 'LoadMoreNode' && isNodeSelectable\"\n >\n <label [ngClass]=\"{ 'c8y-checkbox': multi, 'c8y-radio': !multi }\">\n <input\n id=\"nodeLabel\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"disabled || !node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <!-- group button -->\n <button\n class=\"c8y-asset-selector__btn text-truncate\"\n [attr.aria-expanded]=\"!node.open\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n (click)=\"click()\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate\"\n *ngIf=\"showPath\"\n >\n <small\n class=\"text-muted\"\n title=\"{{ breadcrumb }}\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n </p>\n <!-- up to here -->\n </span>\n </button>\n <!-- not a group button -->\n <button\n class=\"flex-grow\"\n title=\"{{ breadcrumb }}\"\n type=\"button\"\n *ngIf=\"!node.isGroup() && !node.hasChildDevices()\"\n [ngClass]=\"{\n 'btn btn-default btn-sm m-b-8 m-r-8 d-flex j-c-center': node.icon === 'plus',\n 'c8y-asset-selector__btn text-truncate': node.icon != 'plus'\n }\"\n (click)=\"selected(node)\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16 ': node.icon != 'plus' }\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate text-muted small\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </p>\n <!-- up to here -->\n </span>\n </button>\n </div>\n <div\n class=\"collapse\"\n *ngIf=\"node.countChildren()\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n [attr.role]=\"'group'\"\n >\n <c8y-asset-selector-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [preselected]=\"preselected || []\"\n [disabled]=\"disabled\"\n [multi]=\"multi\"\n [active]=\"active\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n\n<!-- Miller columns -->\n<div *ngIf=\"view === 'miller'\">\n <div\n class=\"miller-column__item bg-inherit\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden && node !== rootNode\"\n [ngClass]=\"{\n active: isActive(),\n 'miller-column__item--more': node.toString() === 'LoadMoreNode'\n }\"\n >\n <div\n class=\"m-l-4 m-r-4 miller-column__item__checkbox\"\n *ngIf=\"node.toString() !== 'LoadMoreNode'\"\n >\n <label [ngClass]=\"{ 'c8y-radio': !multi, 'c8y-checkbox': multi }\">\n <input\n id=\"nodeLabel2\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"disabled || !node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel2\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <button\n title=\"{{ breadcrumb | translate }}\"\n type=\"button\"\n [ngClass]=\"{\n 'btn btn-default btn-sm d-flex flex-grow j-c-center m-l-16 m-r-16 m-b-4 m-t-4':\n node.toString() === 'LoadMoreNode',\n 'miller-column__item__btn': node.toString() !== 'LoadMoreNode',\n 'btn-pending': node.loading && node.toString() === 'LoadMoreNode'\n }\"\n (click)=\"millerViewClick(node)\"\n >\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16': node.toString() !== 'LoadMoreNode' }\"\n ></i>\n <div class=\"text-left text-truncate\">\n <p\n class=\"text-truncate\"\n title=\"{{ node.translateLabel ? (node.label | translate) : node.label }}\"\n >\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n </p>\n <!-- use just for search results to display the path -->\n <small\n class=\"text-muted text-truncate\"\n title=\"{{ breadcrumb }}\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n <!-- up to here -->\n </div>\n <span\n class=\"p-l-4 m-l-auto\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </span>\n </button>\n </div>\n\n <div\n role=\"list\"\n *ngIf=\"node\"\n [ngClass]=\"{ hidden: node !== rootNode }\"\n >\n <c8y-asset-selector-node\n role=\"listitem\"\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [rootNode]=\"rootNode\"\n [preselected]=\"preselected || []\"\n [multi]=\"multi\"\n [view]=\"view\"\n [index]=\"index\"\n [active]=\"active\"\n [disabled]=\"disabled\"\n [handleNextMillerViewColumn]=\"handleNextMillerViewColumn\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n","import { EventEmitter } from '@angular/core';\nimport { IIdentified, IManagedObject, InventoryService } from '@c8y/client';\nimport { GroupNodeService } from './group-node.service';\nimport { AssetSelectorService } from './asset-selector.service';\nimport { AssetSelectionChangeEvent, AssetSelectorOptions } from './asset-selector.model';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport class AssetSelectorBase {\n /**\n * Config object containing all options for the asset selector.\n */\n config: AssetSelectorOptions = {};\n /**\n * An array of predefined nodes.\n */\n selected: Array<Partial<IManagedObject>> | IIdentified[] | IIdentified;\n /**\n * The loading state of the current node.\n */\n isLoading = false;\n /**\n * Emit the selected asset or assets.\n */\n onSelected = new EventEmitter<AssetSelectionChangeEvent>();\n /**\n * Emits if the currently selected asset is cleared.\n */\n onClearSelected = new EventEmitter<void>();\n\n private onChange: (mo: IIdentified[] | IIdentified) => void;\n private onTouched: () => void;\n\n constructor(\n protected groupNodeService: GroupNodeService,\n protected inventory: InventoryService,\n protected assetSelectorService: AssetSelectorService\n ) {}\n\n /**\n * @ignore\n */\n validate(control: AbstractControl): ValidationErrors {\n if (this.config.required && (!control.value || control.value.length === 0)) {\n return { required: true };\n }\n return null;\n }\n\n /**\n * @ignore\n */\n writeValue(obj: any): void {\n this.selected = this.assetSelectorService.normalizeValue(obj, this.config.modelMode);\n }\n\n /**\n * @ignore\n */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /**\n * @ignore\n */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * @ignore\n */\n doBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n /**\n * Deselects all expect the given one.\n * @param selectedMo The selected asset (optional, if empty -> just deselect all).\n */\n deselectAll(selectedMo?: IManagedObject) {\n this.selected = [];\n if (selectedMo) {\n this.selected = [this.assetSelectorService.simplifyModel(selectedMo, this.config.modelMode)];\n }\n this.emitChange(this.selected, selectedMo, !!selectedMo);\n this.doBlur();\n }\n\n /**\n * Adds an managed object to the selected array and emits the change.\n * @param selectedMo The selected asset.\n */\n select(selectedMo: IManagedObject) {\n if (!this.config.multi) {\n this.selected = [];\n }\n const index = this.getIndexOfSelected(this.selected, selectedMo);\n if (index === -1) {\n this.selected.push(\n this.assetSelectorService.simplifyModel(selectedMo, this.config.modelMode)\n );\n }\n this.emitChange(this.selected, selectedMo, true);\n this.doBlur();\n }\n\n /**\n * Removes a managed object from the selected array and emits the change.\n * @param selectedMo The selected asset.\n */\n deselect(selectedMo: IManagedObject) {\n const index = this.getIndexOfSelected(this.selected, selectedMo);\n if (index > -1) {\n this.selected.splice(index, 1);\n }\n this.emitChange(this.selected, selectedMo, false);\n this.doBlur();\n }\n\n /**\n * Returns the index of the currently selected item.\n * @param selected All selected items\n * @param selectedMo The new selected item-\n * @returns An index, or -1 if not found.\n */\n getIndexOfSelected(\n selected: Array<Partial<IIdentified>> | Partial<IIdentified>,\n selectedMo: IIdentified\n ) {\n return selected.findIndex(mo => mo.id === selectedMo.id);\n }\n\n emitChange(selected: IIdentified | IIdentified[], item: IManagedObject, isSelected: boolean) {\n const changes = this.config.multi ? selected : selected[0];\n if (this.onChange) {\n this.onChange(changes);\n }\n this.onSelected.emit({ items: changes, change: { item, isSelected } });\n }\n\n createDefaultRootNode() {\n return this.groupNodeService.createGroupNode({\n root: true,\n groupsSelectable: this.config.groupsSelectable,\n groupsOnly: this.config.groupsOnly,\n showChildDevices: this.config.showChildDevices\n });\n }\n async createManagedObjectRootNode(asset: IIdentified) {\n if ((asset as IIdentified).id) {\n return this.groupNodeService.createGroupNode({\n mo: asset as IManagedObject,\n groupsSelectable: this.config.groupsSelectable,\n groupsOnly: this.config.groupsOnly,\n showChildDevices: this.config.showChildDevices\n });\n }\n const { data: mo } = await this.inventory.detail(asset);\n return this.groupNodeService.createGroupNode({\n mo,\n groupsSelectable: this.config.groupsSelectable,\n groupsOnly: this.config.groupsOnly,\n showChildDevices: this.config.showChildDevices\n });\n }\n}\n","import { IManagedObject } from '@c8y/client';\nimport { IIdentified } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\n\nexport interface AssetSelectionChangeEvent {\n items: IIdentified | IIdentified[];\n change: { item: IManagedObject; isSelected: boolean };\n}\n\nexport interface GroupNodeConfig {\n root?: boolean;\n mo?: IManagedObject;\n groupsOnly?: boolean;\n groupsSelectable?: boolean;\n showChildDevices?: boolean;\n}\n\nexport const CONFIG_OPTIONS_DEFAULT: AssetSelectorOptions = {\n label: gettext('Asset selection'),\n multi: false,\n showFilter: false,\n columnHeaders: false,\n singleColumn: false,\n modelMode: 'simple',\n groupsOnly: false,\n groupsSelectable: false,\n search: false,\n showUnassignedDevices: false,\n view: 'tree',\n showChildDevices: false,\n showSelected: true\n};\n\nexport interface AssetSelectorOptions {\n /**\n * Already selected devices.\n */\n selectedDevices?: IIdentified | IIdentified[];\n /**\n * Defines a label to be shown to the user.\n */\n label?: string;\n /**\n * Can the user select multiple assets.\n */\n multi?: boolean;\n /**\n * displays a filter input on every column when using the miller view.\n */\n showFilter?: boolean;\n /**\n * displays a column header on every column when using the miller view.\n */\n columnHeaders?: boolean;\n /**\n * Displays only the select column.\n */\n singleColumn?: boolean;\n /**\n * Set to true to mark it as required on a form.\n */\n required?: boolean;\n /**\n * In simple model-mode the result will only contain the IDs and name of the selected\n * assets. In full mode, everything is contained.\n */\n modelMode?: 'simple' | 'full';\n /**\n * Set this to true, if the selector should only show groups.\n */\n groupsOnly?;\n /**\n * Set this true, if groups should be selectable.\n */\n groupsSelectable?;\n /**\n * Enable to display global search in the asset-selector (only possible whithout device context).\n */\n search?: boolean;\n /**\n * Displays all unassigned devices in a custom root group.\n */\n showUnassignedDevices?: boolean;\n /**\n * Set the view of the asset selector with tree view as default.\n */\n view?: 'tree' | 'miller';\n /**\n * Used only for miller-view, displays the column level for the current node.\n * E.g if the index is one, this will be second column.\n */\n index?: number;\n /**\n * Used only for single column, the array contains all selected columns.\n */\n selectedColumns?: IIdentified[] | IIdentified;\n /**\n * Devices with children can be selected to show their child devices.\n */\n showChildDevices?: boolean;\n /**\n * Allows to show chips at the top with the currently selected asset for multi select.\n * For single select it shows the currently selected asset.\n */\n showSelected?: boolean;\n /**\n * Prevents automatic asset selection on component initialization.\n */\n preventInitialSelect?: boolean;\n}\n","import { ClickOptions, gettext } from '@c8y/ngx-components';\nimport { AssetsNavigatorAction } from '../action.enum';\nimport { GroupNodeConfig } from './asset-selector.model';\nimport { GroupNode } from './group-node';\nimport { GroupNodeService } from './group-node.service';\n\nexport class UnassignedDevicesNode extends GroupNode {\n static NAME = 'UnassignedDevicesNode';\n label = gettext('Unassigned devices');\n icon = 'delete-folder';\n groupsSelectable = false;\n groupsOnly = false;\n showChildDevices = false;\n mo = {};\n\n constructor(\n protected service: GroupNodeService,\n config: GroupNodeConfig = {}\n ) {\n super(service, config);\n this.priority = Infinity;\n this.showChildDevices = config.showChildDevices || false;\n }\n\n click(options: ClickOptions = {}) {\n this.hookEvents();\n if (options.open) {\n this.events.next(AssetsNavigatorAction.FETCH);\n }\n }\n\n addManagedObject(mo) {\n this.add(this.service.createChildNode({ mo, showChildDevices: this.showChildDevices }));\n }\n\n fetch() {\n return this.service.getUnassignedDevices(this.showChildDevices, this.filterQuery$.value);\n }\n\n isGroup() {\n return true;\n }\n\n toString() {\n return UnassignedDevicesNode.NAME;\n }\n\n setLabel() {\n // do nothing, as this item has a hardcoded label.\n // This is only to overwrite the default inherited method.\n this.label = this.label;\n }\n\n async updateIcon() {\n // do nothing, as this item has a hardcoded label.\n // This is only to overwrite the default inherited method.\n this.icon = this.icon;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { IIdentified, IManagedObject, InventoryService } from '@c8y/client';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\nimport { AssetSelectorBase } from './asset-selector-base';\nimport {\n AssetSelectionChangeEvent,\n AssetSelectorOptions,\n CONFIG_OPTIONS_DEFAULT\n} from './asset-selector.model';\nimport { AssetSelectorService } from './asset-selector.service';\nimport { GroupNode } from './group-node';\nimport { GroupNodeService } from './group-node.service';\nimport { UnassignedDevicesNode } from './unassigned-devices-node';\nimport {\n gettext,\n SearchInputComponent,\n IconDirective,\n C8yTranslatePipe,\n GetGroupIconPipe\n} from '@c8y/ngx-components';\nimport { NgIf, NgStyle, NgClass, NgFor, AsyncPipe } from '@angular/common';\nimport { AssetSelectorNodeComponent } from './asset-selector-node.component';\n\n/**\n * Displays a hierarchical tree selector for assets.\n */\n@Component({\n selector: 'c8y-asset-selector',\n templateUrl: './asset-selector.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AssetSelectorComponent)\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => AssetSelectorComponent),\n multi: true\n },\n AssetSelectorService\n ],\n imports: [\n NgIf,\n NgStyle,\n NgClass,\n SearchInputComponent,\n NgFor,\n IconDirective,\n FormsModule,\n AssetSelectorNodeComponent,\n C8yTranslatePipe,\n AsyncPipe,\n GetGroupIconPipe\n ]\n})\nexport class AssetSelectorComponent extends AssetSelectorBase implements OnInit {\n /**\n * Config object containing all options for the asset selector.\n */\n @Input() config: AssetSelectorOptions = {};\n /**\n * Defines the node, which should be displayed as active.\n */\n @Input() active: GroupNode;\n /**\n * Used only for miller-view, displays the column level for the current node.\n * E.g if the index is one, this will be second column.\n */\n @Input() index = 0;\n /**\n * The asset to use as root.\n */\n @Input() asset: IIdentified = undefined;\n /**\n * The selected device.\n */\n @Input() selectedDevice: IManagedObject = undefined;\n /**\n * An array of predefined nodes.\n */\n @Input() selected: Array<Partial<IManagedObject>> | IIdentified[] | IIdentified = [];\n /**\n * The node to use as root. You can either set this, or the asset to start from.\n */\n @Input() rootNode: GroupNode;\n /**\n * All currently selected assets.\n */\n @Input() selectedItems: IIdentified[] | IIdentified = [];\n @Input() container: '' | 'body' = 'body';\n @Input() isNodeSelectable: boolean | ((node: IIdentified) => boolean) = true;\n @Input() disabled = false;\n /**\n * Emits if one item was selected (all currently selected nodes).\n */\n @Output() onSelected = new EventEmitter<AssetSelectionChangeEvent>();\n /**\n * Emits if the currently selected asset is cleared.\n */\n @Output() onClearSelected = new EventEmitter<void>();\n /**\n * Used only for miller view. Emit the selected node and use it as a 'rootNode' for the new column.\n */\n @Output() onRowSelected = new EventEmitter<any>();\n /**\n * Emits the current loading state of the node.\n */\n @Output() onLoad = new EventEmitter<any>();\n /**\n * The current filter applied.\n */\n filterText = '';\n /**\n * Displays the global search at all times if the miller view is used\n * on root group level.\n */\n root = false;\n /**\n * @ignore\n */\n unsubscribe$ = new Subject<void>();\n /**\n * Returns the current header hight in pixel.\n */\n getHeaderHeight$ = new BehaviorSubject(0);\n readonly ASSET_CONST = gettext('Asset {{ assetId }}');\n\n @ViewChild('header')\n private header: ElementRef;\n\n /**\n * @ignore only DI\n */\n constructor(\n protected groupNodeService: GroupNodeService,\n protected inventory: InventoryService,\n protected assetSelectorService: AssetSelectorService,\n protected cd: ChangeDetectorRef\n ) {\n super(groupNodeService, inventory, assetSelectorService);\n }\n\n /**\n * Checks when a node was selected, if a new column needs to be added.\n * @param node The node that was clicked.\n * @param index The current index of this node.\n * @returns True if the click was handled and a new column was added.\n */\n handleNextMillerViewColumn(node: GroupNode, index: number) {\n const nodeCopy = Object.create(node);\n const isSameAsRoot = this.rootNode === node;\n const isUnassignedDevicesNode = node.toString() === UnassignedDevicesNode.NAME;\n const isNewColumnNeeded =\n !isSameAsRoot && (node.isGroup() || isUnassignedDevicesNode || node.hasChildDevices());\n\n if (isNewColumnNeeded) {\n this.onRowSelected.emit({ nodeCopy, index });\n return false;\n }\n return true;\n }\n\n /**\n * @ignore\n */\n async ngOnInit() {\n this.assetSelectorService.setIsNodeSelectable(this.isNodeSelectable);\n if (this.index === 0) {\n this.config = { ...CONFIG_OPTIONS_DEFAULT, ...this.config };\n }\n const shouldResetNameFilter =\n this.rootNode && this.rootNode.mo && this.config.view === 'miller';\n if (shouldResetNameFilter) {\n await this.applyFilter('');\n }\n\n const isOnlyAssetNodeDefined = this.asset;\n if (isOnlyAssetNodeDefined) {\n this.rootNode = await this.createManagedObjectRootNode(this.asset);\n }\n\n const isAnyNodeDefined =\n !this.rootNode && (!this.asset || Object.keys(this.asset).length === 0);\n if (isAnyNodeDefined) {\n this.rootNode = this.createDefaultRootNode();\n }\n\n if (\n this.config.showUnassignedDevices &&\n (!this.asset || Object.keys(this.asset).length === 0) &&\n this.rootNode.root\n ) {\n this.rootNode.add(\n new UnassignedDevicesNode(this.groupNodeService, {\n showChildDevices: this.config.showChildDevices\n })\n );\n }\n this.root = this.rootNode.root;\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes.isNodeSelectable) {\n this.assetSelectorService.setIsNodeSelectable(this.isNodeSelectable);\n }\n if (\n changes.asset &&\n changes.asset.currentValue &&\n Object.keys(changes.asset.currentValue).length !== 0\n ) {\n this.rootNode = await this.createManagedObjectRootNode(changes.asset.currentValue);\n }\n }\n\n /**\n * @ignore\n */\n ngAfterViewInit(): void {\n this.updateHeaderHeight();\n }\n\n /**\n * Changes the current root to one level back.\n */\n back() {\n const index = this.index - 1;\n const nodeCopy = Object.create(this.rootNode.parents[0]);\n this.onRowSelected.emit({ nodeCopy, index });\n }\n\n /**\n * Clears the current filter.\n */\n clearFilters() {\n this.filterText = '';\n this.applyFilter('');\n }\n\n /**\n * Clears the currently selected device.\n */\n clearSelectedDevices() {\n this.selectedDevice = undefined;\n this.applyFilter('');\n this.onClearSelected.emit();\n }\n\n isGroupSelected() {\n if (this.selected.some(selectedNode => selectedNode.id === this.rootNode.mo?.id)) {\n return true;\n }\n return false;\n }\n\n /**\n * @param nameFilter The name filter to apply.\n * @param moId The managed object ID to filter by.\n * @param showUnassignedDevices If true, it will show unassigned devices.\n * @return The filter query to apply.\n * @description\n * This method builds a filter query based on the provided name filter and managed object ID.\n */\n groupNameFilter(nameFilter: string, moId, showUnassignedDevices?: boolean) {\n if (nameFilter) {\n const filterByName = showUnassignedDevices\n ? {\n __filter: {\n name: nameFilter\n },\n __orderby: [{ name: 1 }]\n }\n : {\n __filter: {\n name: nameFilter,\n __bygroupid: moId\n }\n };\n return this.assetSelectorService.queriesUtil.buildQuery(filterByName);\n }\n const defaultFilter = {\n __filter: {\n __bygroupid: moId\n },\n __orderby: [{ name: 1 }]\n };\n return this.assetSelectorService.queriesUtil.buildQuery(defaultFilter);\n }\n\n /**\n * Applies a filter.\n * @param filter The filter to apply.\n */\n async applyFilter(filter: string) {\n this.rootNode.filterQuery$.next(\n this.groupNameFilter(\n filter,\n this.rootNode.mo.id,\n this.isUnassignedDevicesNode() ? true : false\n )\n );\n this.rootNode.refresh();\n this.onLoad.emit({\n loading: true,\n filterText: this.filterText,\n index: this.index,\n selectedDevice: this.selectedDevice\n });\n this.cd.detectChanges();\n }\n\n /**\n * Check if the UnassignedDevice node is the rootNode.\n */\n isUnassignedDevicesNode() {\n return this.rootNode.toString() === UnassignedDevicesNode.NAME;\n }\n\n /**\n * Called when the user resets the search result.\n */\n onSearchResultReset(selectedItem) {\n if (selectedItem) {\n this.rootNode = this.createDefaultRootNode();\n if (this.config.showUnassignedDevices) {\n this.rootNode.add(\n new UnassignedDevicesNode(this.groupNodeService, {\n showChildDevices: this.config.showChildDevices\n })\n );\n }\n if (this.config.view === 'miller') {\n this.onRowSelected.emit({ root: true });\n }\n\n this.rootNode.click({ open: true });\n this.rootNode.nodesFetched\n .pipe(\n tap(() => this.cd.detectChanges()),\n takeUntil(this.unsubscribe$)\n )\n .subscribe();\n\n if (this.config.view === 'tree') {\n this.rootNode.open = true;\n }\n }\n }\n\n /**\n * Called if the user clicks on a search result.\n */\n async onSearchResultClick(mo: IManagedObject) {\n const canSelectNode = this.config.groupsSelectable || !this.groupNodeService.isGroup(mo);\n if (this.config.view === 'miller') {\n this.rootNode = await this.createManagedObjectRootNode(mo);\n this.rootNode.click({ open: true });\n const nodeCopy = Object.create(this.rootNode);\n this.onRowSelected.emit({\n nodeCopy,\n index: 0,\n selectedDevices: this.selectedDevice,\n root: true\n });\n }\n if (!this.config.multi) {\n this.deselectAll();\n }\n if (canSelectNode) {\n this.select(mo);\n }\n }\n\n onLoading(isLoading: boolean) {\n this.onLoad.emit({ loading: isLoading, filterText: this.filterText });\n this.cd.markForCheck();\n }\n\n onSelect(mo: IManagedObject) {\n this.select(mo);\n }\n\n onDeselect(config: { deselectMode: 'single' | 'all'; mo: IManagedObject }) {\n switch (config?.deselectMode) {\n case 'single':\n this.deselect(config.mo);\n this.cd.markForCheck();\n break;\n case 'all':\n this.deselectAll(config.mo);\n break;\n }\n }\n\n private updateHeaderHeight() {\n // An observer is used to detect if the header is visible or not.\n // If the header is not visible, the height is 0 and the observer is\n // used to detect when it becomes visible, to recalculate the height.\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.updateHeaderHeight();\n observer.unobserve(entry.target);\n }\n });\n });\n\n requestAnimationFrame(() => {\n if (this.header?.nativeElement) {\n const { clientHeight } = this.header.nativeElement;\n if (clientHeight === 0 && this.isElementOrParentHidden(this.header.nativeElement)) {\n observer.observe(this.header.nativeElement);\n return;\n }\n this.getHeaderHeight$.next(clientHeight);\n } else {\n this.getHeaderHeight$.next(0);\n }\n });\n }\n\n private isElementOrParentHidden(element: HTMLElement): boolean {\n while (element) {\n const style = window.getComputedStyle(element);\n if (style.display === 'none' || style.visibility === 'hidden') {\n return true;\n }\n element = element.parentElement;\n }\n return false;\n }\n}\n","<div\n class=\"bg-inherit p-t-8 p-b-8 separator-bottom p-r-16 p-l-16 sticky-top\"\n [ngStyle]=\"{ 'z-index': config.singleColumn && config.search ? '30' : '20' }\"\n #header\n [ngClass]=\"{\n 'p-absolute miller-column__selection d-flex flex-wrap a-i-center': config.view === 'miller',\n 'miller-column__search': config.search,\n 'miller-column__multi': config.multi\n }\"\n *ngIf=\"\n !selectedDevice &&\n index === 0 &&\n (config.search || config.multi || config.label?.length || config.showSelected)\n \"\n>\n <p\n class=\"text-medium flex-no-shrink a-s-center\"\n [ngClass]=\"{\n 'm-b-4': config.search && root && config.singleColumn,\n 'm-r-8': !config.singleColumn && !config.search,\n 'fit-w': config.singleColumn\n }\"\n *ngIf=\"config.label?.length\"\n >\n {{ config.label | translate }}\n </p>\n <c8y-search-input\n [ngStyle]=\"{ 'min-width': !config.singleColumn && config.label.length ? '50%' : 'inherit' }\"\n *ngIf=\"config.search && root\"\n (onClick)=\"onSearchResultClick($event)\"\n (reset)=\"onSearchResultReset($event)\"\n [mode]=\"'select'\"\n [container]=\"container\"\n class=\"input-group-sm\"\n [groupsOnly]=\"config.groupsOnly\"\n [ngClass]=\"{\n 'm-l-auto': !config.singleColumn && config.label.length,\n 'fit-w': config.singleColumn || !config.label.length\n }\"\n ></c8y-search-input>\n <div\n class=\"bg-inherit d-flex gap-4 fit-w\"\n *ngIf=\"config.showSelected\"\n [ngClass]=\"{ 'm-t-4': config.search }\"\n >\n <span class=\"text-label-small m-r-4 a-s-center l-h-1\">{{ 'Selected' | translate }}</span>\n <div class=\"flex-grow inner-scroll d-flex gap-4 a-i-center\">\n <ng-container *ngIf=\"!selected.length\">\n <em class=\"text-12 text-muted d-flex a-i-center fit-h-20\">{{ 'None' | translate }}</em>\n </ng-container>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ selectedItem.name }}\"\n [disabled]=\"disabled\"\n type=\"button\"\n (click)=\"config.multi ? deselect(selectedItem) : deselectAll()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.name || (ASSET_CONST | translate: { assetId: selectedItem.id }) }}\n </span>\n </div>\n </div>\n</div>\n\n<div\n class=\"p-r-16\"\n *ngIf=\"selectedDevice\"\n>\n <div class=\"d-flex p-b-4\">\n <p\n class=\"text-medium p-t-8 m-r-8\"\n *ngIf=\"selectedDevice; else multiAssets\"\n >\n {{ 'Selected asset' | translate }}\n </p>\n <ng-template #multiAssets>\n <p class=\"text-medium m-r-8\">{{ 'Selected assets' | translate }}</p>\n </ng-template>\n <button\n class=\"btn btn-default btn-xs a-s-center m-t-4 m-l-auto\"\n title=\"{{ 'Change' | translate }}\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); clearSelectedDevices()\"\n >\n {{ 'Change' | translate }}\n </button>\n </div>\n <div class=\"d-flex\">\n <i\n class=\"text-success p-l-0 p-r-8\"\n [c8yIcon]=\"'check-circle'\"\n ></i>\n <i\n class=\"m-r-4 icon-20\"\n [c8yIcon]=\"selectedDevice | getGroupIcon | async\"\n ></i>\n <span>{{ selectedDevice.name }}</span>\n </div>\n</div>\n\n<!-- miller columns header -->\n<div\n class=\"miller-column__header sticky-top bg-inherit separator-bottom\"\n *ngIf=\"\n config.view === 'miller' &&\n ((config.showFilter && !rootNode.root) || config.columnHeaders) &&\n !selectedDevice\n \"\n [ngClass]=\"{ 'p-t-8': config.search }\"\n>\n <div class=\"d-flex\" *ngIf=\"config.singleColumn && index !== 0\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"home\"\n ></i>\n <p\n class=\"text-12 text-muted text-truncate text-rtl m-b-4\"\n title=\"{{ rootNode.breadcrumb || rootNode.label | translate }}\"\n >\n {{ rootNode.breadcrumb || rootNode.label | translate }}\n </p>\n </div>\n <div\n class=\"d-flex a-i-center\"\n *ngIf=\"config.columnHeaders || config.singleColumn\"\n >\n <button\n class=\"btn btn-default btn-xs m-r-8 p-t-0 p-b-0 p-l-4 p-r-4 l-h-1\"\n title=\"{{ 'Back' | translate }}\"\n type=\"button\"\n *ngIf=\"config.singleColumn && !rootNode.root && index !== 0\"\n (click)=\"$event.stopPropagation(); back()\"\n >\n <i c8yIcon=\"angle-left\"></i>\n </button>\n <label\n class=\"c8y-radio checkbox-inline m-r-8\"\n *ngIf=\"!rootNode.root && index === 0 && (config.groupsSelectable || !rootNode.isGroup())\"\n >\n <input\n title=\"{{ 'Select group' | translate }}\"\n type=\"radio\"\n (change)=\"select(rootNode.mo)\"\n [checked]=\"isGroupSelected()\"\n />\n <span></span>\n </label>\n\n <i\n class=\"icon-20 c8y-icon-duocolor m-r-4\"\n [c8yIcon]=\"this.rootNode.mo | getGroupIcon: true : this.rootNode.icon | async\"\n *ngIf=\"config.columnHeaders && (config.singleColumn || (!rootNode.root && index === 0))\"\n ></i>\n <p\n class=\"text-truncate\"\n title=\"{{ rootNode.label | translate }}\"\n *ngIf=\"config.columnHeaders\"\n [ngClass]=\"{\n 'text-label-small': !config.singleColumn,\n 'text-medium': config.singleColumn\n }\"\n >\n {{ rootNode.label | translate }}\n </p>\n </div>\n\n <div\n *ngIf=\"!rootNode.root && config.showFilter\"\n [ngClass]=\"{ 'p-t-4': config.columnHeaders }\"\n >\n <div class=\"input-group input-group-sm input-group-search\">\n <input\n class=\"form-control text-truncate\"\n placeholder=\"{{ 'Filter this column…' | translate }}\"\n [(ngModel)]=\"filterText\"\n (keyup.enter)=\"applyFilter('*' + filterText + '*')\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot p-r-8 p-l-4\"\n title=\"{{ 'Apply filter' | translate }}\"\n type=\"button\"\n (click)=\"applyFilter('*' + filterText + '*')\"\n >\n <i c8yIcon=\"filter\"></i>\n </button>\n <button\n class=\"btn btn-dot p-r-8 p-l-4\"\n title=\" {{ 'Clear filters' | translate }}\"\n type=\"button\"\n (click)=\"clearFilters()\"\n *ngIf=\"filterText.length\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </span>\n </div>\n </div>\n</div>\n\n<c8y-asset-selector-node\n class=\"d-block bg-inherit p-relative\"\n style=\"z-index: 9\"\n *ngIf=\"rootNode && !selectedDevice\"\n [node]=\"rootNode\"\n [rootNode]=\"rootNode\"\n [preselected]=\"selected\"\n [multi]=\"config.multi\"\n [view]=\"config.view\"\n [index]=\"index\"\n [active]=\"active\"\n [disabled]=\"disabled\"\n [handleNextMillerViewColumn]=\"handleNextMillerViewColumn.bind(this)\"\n (isLoadingState)=\"onLoading($event)\"\n (onSelect)=\"onSelect($event)\"\n (onDeselect)=\"onDeselect($event)\"\n [ngClass]=\"{ 'collapse show': !rootNode.root && !rootNode.hidden && config.view !== 'miller' }\"\n></c8y-asset-selector-node>\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n forwardRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IIdentified, IManagedObject, InventoryService } from '@c8y/client';\nimport { of } from 'rxjs';\nimport { first, startWith, map, switchMap } from 'rxjs/operators';\nimport { AssetSelectorBase } from './asset-selector-base';\nimport { AssetSelectorComponent } from './asset-selector.component';\nimport { AssetSelectionChangeEvent, AssetSelectorOptions } from './asset-selector.model';\nimport { AssetSelectorService } from './asset-selector.service';\nimport { GroupNode } from './group-node';\nimport { GroupNodeService } from './group-node.service';\nimport {\n gettext,\n LoadingComponent,\n EmptyStateComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { NgStyle, NgClass, NgFor, NgIf, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-asset-selector-miller',\n templateUrl: './miller-view.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MillerViewComponent),\n multi: true\n }\n ],\n imports: [\n NgStyle,\n NgClass,\n NgFor,\n AssetSelectorComponent,\n NgIf,\n LoadingComponent,\n EmptyStateComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class MillerViewComponent extends AssetSelectorBase implements OnInit {\n /**\n * Config object containing all options for the asset selector.\n */\n @Input() config: AssetSelectorOptions = {};\n /**\n * The asset to use as root.\n */\n @Input() asset: IIdentified = undefined;\n /**\n * The selected devices.\n */\n @Input() selectedDevice: IManagedObject = undefined;\n /**\n * The node to use as root. You can either set this, or the asset to start from.\n */\n @Input() rootNode: GroupNode;\n /**\n * Emits if the selection changes\n */\n @Output() onSelected = new EventEmitter<AssetSelectionChangeEvent>();\n /**\n * Emits if the currently selected asset is cleared.\n */\n @Output() onClearSelected = new EventEmitter<void>();\n /**\n * @ignore\n */\n @ViewChild('millerViewWrapper') millerViewWrapper: ElementRef;\n /**\n * The column array will contain all currently selected nodes\n * which will form the miller view columns (only one per level).\n */\n columns = [];\n /**\n * The current filter applied. Used for the empty state text in the view.\n */\n filterText = '';\n /**\n * Index of the column used to check where to show the loading state.\n */\n columnIndex: number;\n @Input() container: '' | 'body' = 'body';\n\n configOptionsDefault: AssetSelectorOptions = {\n view: 'miller',\n singleColumn: false,\n label: gettext('Asset selection')\n };\n\n /**\n * The height of the first asset selector header.\n */\n assetSelectorHeaderHeight$ = of('0px');\n\n @ViewChildren(AssetSelectorComponent)\n private assetSelectors: QueryList<AssetSelectorComponent>;\n\n constructor(\n protected groupNodeService: GroupNodeService,\n protected inventory: InventoryService,\n protected assetSelectorService: AssetSelectorService,\n protected cd: ChangeDetectorRef\n ) {\n super(groupNodeService, inventory, assetSelectorService);\n }\n\n /**\n * @ignore\n */\n async ngOnInit() {\n this.config = { ...this.configOptionsDefault, ...this.config };\n\n const isAnyNodeDefined =\n !this.rootNode && (!this.asset || Object.keys(this.asset).length === 0);\n if (isAnyNodeDefined) {\n this.rootNode = this.createDefaultRootNode();\n }\n\n const isOnlyAssetNodeDefined = this.asset && Object.keys(this.asset).length !== 0;\n if (isOnlyAssetNodeDefined) {\n this.rootNode = await this.createManagedObjectRootNode(this.asset);\n this.rootNode.click();\n if (!this.config.preventInitialSelect) {\n const selected = this.selectedDevice || this.asset;\n this.selected = [selected];\n this.emitChange(this.selected, selected as IManagedObject, true);\n }\n }\n\n this.columns.push(this.rootNode);\n }\n\n /**\n * @ignore\n */\n async ngOnChanges(changes: SimpleChanges) {\n if (changes.asset && changes.asset.currentValue && !this.asset) {\n this.columns = [];\n this.columns.push(await this.createManagedObjectRootNode(changes.asset.currentValue));\n }\n\n if (changes.selectedDevice && changes.selectedDevice.currentValue) {\n this.selected = [this.selectedDevice];\n this.emitChange(this.selected, this.selectedDevice as IManagedObject, true);\n }\n }\n\n /**\n * @ignore\n */\n ngAfterViewInit(): void {\n requestAnimationFrame(() => {\n this.assetSelectorHeaderHeight$ = this.assetSelectors.changes.pipe(\n startWith(this.assetSelectors.toArray()),\n first(),\n switchMap(assetSelector =>\n assetSelector[0] ? assetSelector[0].getHeaderHeight$ : of('0')\n ),\n map(height => height + 'px')\n );\n });\n }\n\n /**\n * Create a new column with the selected node as root.\n */\n addNewColumn(node): void {\n const level = node.index;\n this.selectedDevice = node.selectedDevices || undefined;\n if (node.root) {\n window.requestAnimationFrame(() => (this.millerViewWrapper.nativeElement.scrollLeft = 0));\n this.columns.length = 1;\n }\n\n const isLevelLowerThanColumnNumber = level < this.columns.length - 1;\n let goBack = false;\n if (isLevelLowerThanColumnNumber) {\n this.columns.length = level + 1;\n goBack = true;\n }\n if (!node.root && !(this.config.singleColumn && goBack)) {\n this.columns.push(node.nodeCopy);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const col = this;\n window.requestAnimationFrame(() => (col.millerViewWrapper.nativeElement.scrollLeft = 50000));\n /* triggered twice with a small delay as a workaround for dealing with Safari's bug:\n \"Safari doesn’t update the scrollTop / scrollLeft properties of an element its any of its\n ancestors has overflow set to hidden.\"\n This was reported on customer portal with the ticket SI-488573\n */\n setTimeout(function () {\n window.requestAnimationFrame(\n () => (col.millerViewWrapper.nativeElement.scrollLeft = 55000)\n );\n }, 700);\n }\n }\n\n /**\n * Change the loading state of the asset selector.\n */\n onLoad(event) {\n this.isLoading = event.loading;\n this.filterText = event.filterText;\n this.columnIndex = event.index;\n this.selectedDevice = event.selectedDevice;\n this.cd.detectChanges();\n }\n\n /**\n * Add the selected node to the selected array.\n */\n onSelectionChange(event: AssetSelectionChangeEvent): void {\n if (!this.config.multi) {\n this.deselectAll(event.change.item);\n return;\n }\n if (event.change.isSelected) {\n this.select(event.change.item);\n return;\n }\n this.deselect(event.change.item);\n }\n}\n","<div\n class=\"miller-view-wrapper {{ config.label }}\"\n [ngStyle]=\"{\n 'padding-top': selectedDevice ? '0px' : (assetSelectorHeaderHeight$ | async)\n }\"\n #millerViewWrapper\n [ngClass]=\"{\n 'single-column': config.singleColumn,\n }\"\n>\n <div\n class=\"miller-column bg-inherit\"\n *ngFor=\"let column of columns; index as i\"\n >\n <c8y-asset-selector\n class=\"bg-inherit\"\n #assetSelector\n [config]=\"config\"\n [index]=\"i\"\n [active]=\"columns[i + 1]\"\n [rootNode]=\"column\"\n [selected]=\"selected || []\"\n [selectedDevice]=\"selectedDevice\"\n (onSelected)=\"onSelectionChange($event)\"\n (onClearSelected)=\"onClearSelected.emit()\"\n (onRowSelected)=\"addNewColumn($event)\"\n (onLoad)=\"onLoad($event)\"\n [container]=\"container\"\n ></c8y-asset-selector>\n <div\n class=\"p-relative p-b-64\"\n *ngIf=\"isLoading && columnIndex === i && !selectedDevice\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <div\n class=\"p-l-8 p-r-8\"\n *ngIf=\"!column.children.length && !isLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'folder-open'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'The selected asset has no children.' | translate\"\n *ngIf=\"!filterText; else noSearchResults\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <ng-template #noSearchResults>\n <c8y-ui-empty-state\n [icon]=\"'folder-open'\"\n [title]=\"'No results to display for the current filter.' | translate\"\n [subtitle]=\"'There are no assets matching the filter.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </ng-template>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule, CommonModule, CoreSearchModule } from '@c8y/ngx-components';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { GroupNodeService } from './group-node.service';\n\nimport { AssetSelectorNodeComponent } from './asset-selector-node.component';\nimport { AssetSelectorComponent } from './asset-selector.component';\nimport { FormsModule } from '@angular/forms';\nimport { MillerViewComponent } from './miller-view.component';\nimport { AssetSelectorService } from './asset-selector.service';\n\n@NgModule({\n imports: [\n CoreModule,\n CommonModule,\n CollapseModule,\n BsDropdownModule,\n CoreSearchModule,\n FormsModule,\n AssetSelectorNodeComponent,\n AssetSelectorComponent,\n MillerViewComponent\n ],\n exports: [AssetSelectorNodeComponent, AssetSelectorComponent, MillerViewComponent],\n providers: [GroupNodeService, AssetSelectorService]\n})\nexport class AssetSelectorModule {}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DeviceStatusModule, hookNavigator, ModalModule, ModalService } from '@c8y/ngx-components';\nimport { AssetNavigatorConfig, ASSET_NAVIGATOR_CONFIG } from './asset-node-config.model';\nimport { AssetNodeFactory } from './asset-node.factory';\nimport { AssetNodeService } from './asset-node.service';\nimport { AssetSelectorModule } from './asset-selector/asset-selector.module';\n\n@NgModule({\n declarations: [],\n imports: [ModalModule, AssetSelectorModule, DeviceStatusModule],\n providers: [ModalService, AssetNodeService, hookNavigator(AssetNodeFactory)]\n})\nexport class AssetsNavigatorModule {\n static config(config: AssetNavigatorConfig = {}): ModuleWithProviders<AssetsNavigatorModule> {\n return {\n ngModule: AssetsNavigatorModule,\n providers: [\n {\n provide: ASSET_NAVIGATOR_CONFIG,\n useValue: config\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["getProp","i1","i2.AssetSelectorService","i1.GroupNodeService","i3.AssetSelectorService"],"mappings":";;;;;;;;;;;;;;;;;;;;IAAY;AAAZ,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,qBAAA,CAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,qBAAA,CAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,qBAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACd,CAAC,EALW,qBAAqB,KAArB,qBAAqB,GAAA,EAAA,CAAA,CAAA;;ACE3B,MAAO,YAAa,SAAQ,aAAa,CAAA;aACtC,IAAA,CAAA,IAAI,GAAG,cAAH,CAAkB;AAK7B,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AALT,QAAA,IAAA,CAAA,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;QAC5B,IAAA,CAAA,IAAI,GAAG,MAAM;QACb,IAAA,CAAA,SAAS,GAAG,IAAI;AAId,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ;IAC3B;IAEA,QAAQ,GAAA;QACN,OAAO,YAAY,CAAC,IAAI;IAC1B;IAEA,OAAO,GAAA;AACL,QAAA,OAAO,KAAK;IACd;;;ACJI,MAAO,SAAU,SAAQ,aAAa,CAAA;aACnC,IAAA,CAAA,IAAI,GAAG,WAAH,CAAe;AAY1B,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY;IAC/B;AAEA,IAAA,IAAI,6BAA6B,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,sBAAsB;IACrD;AAEA,IAAA,IAAI,sBAAsB,GAAA;QACxB,QACE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,CAAC,IAAI,CAAC,QAAQ;AACd,YAAA,CAAC,IAAI,CAAC,IAAI;IAEd;IAQA,WAAA,CACY,OAAyB,EACzB,MAAA,GAA4B,EAAE,EAAA;QAExC,KAAK,CAAC,MAAM,CAAC;QAHH,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,MAAM,GAAN,MAAM;QAtClB,IAAA,CAAA,WAAW,GAAG,KAAK;AACnB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;QAC9C,IAAA,CAAA,gBAAgB,GAAG,KAAK;AAExB;;AAEG;QACH,IAAA,CAAA,QAAQ,GAAgB,EAAE;AAwB1B,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAE;QAWzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK;QAC9B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW;QACzD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,kBAAkB,IAAI,CAAC,IAAI,CAAC,IAAI;AAC9E,QAAA,IAAI,CAAC,SAAS;AACZ,YAAA,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,kBAAkB,IAAI,CAAC,IAAI,CAAC,6BAA6B;AACxF,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;aAC9B,QAAQ,CAAC,IAAI;AACb,aAAA,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,EAAE;AACf,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,6BAA6B,GAAG,qBAAqB,GAAG,SAAS;IAC7F;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI;QACzB;QAEA,OAAO,IAAI,CAAC;AACV,cAAE;cACA,IAAI,CAAC;AACL,kBAAE,CAAA,OAAA,EAAU,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;kBACpB,SAAS,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IAC7B;AAEA,IAAA,OAAO,CAAC,EAAA,GAAU,EAAE,EAAE,MAAM,GAAG,KAAK,EAAA;QAClC,IAAI,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,EAAE,GAAG,EAAE;YACZ,IAAI,CAAC,QAAQ,EAAE;QACjB;AAAO,aAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAe,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YACzD;QACF;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;QACjD;IACF;IAEA,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;AAClC,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC;AACnD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC5B;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC7B;IACF;IAEA,KAAK,CAAC,UAAwB,EAAE,EAAA;QAC9B,IAAI,IAAI,CAAC,6BAA6B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAChE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3C;QACF;QACA,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAC/C;IACF;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAC1B,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE;gBAC3B,OAAO,CAAC,CAAC;YACX;iBAAO,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE;AAClC,gBAAA,OAAO,CAAC;YACV;iBAAO;AACL,gBAAA,OAAO,CAAC;YACV;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,gBAAgB,CAAC,EAAE,EAAA;AACjB,QAAA,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE;QAClC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE;YAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/E;IACF;IAEA,eAAe,CAAC,cAAc,EAAE,EAAE,EAAA;QAChC,QACE,cAAc,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAEjG;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE;IACzC;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;QAC3C,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,sBAAsB,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC;AACzE,YAAA,MAAM,cAAc,GAAI,IAAI,CAAC,QAAwB,CAAC,IAAI,CACxD,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,EAAE,CACtD;YACD,MAAM,WAAW,GAAG,IAAI,KAAK,UAAU,IAAI,sBAAsB,IAAI,cAAc;AACnF,YAAA,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9E;QACA,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA,IAAA,SAAS,CAAC,MAAM,EAAA;AACd,QAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI;QAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,6BAA6B;IACvE;AAEA,IAAA,OAAO,CAAC,MAAM,EAAA;AACZ,QAAA,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB;IAEA,MAAM,IAAI,CAAC,MAAM,EAAA;AACf,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;;QAG3C,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;AAC5E,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS;YACpC;QACF;AAEA,QAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAClB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACjC;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS;QACtC;IACF;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAG;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACvB;AACF,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,QAAQ,GAAA;QACN,OAAO,SAAS,CAAC,IAAI;IACvB;AAEA;;AAEG;IACH,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;IACtF;IAEU,KAAK,GAAA;QACb,OAAO,IAAI,CAAC;AACV,cAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AAC3B,cAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CACxB,IAAI,CAAC,EAAE,CAAC,EAAE,EACV,IAAI,CAAC;AACH,kBAAE;AACE,oBAAA,KAAK,EAAE,CAAA,aAAA,EAAgB,aAAa,CAAC,iBAAiB,CAAA,eAAA;AACvD;kBACD,EAAE,CACP;IACP;IAEU,MAAM,UAAU,CAAC,IAAI,EAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI;;AAEjC,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,iBAAiB,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,EAC/C,IAAI,CACL;IACH;IAEU,aAAa,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM;IAC7B;IAEU,MAAM,WAAW,CAAC,GAA0B,EAAA;AACpD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,KAAK,qBAAqB,CAAC,KAAK,EAAE;AAChE,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACtB;AAAO,aAAA,IAAI,GAAG,KAAK,qBAAqB,CAAC,IAAI,EAAE;AAC7C,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI;YAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK;QACnC;AAAO,aAAA,IAAI,GAAG,KAAK,qBAAqB,CAAC,OAAO,EAAE;AAChD,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS;AACvB,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;YAC7B,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAC/C;IACF;AAEU,IAAA,QAAQ,CAAC,GAAG,EAAA;AACpB,QAAA,IAAI,GAAG,CAAC,MAAM,EAAE;AACd,YAAA,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACtE,YAAA,IAAI,WAAW,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,KAAK,EAAE;YACd;AACA,YAAA,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;YAClC,MAAM,kBAAkB,GAAG,CAAC,CAAC,QAAQ,IAAI,UAAU,KAAK,QAAQ;AAChE,YAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;QACzC;QACA,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,IAAG;AACzB,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;AAClC,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC;AACpD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAEU,IAAA,cAAc,CAAC,IAAa,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE;AAC9B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE;AACtC,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE;AAC1F,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,QAAQ,EAAE;AACX,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI;QAClC;IACF;IAEQ,MAAM,QAAQ,CAAC,UAAqB,EAAA;AAC1C,QAAA,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACrD,YAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AACvC,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;YACxC;YACA,IAAI,CAAC,MAAM,EAAE;QACf;QAAE,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE;gBACN,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACzC;QACF;gBAAU;AACR,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS;QACtC;IACF;IAEQ,MAAM,eAAe,CAAC,UAAqB,EAAA;QACjD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,gCAAgC,CAAC;AAChE,QAAA,MAAM,OAAO,GAAQ;AACnB,YAAA;AACE,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AACtB,gBAAA,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK;AACpC;SACF;AACD,QAAA,IAAI,UAAU,CAAC,6BAA6B,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,wCAAwC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;AACrB,gBAAA,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI;AACnC,aAAA,CAAC;QACJ;QACA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACnC;IAEQ,MAAM,gBAAgB,CAAC,UAAqB,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAChE;IAEQ,MAAM,YAAY,CAAC,UAAqB,EAAA;AAC9C,QAAA,IAAI,EAAe;AAEnB,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC1C,EAAE,GAAG,CACH,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;AAClC,gBAAA,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE;gBACpB,IAAI,EAAE,aAAa,CAAC;aACrB,CAAC,EACF,IAAI;AAEN,YAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACzB;QACF;QAEA,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI;AAC/E,QAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC3B;AAEQ,IAAA,OAAO,CAAC,UAAqB,EAAA;;;AAGnC,QAAA,OAAO,UAAU,CAAC,EAAE,EAAE,WAAW;IACnC;IAEQ,MAAM,eAAe,CAAC,UAAqB,EAAA;AACjD,QAAA,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAsB,EAAE;AACtD,YAAA,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,gBAAgB,EAAE;AAClE,gBAAA,MAAM;YACR;AAEA,YAAA,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC5C,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;AAClC,oBAAA,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE;oBACpB,IAAI,EAAE,aAAa,CAAC;AACrB,iBAAA,CAAC;YACJ;AAEA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAChB,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;YAC1E;AACA,YAAA,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QAC3B;IACF;;;AC9XI,MAAO,gBAAiB,SAAQ,SAAS,CAAA;AAC7C,IAAA,WAAA,CAAsB,OAAyB,EAAE,MAAM,GAAG,EAAE,EAAA;AAC1D,QAAA,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;QADF,IAAA,CAAA,OAAO,GAAP,OAAO;AAE3B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,qBAAqB;IACtC;IAEU,KAAK,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;IACtD;AACD;;MClBY,sBAAsB,GAAG,IAAI,cAAc,CAAuB,iBAAiB;;ACKhG;;;;AAIG;MACU,kBAAkB,CAAA;AAC7B,IAAA,WAAA,CAAoB,0BAAsD,EAAA;QAAtD,IAAA,CAAA,0BAA0B,GAA1B,0BAA0B;IAA+B;AAE7E,IAAA,IAAI,CAAC,EAAkB,EAAE,IAAI,GAAG,KAAK,EAAA;QACnC,OAAO,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC;IAC1D;AAEA,IAAA,OAAO,CAAC,EAAkB,EAAA;QACxB,OAAO,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;IACpD;AAEA,IAAA,cAAc,CAAC,EAAkB,EAAA;QAC/B,OAAO,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,EAAE,CAAC;IAC3D;AAEA,IAAA,YAAY,CAAC,EAAkB,EAAA;QAC7B,OAAO,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,CAAC;IACzD;AAEA,IAAA,kBAAkB,CAAC,EAAkB,EAAA;QACnC,OAAO,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/D;AAEA,IAAA,OAAO,CAAC,EAAkB,EAAA;QACxB,OAAO,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;IACpD;AAEA,IAAA,UAAU,CAAC,EAAkB,EAAA;QAC3B,OAAO,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC;IACvD;AAEA,IAAA,QAAQ,CAAC,EAAkB,EAAA;QACzB,OAAO,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrD;+GAjCW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cARjB,MAAM,EAAA,CAAA,CAAA;;4FAQP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MC4BY,gBAAgB,CAAA;AAqB3B,IAAA,WAAA,GAAA;QAnBA,IAAA,CAAA,QAAQ,GAAG,IAAI;QAGL,IAAA,CAAA,SAAS,GAAG,EAAE;AAExB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEjC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AAC1B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC;AAClC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAEvC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAG/B,IAAI,CAAC,YAAY,GAAG;AAClB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,IAAI,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;SAC7D;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE;QAEpC,IAAI,CAAC,MAAM,CAAC;aACT,IAAI,CACH,MAAM,CACJ,CAAC,KAAoB,KACnB,KAAK,YAAY,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CACrE,EACD,KAAK,EAAE;AAER,aAAA,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAI;AAC1B,YAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACnC,QAAA,CAAC,CAAC;IACN;AAEA;;;AAGG;IACH,MAAM,kBAAkB,CAAC,QAAgC,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;QACF;QACA,IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,KAAK,WAAW,CAAC,KAAK;YAC5C,QAAQ,CAAC,IAAI,EAAE,OAAO,KAAK,WAAW,CAAC,MAAM,EAC7C;AACA,YAAA,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;AACtE,gBAAA,WAAW,EAAE;AACd,aAAA,CAAC;AAEF,YAAA,MAAM,yBAAyB,GAAG;AAChC,gBAAA,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,KAAI;oBACxD,OAAO,aAAa,CAAC,EAAE;AACzB,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,CAAC;aACN;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC;YACxD;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnC;IACF;AAEA;;;;AAIG;IACH,SAAS,CAAC,IAAe,EAAE,GAAa,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;QAChB,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC;AACF,iBAAA,IAAI,CACH,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,qBAAqB,CAAC,YAAY,CAAC,EAC/D,KAAK,EAAE;iBAER,SAAS,CAAC,MAAK;AACd,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrC,SAAS,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAC/D;gBACD,IAAI,YAAY,EAAE;oBAChB,IAAI,CAAC,SAAS,CACZ,YAAY,EACZ,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAC5C;gBACH;AACF,YAAA,CAAC,CAAC;QACN;IACF;AAEA,IAAA,KAAK,CAAC,EAAkB,EAAA;QACtB,QACE,EAAE,CAAC,IAAI;AACP,aAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACzE,YAAA,IAAI;IAER;IAEA,IAAI,CAAC,EAAkB,EAAE,IAAc,EAAA;QACrC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;IAC/C;AAEA,IAAA,OAAO,CAAC,EAAkB,EAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5C;AAEA,IAAA,cAAc,CAAC,EAAkB,EAAA;QAC/B,OAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC;IACnD;AAEA,IAAA,YAAY,CAAC,EAAkB,EAAA;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;IACjD;AAEA,IAAA,kBAAkB,CAAC,EAAkB,EAAA;QACnC,OAAO,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACvD;AAEA,IAAA,OAAO,CAAC,EAAkB,EAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5C;AAEA,IAAA,UAAU,CAAC,EAAkB,EAAA;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;IAC/C;AAEA,IAAA,QAAQ,CAAC,EAAkB,EAAA;QACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC7C;IAEA,cAAc,CAAC,SAA4B,EAAE,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;AACnC,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,GAAG,MAAM;AACT,YAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB;AAC5C,YAAA,SAAS,EAAE;AACZ,SAAA,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ;IACtB;AAEA,IAAA,sBAAsB,CAAC,MAAM,EAAA;AAC3B,QAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;IAC3C;AAEA,IAAA,eAAe,CAAC,MAA0B,EAAA;AACxC,QAAA,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IACpC;IAEA,eAAe,CAAC,aAAa,EAAE,MAA0B,EAAA;AACvD,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa;AAC9B,QAAA,MAAM,CAAC,EAAE,GAAG,aAAa;AACzB,QAAA,IAAI,IAAI,KAAK,aAAa,CAAC,gBAAgB,EAAE;AAC3C,YAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;QAC5C;AACA,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACrC;AAEA,IAAA,YAAY,CAAC,YAAkB,EAAA;AAC7B,QAAA,MAAM,aAAa,GAAG;YACpB,QAAQ,EAAE,IAAI,CAAC,SAAS;AACxB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,SAAS,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,qBAAqB;YACrD,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE;SAC7D;QACD,MAAM,WAAW,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,YAAY,EAAE;;AAGzD,QAAA,IACE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK;AACjC,YAAA,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE;AACrD,gBAAA,WAAW,CAAC,mBAAmB;AAC/B,gBAAA,WAAW,CAAC;AACb,aAAA,CAAC,EACF;YACA,OAAO,WAAW,CAAC,KAAK;AACxB,YAAA,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE;gBACzB,YAAY,EAAE,aAAa,CAAC,iBAAiB;AAC7C,gBAAA,SAAS,EAAE;AACZ,aAAA,CAAC;QACJ;AACA,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5D;AAEA,IAAA,iBAAiB,CAAC,YAAkB,EAAA;AAClC,QAAA,MAAM,aAAa,GAAG;YACpB,QAAQ,EAAE,IAAI,CAAC,SAAS;AACxB,YAAA,YAAY,EAAE;SACf;QACD,MAAM,WAAW,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,YAAY,EAAE;AACzD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5D;AAEA,IAAA,aAAa,CAAC,IAAY,EAAE,WAAA,GAAsB,EAAE,EAAE,YAAY,GAAG,KAAK,EAAE,WAAW,GAAG,EAAE,EAAA;AAC1F,QAAA,MAAM,WAAW,GAAG;YAClB,YAAY;YACZ,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW;SAC/C;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC;IACjF;AAEA,IAAA,oBAAoB,CAAC,YAAY,GAAG,KAAK,EAAE,WAAW,GAAG,EAAE,EAAA;AACzD,QAAA,MAAM,WAAW,GAAQ;AACvB,YAAA,YAAY,EAAE,cAAc;AAC5B,YAAA,SAAS,EAAE,IAAI;YACf,YAAY;YACZ,QAAQ,EAAE,IAAI,CAAC,SAAS;AACxB,YAAA,CAAC,EAAE,IAAI,CAAC,4BAA4B,CAAC,WAAW;SACjD;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5D;AAEA,IAAA,oBAAoB,CAAC,UAAkB,EAAE,SAAA,GAAiB,EAAE,EAAA;QAC1D,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,GAAG,SAAS;QAC3C,MAAM,YAAY,GAAG,KAAK;AAC1B,QAAA,MAAM,WAAW,GAAG;YAClB,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,YAAY,CAAC;AACpD,YAAA,GAAG;SACJ;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5D;AAEA,IAAA,iBAAiB,CACf,IAAY,EACZ,WAAA,GAAsB,EAAE,EACxB,WAAW,GAAG,EAAE,EAChB,YAAY,GAAG,KAAK,EAAA;AAEpB,QAAA,MAAM,WAAW,GAAG;YAClB,YAAY;YACZ,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW;SAC/C;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC;IAClF;AAEA,IAAA,4BAA4B,CAAC,WAAW,EAAA;QACtC,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;;QAEpD,MAAM,eAAe,GAAG,eAAe;;AAGvC,QAAA,OAAO,UAAU,IAAI,CAAC,WAAW,GAAG,eAAe,GAAG,WAAW;IACnE;IAEA,gBAAgB,CAAC,IAAY,EAAE,WAAoB,EAAA;QACjD,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,CAAA,mBAAA,EAAsB,IAAI,CAAA,eAAA,CAAiB;QACpD;AACA,QAAA,OAAO,WAAW;IACpB;IAEA,kBAAkB,GAAA;AAChB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE;QAC5C,aAAa,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACvC,QAAA,OAAO,aAAa;IACtB;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI;AAC7B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;AACrC,cAAE;AACE,gBAAA,QAAQ,EAAE;oBACR,IAAI,EAAE,aAAa,CAAC;AACrB,iBAAA;AACD,gBAAA,SAAS,EAAE;AACZ;AACH,cAAE;AACE,gBAAA,QAAQ,EAAE;oBACR,KAAK,EAAE,aAAa,CAAC;AACtB,iBAAA;AACD,gBAAA,SAAS,EAAE;aACZ;AACL,QAAA,IAAI,YAAY,CAAC,WAAW,EAAE;AAC5B,YAAA,MAAM,WAAW,GAAG;AAClB,gBAAA,QAAQ,EAAE;AACR,oBAAA,KAAK,EAAE;AACL,wBAAA;4BACE,IAAI,EAAE,aAAa,CAAC;AACrB,yBAAA;AACD,wBAAA;4BACE,KAAK,EAAE,aAAa,CAAC;AACtB,yBAAA;wBACD,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA,EAAG,aAAa,CAAC,oBAAoB,CAAA,UAAA,CAAY,EAAE;AACtE;AACF;aACF;YACD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC;QACvD;AACA,QAAA,OAAO,UAAU;IACnB;AAEA,IAAA,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAA;AACnB,QAAA,IAAI,EAAE,CAAC,EAAE,EAAE;YACT,OAAO,IAAI,CAAC;iBACT,YAAY,CACX,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KACd,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1C,gBAAA,MAAM,CAAC,CAAA,yBAAA,EAA4B,EAAE,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;iBAExD,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAC/B,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,EACvC,QAAQ,EAAC,IAAI,CAAC,UAAU,CAAC,WAA2B,EAAC,EACrD,MAAM,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CACnD;QACL;aAAO,IAAI,IAAI,EAAE;YACf,OAAO,IAAI,CAAC;iBACT,YAAY,CACX,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,KAAK,MAAM;iBAE1F,IAAI,CACH,QAAQ,EAAC,IAAI,CAAC,UAAU,CAAC,WAA2B,EAAC,EACrD,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAC1D;QACL;aAAO;YACL,OAAO,KAAK,EAAE;QAChB;IACF;IAEA,sBAAsB,CAAC,WAA6C,EAAE,EAAA;AACpE,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ;QACzB,IAAI,WAAW,GAAG,KAAK;AAEvB,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;YACrD,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;gBACjD,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;YAC1D;QACF;AACA,QAAA,OAAO,WAAW;IACpB;AAEA;;;AAGG;AACH,IAAA,WAAW,CAAC,UAAmB,EAAA;QAC7B,QACE,CAAC,UAAU;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE;AACpD,gBAAA,WAAW,CAAC,oBAAoB;AAChC,gBAAA,WAAW,CAAC;AACb,aAAA,CAAC;IAEN;AAEA;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,OAAwB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D;IACF;IAEU,YAAY,CAAC,cAAmB,EAAE,EAAA;AAC1C,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,QAAQ,EAAE;SACX;AACD,QAAA,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,WAAW,EAAE;IACtC;IAEQ,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAA;AACvC,QAAA,IAAI,aAAa;AACjB,QAAA,IAAI,MAAM,IAAI,MAAM,EAAE;AACpB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AAC9C,gBAAA;AACE,oBAAA,sBAAsB,EAAE;AACzB,iBAAA;AACD,gBAAA;AACE,oBAAA,sBAAsB,EAAE;AACzB;AACF,aAAA,CAAC;AACF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC/E,YAAA,aAAa,GAAG,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,YAAY,EAAE;QAClD;aAAO;AACL,YAAA,aAAa,GAAG,MAAM,IAAI,MAAM,IAAI,EAAE;QACxC;AACA,QAAA,OAAO,aAAa;IACtB;+GA3YW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;4FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MC1BY,gBAAgB,CAAA;IAC3B,WAAA,CACU,OAAyB,EACkB,YAAkC,EAAA;QAD7E,IAAA,CAAA,OAAO,GAAP,OAAO;QACoC,IAAA,CAAA,YAAY,GAAZ,YAAY;IAC9D;IAEH,GAAG,GAAA;AACD,QAAA,MAAM,iBAAiB,GAAGA,GAAO,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,IAAI,IAAI;AACjF,QAAA,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO;AAE/B,QAAA,IAAI,iBAAiB,KAAK,KAAK,EAAE;YAC/B;QACF;QAEA,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,KAAK,IAAI,GAAG,EAAE,GAAG,iBAAiB,CAAC;QAC7F;AACA,QAAA,OAAO,QAAQ;IACjB;AAlBW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,+CAGL,sBAAsB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAHjC,gBAAgB,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;0BAII;;0BAAY,MAAM;2BAAC,sBAAsB;;;ACLxC,MAAO,SAAU,SAAQ,SAAS,CAAA;aAC/B,IAAA,CAAA,IAAI,GAAG,WAAH,CAAe;AAqB1B;;;;;;;AAOG;IAEH,WAAA,CAAsB,OAAyB,EAAE,MAAA,GAA0B,EAAE,EAAA;AAC3E,QAAA,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;QADF,IAAA,CAAA,OAAO,GAAP,OAAO;AA5B7B;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK;AAElB;;AAEG;QACH,IAAA,CAAA,gBAAgB,GAAG,KAAK;AACxB;;AAEG;QACH,IAAA,CAAA,gBAAgB,GAAG,KAAK;AAExB;;AAEG;QACH,IAAA,CAAA,QAAQ,GAAgB,EAAE;QAaxB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,KAAK;QAC5C,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,KAAK;QACxD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,KAAK;IAC1D;AAEA;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAE,EAAA;AACjB,QAAA,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE;QAClC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE;YAC7C,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;gBAC3B,EAAE;gBACF,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,gBAAgB,EAAE,IAAI,CAAC;AACxB,aAAA,CAAC,CACH;QACH;IACF;AAEA;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,uBAAuB,CAAC,CAAC,MAAM;IAC3F;AAEA;;AAEG;IACH,KAAK,GAAA;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,uBAAuB,CAAC;IAC7F;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI;AACxB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY;AACrC,QAAA,OAAO;AACL,cAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AAC3B,cAAE;kBACA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAC5B,IAAI,CAAC,EAAE,CAAC,EAAE,EACV,EAAE,EACF,IAAI,CAAC,YAAY,CAAC,KAAK,EACvB,IAAI,CAAC,gBAAgB;AAEzB,kBAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CACxB,IAAI,CAAC,EAAE,CAAC,EAAE,EACV,IAAI,CAAC;AACH,sBAAE;AACE,wBAAA,KAAK,EAAE,CAAA,aAAA,EAAgB,aAAa,CAAC,iBAAiB,CAAA,EAAA;AACvD;AACH,sBAAE,EAAE,EACN,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,YAAY,CAAC,KAAK,CACxB;IACP;IAEA,QAAQ,GAAA;QACN,OAAO,SAAS,CAAC,IAAI;IACvB;IAEA,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACjD;;;ACnGI,MAAO,gBAAiB,SAAQ,gBAAgB,CAAA;AADtD,IAAA,WAAA,GAAA;;QAEY,IAAA,CAAA,SAAS,GAAG,CAAC;AASxB,IAAA;AAPC,IAAA,eAAe,CAAC,MAAuB,EAAA;AACrC,QAAA,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IACpC;AAEA,IAAA,eAAe,CAAC,MAAuB,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACrC;+GATW,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA,CAAA;;4FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACI5B,MAAO,oBAAqB,SAAQ,gBAAgB,CAAA;AAH1D,IAAA,WAAA,GAAA;;AAIE;;AAEG;QACK,IAAA,CAAA,kBAAkB,GAA6C,IAAI;AA6E5E,IAAA;AA3EC;;;AAGG;AACH,IAAA,mBAAmB,CAAC,EAA4C,EAAA;AAC9D,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;IAC9B;AAEA;;;AAGG;AACH,IAAA,gBAAgB,CAAC,IAAe,EAAA;AAC9B,QAAA,IAAI,OAAO,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;YAChD,OAAO,IAAI,CAAC,kBAAkB;QAChC;AAAO,aAAA,IAAI,OAAO,IAAI,CAAC,kBAAkB,KAAK,UAAU,EAAE;AACxD,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;QACtC;AACA,QAAA,OAAO,IAAI;IACb;AACA;;;;AAIG;IACH,cAAc,CACZ,GAA4B,EAC5B,SAA4B,EAAA;AAE5B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACrE;IAEA,aAAa,CACX,KAA8C,EAC9C,IAAuB,EAAA;AAEvB,QAAA,MAAM,QAAQ,GAAG,KAAK,IAAG;YACvB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,GAAG,KAAoB;YAChE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,qBAAqB,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,CAAC,EAAE;AAClF,QAAA,CAAC;AAED,QAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACnB,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACnB,YAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;QACxB;AACA,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5B;AAEA;;;;;AAKG;IACH,kBAAkB,CAChB,QAA4D,EAC5D,UAAuB,EAAA;AAEvB,QAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;IAC1D;AAEQ,IAAA,mBAAmB,CAAC,KAAU,EAAA;QACpC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtC,YAAA,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACxB;AACA,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAClB,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC;QAChB;AACA,QAAA,OAAO,EAAE;IACX;+GAhFW,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCuBY,0BAA0B,CAAA;AAmErC;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAClE;AAEA;;AAEG;AACH,IAAA,WAAA,CACU,gBAAkC,EAClC,EAAqB,EACtB,oBAA0C,EAAA;QAFzC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,EAAE,GAAF,EAAE;QACH,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;AAvE7B;;AAEG;QACM,IAAA,CAAA,WAAW,GAAgC,EAAE;AACtD;;AAEG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK;AACzB;;AAEG;QACM,IAAA,CAAA,KAAK,GAAG,KAAK;AACtB;;AAEG;QACM,IAAA,CAAA,IAAI,GAAsB,MAAM;QAehC,IAAA,CAAA,QAAQ,GAAG,KAAK;AACzB;;AAEG;AACO,QAAA,IAAA,CAAA,cAAc,GAA0B,IAAI,YAAY,EAAE;AACpE;;AAEG;AACO,QAAA,IAAA,CAAA,QAAQ,GAAiC,IAAI,YAAY,EAAE;AACrE;;AAEG;AACO,QAAA,IAAA,CAAA,UAAU,GAClB,IAAI,YAAY,EAAE;AAGpB;;AAEG;QACH,IAAA,CAAA,KAAK,GAAG,CAAC;AACT;;AAEG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;QAClC,IAAA,CAAA,gBAAgB,GAAG,IAAI;;QAGvB,IAAA,CAAA,SAAS,GAAG,KAAK;IAed;AAEH;;AAEG;AACH,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;AACjC,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;AAExC,QAAA,IAAI,IAAI,CAAC,IAAI,YAAY,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QACxB;;AAGA,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;QACd;;AAGA,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC;iBACP,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,MAAM,CAAC,CAAC,CAAwB,KAAK,CAAC,KAAK,qBAAqB,CAAC,YAAY,CAAC;iBAE/E,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,gBAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AACxB,YAAA,CAAC,CAAC;QACN;IACF;AAEA;;AAEG;IACH,KAAK,GAAA;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3C;AAEA,IAAA,wBAAwB,CAAC,IAAe,EAAA;QACtC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAc;AAC3C,YAAA,IAAI,CAAC,UAAU;gBACb,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC3C,KAAK;oBACL,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAChD,IAAI,CAAC,KAAK,EAAE;AAEZ,YAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;QACvC;IACF;AAEA;;;AAGG;AACH,IAAA,QAAQ,CAAC,IAAe,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;AACX,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B;QACF;QACA,IAAI,CAAC,KAAK,EAAE;IACd;AAEA;;;AAGG;AACH,IAAA,eAAe,CAAC,IAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AAEjC,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACpC;QACF;AACA,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;QAC7E,IAAI,mBAAmB,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrB;IACF;AAEA;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAC9B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACjB,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1F;IAEA,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AAC/B,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;QAC/C;AACA,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,eAAe,CAAC,UAA0B,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;YAC7D;QACF;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;YAChE;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;IACxB;+GApMW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,oaC/BvC,wrPAwPA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzNa,0BAA0B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAVnC,IAAI,6FACJ,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,aAAa,2EACb,qBAAqB,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,KAAK,8GACL,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,OAAA,EAE1B;wBACP,IAAI;wBACJ,OAAO;wBACP,OAAO;wBACP,aAAa;wBACb,qBAAqB;wBACrB,iBAAiB;wBACjB,KAAK;wBACL;AACD,qBAAA,EAAA,QAAA,EAAA,wrPAAA,EAAA;uJAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAIQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIQ,WAAW,EAAA,CAAA;sBAAnB;gBAIQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIQ,KAAK,EAAA,CAAA;sBAAb;gBAIQ,IAAI,EAAA,CAAA;sBAAZ;gBAKQ,KAAK,EAAA,CAAA;sBAAb;gBAIQ,MAAM,EAAA,CAAA;sBAAd;gBAIQ,0BAA0B,EAAA,CAAA;sBAAlC;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIS,cAAc,EAAA,CAAA;sBAAvB;gBAIS,QAAQ,EAAA,CAAA;sBAAjB;gBAIS,UAAU,EAAA,CAAA;sBAAnB;;;ME3EU,iBAAiB,CAAA;AAyB5B,IAAA,WAAA,CACY,gBAAkC,EAClC,SAA2B,EAC3B,oBAA0C,EAAA;QAF1C,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;AA3BhC;;AAEG;QACH,IAAA,CAAA,MAAM,GAAyB,EAAE;AAKjC;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK;AACjB;;AAEG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA6B;AAC1D;;AAEG;AACH,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAQ;IASvC;AAEH;;AAEG;AACH,IAAA,QAAQ,CAAC,OAAwB,EAAA;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AAC1E,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACtF;AAEA;;AAEG;AACH,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA;;AAEG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;AAEA;;;AAGG;AACH,IAAA,WAAW,CAAC,UAA2B,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;QAClB,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9F;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE;IACf;AAEA;;;AAGG;AACH,IAAA,MAAM,CAAC,UAA0B,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;QACpB;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAChE,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAC3E;QACH;QACA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC;QAChD,IAAI,CAAC,MAAM,EAAE;IACf;AAEA;;;AAGG;AACH,IAAA,QAAQ,CAAC,UAA0B,EAAA;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAChE,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAChC;QACA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE;IACf;AAEA;;;;;AAKG;IACH,kBAAkB,CAChB,QAA4D,EAC5D,UAAuB,EAAA;AAEvB,QAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;IAC1D;AAEA,IAAA,UAAU,CAAC,QAAqC,EAAE,IAAoB,EAAE,UAAmB,EAAA;AACzF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC1D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxB;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC;IACxE;IAEA,qBAAqB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC3C,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;AAC9C,YAAA,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;AAClC,YAAA,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;AAC/B,SAAA,CAAC;IACJ;IACA,MAAM,2BAA2B,CAAC,KAAkB,EAAA;AAClD,QAAA,IAAK,KAAqB,CAAC,EAAE,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC3C,gBAAA,EAAE,EAAE,KAAuB;AAC3B,gBAAA,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;AAC9C,gBAAA,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;AAClC,gBAAA,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;AAC/B,aAAA,CAAC;QACJ;AACA,QAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;AACvD,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;YAC3C,EAAE;AACF,YAAA,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;AAC9C,YAAA,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;AAClC,YAAA,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;AAC/B,SAAA,CAAC;IACJ;AACD;;ACvJM,MAAM,sBAAsB,GAAyB;AAC1D,IAAA,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC;AACjC,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,gBAAgB,EAAE,KAAK;AACvB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,qBAAqB,EAAE,KAAK;AAC5B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,gBAAgB,EAAE,KAAK;AACvB,IAAA,YAAY,EAAE;;;ACxBV,MAAO,qBAAsB,SAAQ,SAAS,CAAA;aAC3C,IAAA,CAAA,IAAI,GAAG,uBAAH,CAA2B;IAQtC,WAAA,CACY,OAAyB,EACnC,MAAA,GAA0B,EAAE,EAAA;AAE5B,QAAA,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;QAHZ,IAAA,CAAA,OAAO,GAAP,OAAO;AARnB,QAAA,IAAA,CAAA,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACrC,IAAA,CAAA,IAAI,GAAG,eAAe;QACtB,IAAA,CAAA,gBAAgB,GAAG,KAAK;QACxB,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,gBAAgB,GAAG,KAAK;QACxB,IAAA,CAAA,EAAE,GAAG,EAAE;AAOL,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,KAAK;IAC1D;IAEA,KAAK,CAAC,UAAwB,EAAE,EAAA;QAC9B,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAC/C;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAE,EAAA;QACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACzF;IAEA,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC1F;IAEA,OAAO,GAAA;AACL,QAAA,OAAO,IAAI;IACb;IAEA,QAAQ,GAAA;QACN,OAAO,qBAAqB,CAAC,IAAI;IACnC;IAEA,QAAQ,GAAA;;;AAGN,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;IACzB;AAEA,IAAA,MAAM,UAAU,GAAA;;;AAGd,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;IACvB;;;ACrBF;;AAEG;AA+BG,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AA2E3D;;AAEG;AACH,IAAA,WAAA,CACY,gBAAkC,EAClC,SAA2B,EAC3B,oBAA0C,EAC1C,EAAqB,EAAA;AAE/B,QAAA,KAAK,CAAC,gBAAgB,EAAE,SAAS,EAAE,oBAAoB,CAAC;QAL9C,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,EAAE,GAAF,EAAE;AAjFd;;AAEG;QACM,IAAA,CAAA,MAAM,GAAyB,EAAE;AAK1C;;;AAGG;QACM,IAAA,CAAA,KAAK,GAAG,CAAC;AAClB;;AAEG;QACM,IAAA,CAAA,KAAK,GAAgB,SAAS;AACvC;;AAEG;QACM,IAAA,CAAA,cAAc,GAAmB,SAAS;AACnD;;AAEG;QACM,IAAA,CAAA,QAAQ,GAAiE,EAAE;AAKpF;;AAEG;QACM,IAAA,CAAA,aAAa,GAAgC,EAAE;QAC/C,IAAA,CAAA,SAAS,GAAgB,MAAM;QAC/B,IAAA,CAAA,gBAAgB,GAA+C,IAAI;QACnE,IAAA,CAAA,QAAQ,GAAG,KAAK;AACzB;;AAEG;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA6B;AACpE;;AAEG;AACO,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAQ;AACpD;;AAEG;AACO,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAO;AACjD;;AAEG;AACO,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAO;AAC1C;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,EAAE;AACf;;;AAGG;QACH,IAAA,CAAA,IAAI,GAAG,KAAK;AACZ;;AAEG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAClC;;AAEG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAerD;AAEA;;;;;AAKG;IACH,0BAA0B,CAAC,IAAe,EAAE,KAAa,EAAA;QACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI;QAC3C,MAAM,uBAAuB,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,qBAAqB,CAAC,IAAI;AAC9E,QAAA,MAAM,iBAAiB,GACrB,CAAC,YAAY,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,uBAAuB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QAExF,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC5C,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;AAEG;AACH,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACpE,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,sBAAsB,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QAC7D;AACA,QAAA,MAAM,qBAAqB,GACzB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;QACpE,IAAI,qBAAqB,EAAE;AACzB,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B;AAEA,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK;QACzC,IAAI,sBAAsB,EAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC;QACpE;QAEA,MAAM,gBAAgB,GACpB,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QACzE,IAAI,gBAAgB,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAC9C;AAEA,QAAA,IACE,IAAI,CAAC,MAAM,CAAC,qBAAqB;AACjC,aAAC,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB;YACA,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,IAAI,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC/C,gBAAA,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;AAC/B,aAAA,CAAC,CACH;QACH;QACA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;IAChC;IAEA,MAAM,WAAW,CAAC,OAAsB,EAAA;AACtC,QAAA,IAAI,OAAO,CAAC,gBAAgB,EAAE;YAC5B,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACtE;QACA,IACE,OAAO,CAAC,KAAK;YACb,OAAO,CAAC,KAAK,CAAC,YAAY;AAC1B,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EACpD;AACA,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;QACpF;IACF;AAEA;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,kBAAkB,EAAE;IAC3B;AAEA;;AAEG;IACH,IAAI,GAAA;AACF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;AAC5B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC9C;AAEA;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;IACtB;AAEA;;AAEG;IACH,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;IAC7B;IAEA,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AAChF,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEA;;;;;;;AAOG;AACH,IAAA,eAAe,CAAC,UAAkB,EAAE,IAAI,EAAE,qBAA+B,EAAA;QACvE,IAAI,UAAU,EAAE;YACd,MAAM,YAAY,GAAG;AACnB,kBAAE;AACE,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE;AACP,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;AACxB;AACH,kBAAE;AACE,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,WAAW,EAAE;AACd;iBACF;YACL,OAAO,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC;QACvE;AACA,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,QAAQ,EAAE;AACR,gBAAA,WAAW,EAAE;AACd,aAAA;AACD,YAAA,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;SACxB;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC;IACxE;AAEA;;;AAGG;IACH,MAAM,WAAW,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAC7B,IAAI,CAAC,eAAe,CAClB,MAAM,EACN,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EACnB,IAAI,CAAC,uBAAuB,EAAE,GAAG,IAAI,GAAG,KAAK,CAC9C,CACF;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,cAAc,EAAE,IAAI,CAAC;AACtB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAEA;;AAEG;IACH,uBAAuB,GAAA;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,qBAAqB,CAAC,IAAI;IAChE;AAEA;;AAEG;AACH,IAAA,mBAAmB,CAAC,YAAY,EAAA;QAC9B,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC5C,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;gBACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,IAAI,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC/C,oBAAA,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;AAC/B,iBAAA,CAAC,CACH;YACH;YACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACzC;YAEA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC;iBACX,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAClC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AAE7B,iBAAA,SAAS,EAAE;YAEd,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;AAC/B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI;YAC3B;QACF;IACF;AAEA;;AAEG;IACH,MAAM,mBAAmB,CAAC,EAAkB,EAAA;AAC1C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QACxF,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7C,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,QAAQ;AACR,gBAAA,KAAK,EAAE,CAAC;gBACR,eAAe,EAAE,IAAI,CAAC,cAAc;AACpC,gBAAA,IAAI,EAAE;AACP,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE;QACpB;QACA,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjB;IACF;AAEA,IAAA,SAAS,CAAC,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACrE,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;IACxB;AAEA,IAAA,QAAQ,CAAC,EAAkB,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IACjB;AAEA,IAAA,UAAU,CAAC,MAA8D,EAAA;AACvE,QAAA,QAAQ,MAAM,EAAE,YAAY;AAC1B,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AACxB,gBAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;gBACtB;AACF,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B;;IAEN;IAEQ,kBAAkB,GAAA;;;;AAIxB,QAAA,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,OAAO,IAAG;AAClD,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,IAAG;AACtB,gBAAA,IAAI,KAAK,CAAC,cAAc,EAAE;oBACxB,IAAI,CAAC,kBAAkB,EAAE;AACzB,oBAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;gBAClC;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,qBAAqB,CAAC,MAAK;AACzB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE;gBAC9B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa;AAClD,gBAAA,IAAI,YAAY,KAAK,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;oBACjF,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;oBAC3C;gBACF;AACA,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;YAC1C;iBAAO;AACL,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,uBAAuB,CAAC,OAAoB,EAAA;QAClD,OAAO,OAAO,EAAE;YACd,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC9C,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC7D,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,OAAO,GAAG,OAAO,CAAC,aAAa;QACjC;AACA,QAAA,OAAO,KAAK;IACd;+GAtXW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EA3BtB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB;AACrD,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE;AACR,aAAA;YACD;SACD,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtDH,mjOA+NA,4CDvKI,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,KAAK,mHACL,aAAa,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,0BAA0B,6PAC1B,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAChB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACT,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA9BlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,SAAA,EAEnB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B;AACrD,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE;AACR,yBAAA;wBACD;qBACD,EAAA,OAAA,EACQ;wBACP,IAAI;wBACJ,OAAO;wBACP,OAAO;wBACP,oBAAoB;wBACpB,KAAK;wBACL,aAAa;wBACb,WAAW;wBACX,0BAA0B;wBAC1B,gBAAgB;wBAChB,SAAS;wBACT;AACD,qBAAA,EAAA,QAAA,EAAA,mjOAAA,EAAA;iLAMQ,MAAM,EAAA,CAAA;sBAAd;gBAIQ,MAAM,EAAA,CAAA;sBAAd;gBAKQ,KAAK,EAAA,CAAA;sBAAb;gBAIQ,KAAK,EAAA,CAAA;sBAAb;gBAIQ,cAAc,EAAA,CAAA;sBAAtB;gBAIQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIS,UAAU,EAAA,CAAA;sBAAnB;gBAIS,eAAe,EAAA,CAAA;sBAAxB;gBAIS,aAAa,EAAA,CAAA;sBAAtB;gBAIS,MAAM,EAAA,CAAA;sBAAf;gBAqBO,MAAM,EAAA,CAAA;sBADb,SAAS;uBAAC,QAAQ;;;AEvFf,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;AA0DxD,IAAA,WAAA,CACY,gBAAkC,EAClC,SAA2B,EAC3B,oBAA0C,EAC1C,EAAqB,EAAA;AAE/B,QAAA,KAAK,CAAC,gBAAgB,EAAE,SAAS,EAAE,oBAAoB,CAAC;QAL9C,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,EAAE,GAAF,EAAE;AA7Dd;;AAEG;QACM,IAAA,CAAA,MAAM,GAAyB,EAAE;AAC1C;;AAEG;QACM,IAAA,CAAA,KAAK,GAAgB,SAAS;AACvC;;AAEG;QACM,IAAA,CAAA,cAAc,GAAmB,SAAS;AAKnD;;AAEG;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA6B;AACpE;;AAEG;AACO,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAQ;AAKpD;;;AAGG;QACH,IAAA,CAAA,OAAO,GAAG,EAAE;AACZ;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,EAAE;QAKN,IAAA,CAAA,SAAS,GAAgB,MAAM;AAExC,QAAA,IAAA,CAAA,oBAAoB,GAAyB;AAC3C,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,KAAK,EAAE,OAAO,CAAC,iBAAiB;SACjC;AAED;;AAEG;AACH,QAAA,IAAA,CAAA,0BAA0B,GAAG,EAAE,CAAC,KAAK,CAAC;IAYtC;AAEA;;AAEG;AACH,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QAE9D,MAAM,gBAAgB,GACpB,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QACzE,IAAI,gBAAgB,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAC9C;AAEA,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;QACjF,IAAI,sBAAsB,EAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC;AAClE,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;gBACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK;AAClD,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,QAA0B,EAAE,IAAI,CAAC;YAClE;QACF;QAEA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC;AAEA;;AAEG;IACH,MAAM,WAAW,CAAC,OAAsB,EAAA;AACtC,QAAA,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC9D,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvF;QAEA,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE;YACjE,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AACrC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAgC,EAAE,IAAI,CAAC;QAC7E;IACF;AAEA;;AAEG;IACH,eAAe,GAAA;QACb,qBAAqB,CAAC,MAAK;AACzB,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAChE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,EACxC,KAAK,EAAE,EACP,SAAS,CAAC,aAAa,IACrB,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,EAAE,CAAC,GAAG,CAAC,CAC/D,EACD,GAAG,CAAC,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,CAC7B;AACH,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,YAAY,CAAC,IAAI,EAAA;AACf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,IAAI,SAAS;AACvD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,MAAM,CAAC,qBAAqB,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AACzF,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACzB;QAEA,MAAM,4BAA4B,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACpE,IAAI,MAAM,GAAG,KAAK;QAClB,IAAI,4BAA4B,EAAE;YAChC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC;YAC/B,MAAM,GAAG,IAAI;QACf;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,EAAE;YACvD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;YAEhC,MAAM,GAAG,GAAG,IAAI;AAChB,YAAA,MAAM,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;AAC5F;;;;AAIE;AACF,YAAA,UAAU,CAAC,YAAA;AACT,gBAAA,MAAM,CAAC,qBAAqB,CAC1B,OAAO,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC,CAC/D;YACH,CAAC,EAAE,GAAG,CAAC;QACT;IACF;AAEA;;AAEG;AACH,IAAA,MAAM,CAAC,KAAK,EAAA;AACV,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc;AAC1C,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAEA;;AAEG;AACH,IAAA,iBAAiB,CAAC,KAAgC,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YACnC;QACF;AACA,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YAC9B;QACF;QACA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAClC;+GAvLW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EAnBnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAoEa,sBAAsB,4FC7GtC,0yDA0DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,oFACP,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACL,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,IAAI,6FACJ,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,mBAAmB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACnB,gBAAgB,6CAChB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGA,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAtB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,SAAA,EAE1B;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,OAAA,EACQ;wBACP,OAAO;wBACP,OAAO;wBACP,KAAK;wBACL,sBAAsB;wBACtB,IAAI;wBACJ,gBAAgB;wBAChB,mBAAmB;wBACnB,gBAAgB;wBAChB;AACD,qBAAA,EAAA,QAAA,EAAA,0yDAAA,EAAA;iLAMQ,MAAM,EAAA,CAAA;sBAAd;gBAIQ,KAAK,EAAA,CAAA;sBAAb;gBAIQ,cAAc,EAAA,CAAA;sBAAtB;gBAIQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIS,UAAU,EAAA,CAAA;sBAAnB;gBAIS,eAAe,EAAA,CAAA;sBAAxB;gBAI+B,iBAAiB,EAAA,CAAA;sBAAhD,SAAS;uBAAC,mBAAmB;gBAcrB,SAAS,EAAA,CAAA;sBAAjB;gBAcO,cAAc,EAAA,CAAA;sBADrB,YAAY;uBAAC,sBAAsB;;;MElFzB,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAb5B,UAAU;YACV,YAAY;YACZ,cAAc;YACd,gBAAgB;YAChB,gBAAgB;YAChB,WAAW;YACX,0BAA0B;YAC1B,sBAAsB;AACtB,YAAA,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAEX,0BAA0B,EAAE,sBAAsB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGtE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,aAFnB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,YAXjD,UAAU;YACV,YAAY;YACZ,cAAc;YACd,gBAAgB;YAChB,gBAAgB;YAChB,WAAW;YAEX,sBAAsB;YACtB,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAKV,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAf/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,UAAU;wBACV,YAAY;wBACZ,cAAc;wBACd,gBAAgB;wBAChB,gBAAgB;wBAChB,WAAW;wBACX,0BAA0B;wBAC1B,sBAAsB;wBACtB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,0BAA0B,EAAE,sBAAsB,EAAE,mBAAmB,CAAC;AAClF,oBAAA,SAAS,EAAE,CAAC,gBAAgB,EAAE,oBAAoB;AACnD,iBAAA;;;MCdY,qBAAqB,CAAA;AAChC,IAAA,OAAO,MAAM,CAAC,MAAA,GAA+B,EAAE,EAAA;QAC7C,OAAO;AACL,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,sBAAsB;AAC/B,oBAAA,QAAQ,EAAE;AACX;AACF;SACF;IACH;+GAXW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,OAAA,EAAA,CAHtB,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGnD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,aAFrB,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,EAAA,OAAA,EAAA,CADlE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;;4FAGnD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,CAAC;oBAC/D,SAAS,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,CAAC;AAC5E,iBAAA;;;ACXD;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-assets-navigator.mjs","sources":["../../assets-navigator/action.enum.ts","../../assets-navigator/load-more-node.ts","../../assets-navigator/asset-node.ts","../../assets-navigator/dynamic-group-node.ts","../../assets-navigator/asset-node-config.model.ts","../../assets-navigator/group.service.ts","../../assets-navigator/asset-node.service.ts","../../assets-navigator/asset-node.factory.ts","../../assets-navigator/asset-selector/group-node.ts","../../assets-navigator/asset-selector/group-node.service.ts","../../assets-navigator/asset-selector/asset-selector.service.ts","../../assets-navigator/asset-selector/asset-selector-node.component.ts","../../assets-navigator/asset-selector/asset-selector-node.component.html","../../assets-navigator/asset-selector/asset-selector-base.ts","../../assets-navigator/asset-selector/asset-selector.model.ts","../../assets-navigator/asset-selector/unassigned-devices-node.ts","../../assets-navigator/asset-selector/asset-selector.component.ts","../../assets-navigator/asset-selector/asset-selector.component.html","../../assets-navigator/asset-selector/miller-view.component.ts","../../assets-navigator/asset-selector/miller-view.component.html","../../assets-navigator/asset-selector/asset-selector.module.ts","../../assets-navigator/assets-navigator.module.ts","../../assets-navigator/c8y-ngx-components-assets-navigator.ts"],"sourcesContent":["export enum AssetsNavigatorAction {\n FETCH,\n NEXT,\n REFRESH,\n LOADING_DONE\n}\n","import { gettext } from '@c8y/ngx-components/gettext';\nimport { NavigatorNode } from '@c8y/ngx-components';\n\nexport class LoadMoreNode extends NavigatorNode {\n static NAME = 'LoadMoreNode';\n label = gettext('Load more');\n icon = 'plus';\n droppable = true;\n\n constructor() {\n super();\n this.priority = -Infinity;\n }\n\n toString() {\n return LoadMoreNode.NAME;\n }\n\n isGroup() {\n return false;\n }\n}\n","import { IIdentified, Paging } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n ClickOptions,\n DeviceStatusComponent,\n GroupFragment,\n NavigatorNode,\n NavigatorNodeData\n} from '@c8y/ngx-components';\nimport { debounce } from 'lodash-es';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\nimport { AssetsNavigatorAction } from './action.enum';\nimport { AssetNodeMo, AssetNodeService } from './asset-node.service';\nimport { LoadMoreNode } from './load-more-node';\n\nexport class AssetNode extends NavigatorNode {\n static NAME = 'AssetNode';\n root: boolean;\n mo: any;\n hideDevices = false;\n filterQuery$ = new BehaviorSubject<string>('');\n showChildDevices = false;\n\n /**\n * Asset node children (subentries).\n */\n children: AssetNode[] = [];\n\n get hasChildren() {\n return this.root || this.service.isGroup(this.mo);\n }\n\n get isDevice() {\n return !!this.mo.c8y_IsDevice;\n }\n\n get isDeviceOrProbablyChildDevice() {\n return this.isDevice || this.isNeitherDeviceOrGroup;\n }\n\n get isNeitherDeviceOrGroup() {\n return (\n !this.service.isGroup(this.mo) &&\n !this.service.isDynamicGroup(this.mo) &&\n !this.isDevice &&\n !this.root\n );\n }\n\n events: Subject<AssetsNavigatorAction>;\n nodesFetched: Subject<void> = new Subject();\n protected paging: Paging<AssetNodeMo>;\n protected loadMoreNode: LoadMoreNode;\n private onUpdateSubscription: Subscription;\n\n constructor(\n protected service: AssetNodeService,\n protected config: NavigatorNodeData = {}\n ) {\n super(config);\n\n this.root = this.root || false;\n this.hideDevices = config.hideDevices ?? this.hideDevices;\n this.mo = this.mo || {};\n this.path = this.getPath();\n this.draggable = !this.service?.moduleConfig?.disableDragAndDrop && !this.root;\n this.droppable =\n !this.service?.moduleConfig?.disableDragAndDrop && !this.isDeviceOrProbablyChildDevice;\n this.routerLinkExact = this.root;\n this.updateIcon(false);\n this.onUpdateSubscription = this.service\n .onUpdate(this)\n .subscribe(({ data, method }) => this.refresh(data, method));\n this.setLabel();\n this.iconComponent = this.isDeviceOrProbablyChildDevice ? DeviceStatusComponent : undefined;\n }\n\n getPath() {\n if (this.config.path) {\n return this.config.path;\n }\n\n return this.root\n ? 'group'\n : this.isDeviceOrProbablyChildDevice\n ? `device/${this.mo.id}`\n : `group/${this.mo.id}`;\n }\n\n refresh(mo: any = {}, method = 'GET') {\n if (mo?.id === this.mo.id) {\n this.mo = mo;\n this.setLabel();\n } else if (method === 'DELETE') {\n this.parents.forEach((node: AssetNode) => node.refresh());\n return;\n }\n if (this.events) {\n this.events.next(AssetsNavigatorAction.REFRESH);\n }\n }\n\n setLabel() {\n if (this.config.label || this.root) {\n this.label = this.config.label || gettext('Groups');\n this.translateLabel = true;\n } else {\n this.label = this.service.label(this.mo);\n this.translateLabel = false;\n }\n }\n\n click(options: ClickOptions = {}) {\n if (this.isDeviceOrProbablyChildDevice && !this.showChildDevices) {\n this.service.preferBreadcrumb(this.parents);\n return;\n }\n this.hookEvents();\n this.updateIcon(options.open);\n if (options.open) {\n this.events.next(AssetsNavigatorAction.FETCH);\n }\n }\n\n sort() {\n this.children.sort((a, b) => {\n if (a.priority > b.priority) {\n return -1;\n } else if (a.priority < b.priority) {\n return 1;\n } else {\n return 0;\n }\n });\n }\n\n addManagedObject(mo) {\n const { childAdditions } = this.mo;\n if (!this.isChildAddition(childAdditions, mo)) {\n this.add(this.service.createChildNode(mo, { hideDevices: this.hideDevices }));\n }\n }\n\n isChildAddition(childAdditions, mo) {\n return (\n childAdditions && childAdditions.references.some(({ managedObject: { id } }) => id === mo.id)\n );\n }\n\n destroy() {\n this.onUpdateSubscription.unsubscribe();\n }\n\n get canDrop() {\n const nodeToMove = this.service.draggedData;\n if (nodeToMove) {\n const shouldGetChildOfItsOwn = !!nodeToMove.find(child => child === this);\n const isAlreadyChild = (this.children as AssetNode[]).some(\n child => child.mo && child.mo.id === nodeToMove.mo.id\n );\n const preventMove = this === nodeToMove || shouldGetChildOfItsOwn || isAlreadyChild;\n return this.droppable && !preventMove && this.service.canDropNode(this.root);\n }\n return this.droppable;\n }\n\n dragStart($event) {\n super.dragStart($event);\n this.service.draggedData = this;\n this.service.rootNode.droppable = !this.isDeviceOrProbablyChildDevice;\n }\n\n dragEnd($event) {\n super.dragEnd($event);\n }\n\n async drop($event) {\n const nodeToMove = this.service.draggedData;\n\n // TODO remove when asset type node can be used on the root level.\n if (this.root && this.isAsset(nodeToMove)) {\n this.service.alert.info(gettext('Asset type node cannot become root node.'));\n this.draggedHover = false;\n this.service.draggedData = undefined;\n return;\n }\n\n super.drop($event);\n if (this.canDrop) {\n await this.moveNode(nodeToMove);\n } else {\n this.draggedHover = false;\n this.service.draggedData = undefined;\n }\n }\n\n hookEvents() {\n if (!this.events) {\n this.events = new Subject();\n this.events.subscribe(evt => {\n if (!this.loading) {\n this.handleEvent(evt);\n }\n });\n }\n }\n\n toString() {\n return AssetNode.NAME;\n }\n\n /**\n * Checks if the current node has child devices.\n */\n hasChildDevices() {\n return this.mo && this.mo.c8y_IsDevice && this.mo.childDevices.references.length > 0;\n }\n\n protected fetch() {\n return this.root\n ? this.service.getRootNodes()\n : this.service.getGroupItems(\n this.mo.id,\n this.hideDevices\n ? {\n query: `$filter=(has(${GroupFragment.groupFragmentType}))$orderby=name`\n }\n : {}\n );\n }\n\n protected async updateIcon(open) {\n this.icon = await this.service.icon(\n // if it's root we are going to pass a fake mo to get the same icon as groups\n this.root ? { c8y_IsDeviceGroup: {} } : this.mo,\n open\n );\n }\n\n protected countChildren() {\n return this.children.length;\n }\n\n protected async handleEvent(evt: AssetsNavigatorAction) {\n if (!this.countChildren() && evt === AssetsNavigatorAction.FETCH) {\n this.loading = true;\n this.addNodes(await this.fetch());\n this.loading = false;\n } else if (evt === AssetsNavigatorAction.NEXT) {\n this.loadMoreNode.loading = true;\n this.addNodes(await this.paging.next());\n this.loadMoreNode.loading = false;\n } else if (evt === AssetsNavigatorAction.REFRESH) {\n this.loading = false;\n this.paging = undefined;\n this.loadMoreNode = undefined;\n this.empty();\n this.events.next(AssetsNavigatorAction.FETCH);\n }\n }\n\n protected addNodes(res) {\n if (res.paging) {\n const { currentPage, nextPage, pageSize } = (this.paging = res.paging);\n if (currentPage === 1) {\n this.empty();\n }\n const itemsCount = res.data.length;\n const moreItemsAvailable = !!nextPage && itemsCount === pageSize;\n this.toggleLoadMore(moreItemsAvailable);\n }\n (res.data || res).map(mo => {\n return this.addManagedObject(mo);\n });\n this.events.next(AssetsNavigatorAction.LOADING_DONE);\n this.nodesFetched.next();\n }\n\n protected toggleLoadMore(show: boolean) {\n if (!this.loadMoreNode && show) {\n this.loadMoreNode = new LoadMoreNode();\n this.add(this.loadMoreNode);\n this.loadMoreNode.click = debounce(() => this.events.next(AssetsNavigatorAction.NEXT), 300, {\n leading: true,\n trailing: false\n });\n }\n\n if (this.loadMoreNode) {\n this.loadMoreNode.hidden = !show;\n }\n }\n\n private async moveNode(nodeToMove: AssetNode) {\n try {\n const isCopy = await this.showDropConfirm(nodeToMove);\n await this.verifyNodeAccess(nodeToMove);\n await this.addMovedNode(nodeToMove);\n if (!isCopy) {\n await this.removeMovedNode(nodeToMove);\n }\n this.expand();\n } catch (ex) {\n if (ex) {\n this.service.alert.addServerFailure(ex);\n }\n } finally {\n this.draggedHover = false;\n this.service.draggedData = undefined;\n }\n }\n\n private async showDropConfirm(nodeToMove: AssetNode) {\n this.confirm.title = gettext('Move');\n this.confirm.message = gettext('Do you want to move the group?');\n const buttons: any = [\n {\n label: gettext('Cancel'),\n action: () => Promise.reject()\n },\n {\n label: gettext('Move'),\n status: 'default',\n action: () => Promise.resolve(false)\n }\n ];\n if (nodeToMove.isDeviceOrProbablyChildDevice) {\n this.confirm.title = gettext('Move or add');\n this.confirm.message = gettext('Do you want to move or add the device?');\n buttons.push({\n label: gettext('Add'),\n status: 'primary',\n action: () => Promise.resolve(true)\n });\n }\n return this.confirm.show(buttons);\n }\n\n private async verifyNodeAccess(nodeToMove: AssetNode) {\n return this.service.inventory.update({ id: nodeToMove.mo.id });\n }\n\n private async addMovedNode(nodeToMove: AssetNode) {\n let mo: IIdentified;\n\n if (this.root && !this.isAsset(nodeToMove)) {\n mo = (\n await this.service.inventory.update({\n id: nodeToMove.mo.id,\n type: GroupFragment.groupType\n })\n ).data;\n\n this.addManagedObject(mo);\n return;\n }\n\n mo = (await this.service.inventory.childAssetsAdd(nodeToMove.mo, this.mo)).data;\n this.addManagedObject(mo);\n }\n\n private isAsset(nodeToMove: AssetNode) {\n // TODO use isAsset check when https://github.com/Cumulocity-IoT/cumulocity-ui/pull/690 is merged.\n // Do not override asset type!\n return nodeToMove.mo?.c8y_IsAsset;\n }\n\n private async removeMovedNode(nodeToMove: AssetNode) {\n for (const parent of nodeToMove.parents as AssetNode[]) {\n if (parent.mo && parent.mo.type === GroupFragment.dynamicGroupType) {\n break; // smart groups don't need to be changed\n }\n\n if (parent.root && !this.isAsset(nodeToMove)) {\n await this.service.inventory.update({\n id: nodeToMove.mo.id,\n type: GroupFragment.subGroupType\n });\n }\n\n if (!parent.root) {\n await this.service.inventory.childAssetsRemove(nodeToMove.mo, parent.mo);\n }\n parent.remove(nodeToMove);\n }\n }\n}\n","import { AssetNode } from './asset-node';\nimport { AssetNodeService } from './asset-node.service';\n\nexport class DynamicGroupNode extends AssetNode {\n constructor(protected service: AssetNodeService, config = {}) {\n super(service, config);\n this.draggable = false;\n this.droppable = false;\n }\n\n get hasChildren() {\n return true;\n }\n\n get query() {\n return this.mo.c8y_DeviceQueryString;\n }\n\n protected fetch(): any {\n return this.service.getDynamicGroupItems(this.query);\n }\n}\n","import { InjectionToken } from '@angular/core';\r\nimport { NavigatorNode } from '@c8y/ngx-components';\r\nimport { AssetNode } from './asset-node';\r\nexport const ASSET_NAVIGATOR_CONFIG = new InjectionToken<AssetNavigatorConfig>('AssetNodeConfig');\r\n\r\n/**\r\n * Configuration object of the AssetsNavigatorModule.\r\n */\r\nexport interface AssetNavigatorConfig {\r\n /**\r\n * Allows to enable smart groups in the module.\r\n * Default value: false.\r\n */\r\n smartGroups?: boolean;\r\n /**\r\n * Expands the root navigator node when the navigator is initialized.\r\n * Default value: false\r\n */\r\n openOnStart?: boolean;\r\n /**\r\n * Allows to change the position of the root group in the navigator.\r\n * The higher the value, the higher the position in navigation.\r\n * Default value: 2000.\r\n */\r\n rootNodePriority?: number;\r\n /**\r\n * Allows to drag and drop items in the asset navigator.\r\n * Default value: true.\r\n */\r\n disableDragAndDrop?: boolean;\r\n /**\r\n * Allows to override properies of the root group or hide it.\r\n * Setup examples:\r\n * - `rootNavigatorNode: true` - shows the default navigator node (default),\r\n * - `rootNavigatorNode: false` - hides the navigator node,\r\n * - `rootNavigatorNode: { label: 'New name', ... }` - overrides default navigator node,\r\n * - `rootNavigatorNode: new NavigatorNode({ label: 'New name', ... })` - overrides default navigator node,\r\n */\r\n rootNavigatorNode?: boolean | Partial<NavigatorNode | AssetNode>;\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport { GroupService as MigratedDeviceGroupService } from '@c8y/ngx-components';\n\n@Injectable({\n providedIn: 'root'\n})\n\n/**\n * @deprecated\n * Original service was moved to core/common.\n * This service is deprecated and serves as a proxy to maintain backward compatibility.\n */\nexport class DeviceGroupService {\n constructor(private migratedDeviceGroupService: MigratedDeviceGroupService) {}\n\n icon(mo: IManagedObject, open = false): Promise<string> {\n return this.migratedDeviceGroupService.getIcon(mo, open);\n }\n\n isGroup(mo: IManagedObject): boolean {\n return this.migratedDeviceGroupService.isGroup(mo);\n }\n\n isDynamicGroup(mo: IManagedObject): boolean {\n return this.migratedDeviceGroupService.isDynamicGroup(mo);\n }\n\n isDataBroker(mo: IManagedObject): boolean {\n return this.migratedDeviceGroupService.isDataBroker(mo);\n }\n\n isDataBrokerActive(mo: IManagedObject) {\n return this.migratedDeviceGroupService.isDataBrokerActive(mo);\n }\n\n isAsset(mo: IManagedObject) {\n return this.migratedDeviceGroupService.isAsset(mo);\n }\n\n isAnyGroup(mo: IManagedObject) {\n return this.migratedDeviceGroupService.isAnyGroup(mo);\n }\n\n isDevice(mo: IManagedObject) {\n return this.migratedDeviceGroupService.isDevice(mo);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, ActivationEnd, Router } from '@angular/router';\nimport { IManagedObject, IResult, InventoryService, QueriesUtil, UserService } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n AlertService,\n AppStateService,\n BreadcrumbService,\n GroupFragment,\n ModalService,\n NavigatorNode,\n NavigatorNodeData,\n OptionsService,\n ViewContext,\n Permissions\n} from '@c8y/ngx-components';\nimport { ApiService } from '@c8y/ngx-components/api';\nimport { empty } from 'rxjs';\nimport { filter, first, mergeMap } from 'rxjs/operators';\nimport { AssetsNavigatorAction } from './action.enum';\nimport { AssetNode } from './asset-node';\nimport { ASSET_NAVIGATOR_CONFIG, AssetNavigatorConfig } from './asset-node-config.model';\nimport { DynamicGroupNode } from './dynamic-group-node';\nimport { DeviceGroupService } from './group.service';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport interface AssetNodeMo {\n id: string;\n type: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AssetNodeService {\n rootNode: AssetNode;\n firstUrl = true;\n draggedData: AssetNode;\n queriesUtil: QueriesUtil;\n protected PAGE_SIZE = 20;\n\n inventory = inject(InventoryService);\n apiService = inject(ApiService);\n modal = inject(ModalService);\n alert = inject(AlertService);\n translateService = inject(TranslateService);\n\n protected breadcrumbService = inject(BreadcrumbService);\n protected user = inject(UserService);\n protected appState = inject(AppStateService);\n protected optionsService = inject(OptionsService);\n moduleConfig: AssetNavigatorConfig;\n protected deviceGroupService = inject(DeviceGroupService);\n protected router = inject(Router);\n\n constructor() {\n this.moduleConfig = {\n rootNodePriority: 2000,\n ...(inject(ASSET_NAVIGATOR_CONFIG, { optional: true }) || {})\n };\n this.queriesUtil = new QueriesUtil();\n\n this.router.events\n .pipe(\n filter(\n (event: ActivationEnd) =>\n event instanceof ActivationEnd && event.snapshot.data?.contextData\n ),\n first()\n )\n .subscribe(({ snapshot }) => {\n this.expandNodesOnStart(snapshot);\n });\n }\n\n /**\n * Expands the navigator nodes on first navigation.\n * @param snapshot The current navigation snapshot.\n */\n async expandNodesOnStart(snapshot: ActivatedRouteSnapshot): Promise<void> {\n if (!this.rootNode) {\n return;\n }\n if (\n snapshot.data?.context === ViewContext.Group ||\n snapshot.data?.context === ViewContext.Device\n ) {\n const { data } = await this.inventory.detail(snapshot.data.contextData, {\n withParents: true\n });\n\n const allManagedObjectParentIds = [\n ...data.assetParents.references.map(({ managedObject }) => {\n return managedObject.id;\n }),\n data.id\n ];\n this.expandAll(this.rootNode, allManagedObjectParentIds);\n return;\n }\n\n if (this.moduleConfig.openOnStart) {\n this.expandAll(this.rootNode, []);\n }\n }\n\n /**\n * Expands all the given ids recursively. Stops if it does not find any.\n * @param node The node where the expanding should be started\n * @param ids The ids that should be expanded.\n */\n expandAll(node: AssetNode, ids: string[]) {\n node.open = true;\n node.click({ open: true });\n if (node.events) {\n node.events\n .pipe(\n filter(action => action === AssetsNavigatorAction.LOADING_DONE),\n first()\n )\n .subscribe(() => {\n const nodeToExpand = node.children.find(\n childNode => childNode.mo?.id && ids.includes(childNode.mo.id)\n );\n if (nodeToExpand) {\n this.expandAll(\n nodeToExpand,\n ids.filter(id => id !== nodeToExpand.mo.id)\n );\n }\n });\n }\n }\n\n label(mo: IManagedObject): string {\n return (\n mo.name ||\n (this.isDevice(mo) &&\n this.translateService.instant(gettext('Device {{id}}'), { id: mo.id })) ||\n '--'\n );\n }\n\n icon(mo: IManagedObject, open?: boolean): Promise<string> {\n return this.deviceGroupService.icon(mo, open);\n }\n\n isGroup(mo: IManagedObject) {\n return this.deviceGroupService.isGroup(mo);\n }\n\n isDynamicGroup(mo: IManagedObject) {\n return this.deviceGroupService.isDynamicGroup(mo);\n }\n\n isDataBroker(mo: IManagedObject) {\n return this.deviceGroupService.isDataBroker(mo);\n }\n\n isDataBrokerActive(mo: IManagedObject) {\n return this.deviceGroupService.isDataBrokerActive(mo);\n }\n\n isAsset(mo: IManagedObject) {\n return this.deviceGroupService.isAsset(mo);\n }\n\n isAnyGroup(mo: IManagedObject) {\n return this.deviceGroupService.isAnyGroup(mo);\n }\n\n isDevice(mo: IManagedObject) {\n return this.deviceGroupService.isDevice(mo);\n }\n\n createRootNode(config: NavigatorNodeData = {}) {\n this.rootNode = this.createAssetNode({\n root: true,\n ...config,\n priority: this.moduleConfig.rootNodePriority,\n featureId: 'groups'\n });\n return this.rootNode;\n }\n\n createDynamicGroupNode(config) {\n return new DynamicGroupNode(this, config);\n }\n\n createAssetNode(config: Partial<AssetNode>) {\n return new AssetNode(this, config);\n }\n\n createChildNode(managedObject, config: Partial<AssetNode>) {\n const { type } = managedObject;\n config.mo = managedObject;\n if (type === GroupFragment.dynamicGroupType) {\n return this.createDynamicGroupNode(config);\n }\n return this.createAssetNode(config);\n }\n\n getRootNodes(customFilter?: any): Promise<any> {\n const defaultFilter = {\n pageSize: this.PAGE_SIZE,\n withChildren: false,\n onlyRoots: !this.optionsService.disableOnlyRootsQuery,\n query: this.queriesUtil.buildQuery(this.navRootQueryFilter())\n };\n const groupFilter = { ...defaultFilter, ...customFilter };\n\n // due to BE performance limitations we do not allow filtering and sorting for a user without inventory roles\n if (\n this.appState?.currentUser?.value &&\n !this.user.hasAnyRole(this.appState.currentUser.value, [\n Permissions.ROLE_INVENTORY_READ,\n Permissions.ROLE_MANAGED_OBJECT_READ\n ])\n ) {\n delete groupFilter.query;\n Object.assign(groupFilter, {\n fragmentType: GroupFragment.groupFragmentType,\n onlyRoots: true\n });\n }\n return this.inventory.list(this.createFilter(groupFilter));\n }\n\n getAllInventories(customFilter?: any): Promise<any> {\n const defaultFilter = {\n pageSize: this.PAGE_SIZE,\n withChildren: false\n };\n const groupFilter = { ...defaultFilter, ...customFilter };\n return this.inventory.list(this.createFilter(groupFilter));\n }\n\n getGroupItems(moId: string, extraFilter: object = {}, withChildren = false, filterQuery = '') {\n const queryFilter = {\n withChildren,\n pageSize: this.PAGE_SIZE,\n query: this.groupQueryFilter(moId, filterQuery)\n };\n return this.inventory.childAssetsList(moId, { ...queryFilter, ...extraFilter });\n }\n\n getUnassignedDevices(withChildren = false, filterQuery = '') {\n const queryFilter: any = {\n fragmentType: 'c8y_IsDevice',\n onlyRoots: true,\n withChildren,\n pageSize: this.PAGE_SIZE,\n q: this.getUnassignedDevicesQueryStr(filterQuery)\n };\n return this.inventory.list(this.createFilter(queryFilter));\n }\n\n getDynamicGroupItems(groupQuery: string, filterObj: any = {}) {\n const { query, ...queryParams } = filterObj;\n const orderByQuery = query;\n const queryFilter = {\n q: this.buildCombinedQuery(groupQuery, orderByQuery),\n ...queryParams\n };\n return this.inventory.list(this.createFilter(queryFilter));\n }\n\n getDeviceChildren(\n moId: string,\n extraFilter: object = {},\n filterQuery = '',\n withChildren = false\n ) {\n const queryFilter = {\n withChildren,\n pageSize: this.PAGE_SIZE,\n query: this.groupQueryFilter(moId, filterQuery)\n };\n return this.inventory.childDevicesList(moId, { ...queryFilter, ...extraFilter });\n }\n\n getUnassignedDevicesQueryStr(filterQuery): string {\n const hasGroupId = filterQuery.includes('bygroupid');\n // Fetch all unassigned devices.\n const defaultQueryStr = '$orderby=name';\n\n // filterQuery is a custom query to fetch unassigned devices filtered by name.\n return hasGroupId || !filterQuery ? defaultQueryStr : filterQuery;\n }\n\n groupQueryFilter(moId: string, filterQuery?: string) {\n if (!filterQuery) {\n return `$filter=(bygroupid(${moId}))$orderby=name`;\n }\n return filterQuery;\n }\n\n navRootQueryFilter() {\n const navRootFilter = this.rootQueryFilter();\n navRootFilter.__orderby = [{ name: 1 }];\n return navRootFilter;\n }\n\n rootQueryFilter() {\n const { moduleConfig } = this;\n const rootFilter = this.optionsService.disableOnlyRootsQuery\n ? {\n __filter: {\n type: GroupFragment.groupType\n },\n __orderby: []\n }\n : {\n __filter: {\n __has: GroupFragment.groupFragmentType\n },\n __orderby: []\n };\n if (moduleConfig.smartGroups) {\n const queryFilter = {\n __filter: {\n __and: [\n {\n type: GroupFragment.dynamicGroupType\n },\n {\n __has: GroupFragment.dynamicGroupFragment\n },\n { __not: { __has: `${GroupFragment.dynamicGroupFragment}.invisible` } }\n ]\n }\n };\n this.queriesUtil.addOrFilter(rootFilter, queryFilter);\n }\n return rootFilter;\n }\n\n onUpdate({ mo, root }) {\n if (mo.id) {\n return this.apiService\n .hookResponse(\n ({ url, method }) =>\n ['PUT', 'DELETE', 'POST'].includes(method) &&\n RegExp(`inventory/managedObjects/${mo.id}`).test(url)\n )\n .pipe(\n filter(() => !this.draggedData),\n this.apiService.excludePermissionCall(),\n mergeMap(this.apiService.resolveData<IManagedObject>),\n filter(response => !response?.data?.c8y_Dashboard)\n );\n } else if (root) {\n return this.apiService\n .hookResponse(\n ({ url, method }) => RegExp('inventory/managedObjects/?$').test(url) && method === 'POST'\n )\n .pipe(\n mergeMap(this.apiService.resolveData<IManagedObject>),\n filter(response => this.isNewManagedObjectRoot(response))\n );\n } else {\n return empty();\n }\n }\n\n isNewManagedObjectRoot(response: Partial<IResult<IManagedObject>> = {}) {\n const { data } = response;\n let isRootAsset = false;\n\n if (typeof data === 'object') {\n isRootAsset = !!data[GroupFragment.groupFragmentType];\n if (!isRootAsset && this.moduleConfig.smartGroups) {\n isRootAsset = !!data[GroupFragment.dynamicGroupFragment];\n }\n }\n return isRootAsset;\n }\n\n /**\n * Check if it is possible to drop a node after dragging.\n * @param dropOnRoot Is the drop performed on the root node\n */\n canDropNode(dropOnRoot: boolean): boolean {\n return (\n !dropOnRoot ||\n this.user.hasAnyRole(this.appState.currentUser.value, [\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_ADMIN\n ])\n );\n }\n\n /**\n * There could be multiple breadcrumbs for devices,\n * so we set a preferred one on click on a device.\n * @param parents The parent nodes of the device to select the prefered one.\n */\n preferBreadcrumb(parents: NavigatorNode[]) {\n if (parents.length === 1) {\n this.breadcrumbService.selectPreferredByPath(parents[0].path);\n }\n }\n\n protected createFilter(extraParams: any = {}) {\n const params = {\n currentPage: 1,\n withTotalPages: true,\n pageSize: 10\n };\n return { ...params, ...extraParams };\n }\n\n private buildCombinedQuery(queryA, queryB) {\n let combinedQuery;\n if (queryA && queryB) {\n const filterQuery = this.queriesUtil.buildQuery([\n {\n __useFilterQueryString: queryA\n },\n {\n __useFilterQueryString: queryB\n }\n ]);\n const orberByQuery = this.queriesUtil.extractAndMergeOrderBys([queryA, queryB]);\n combinedQuery = `${filterQuery} ${orberByQuery}`;\n } else {\n combinedQuery = queryA || queryB || '';\n }\n return combinedQuery;\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { get as getProp } from 'lodash-es';\nimport { AssetNode } from './asset-node';\nimport { AssetNavigatorConfig, ASSET_NAVIGATOR_CONFIG } from './asset-node-config.model';\nimport { AssetNodeService } from './asset-node.service';\n\n@Injectable()\nexport class AssetNodeFactory {\n constructor(\n private service: AssetNodeService,\n @Optional() @Inject(ASSET_NAVIGATOR_CONFIG) public moduleConfig: AssetNavigatorConfig\n ) {}\n\n get(): AssetNode {\n const rootNavigatorNode = getProp(this.moduleConfig, 'rootNavigatorNode') ?? true;\n let { rootNode } = this.service;\n\n if (rootNavigatorNode === false) {\n return;\n }\n\n if (!rootNode) {\n rootNode = this.service.createRootNode(rootNavigatorNode === true ? {} : rootNavigatorNode);\n }\n return rootNode;\n }\n}\n","import { GroupFragment } from '@c8y/ngx-components';\nimport { GroupNodeService } from './group-node.service';\nimport { AssetNode } from '../asset-node';\nimport { GroupNodeConfig } from './asset-selector.model';\n\nexport class GroupNode extends AssetNode {\n static NAME = 'GroupNode';\n\n /**\n * Set this true, if only groups should be shown.\n */\n groupsOnly = false;\n\n /**\n * Set this true, if it groups are also selectable.\n */\n groupsSelectable = false;\n /**\n * Devices with children can be selected to show their child devices.\n */\n showChildDevices = false;\n\n /**\n * Group node children (subentries).\n */\n children: GroupNode[] = [];\n\n /**\n * Creates a new node which shows only groups.\n *\n * @param service The service to use.\n * @param config The default configuration of the node.\n * @param groupsOnly Set this true, if only groups should be shown.\n * @param selectable Set this true, if it is selectable.\n */\n\n constructor(protected service: GroupNodeService, config: GroupNodeConfig = {}) {\n super(service, config);\n this.groupsOnly = config.groupsOnly || false;\n this.groupsSelectable = config.groupsSelectable || false;\n this.showChildDevices = config.showChildDevices || false;\n }\n\n /**\n * Adds the MO as a child node.\n * @param mo ManagedObject\n */\n addManagedObject(mo) {\n const { childAdditions } = this.mo;\n if (!this.isChildAddition(childAdditions, mo)) {\n this.add(\n this.service.createChildNode({\n mo,\n groupsOnly: this.groupsOnly,\n groupsSelectable: this.groupsSelectable,\n showChildDevices: this.showChildDevices\n })\n );\n }\n }\n\n /**\n * Counts the number of children for the current node (with the exception of the UnassignedDevicesNode).\n */\n countChildren(): number {\n return this.children.filter(value => value.toString() !== 'UnassignedDevicesNode').length;\n }\n\n /**\n * Removes all child nodes except the UnassignedDevicesNode.\n */\n empty() {\n this.children = this.children.filter(value => value.toString() === 'UnassignedDevicesNode');\n }\n\n fetch() {\n const isRoot = this.root;\n const isDevice = this.mo.c8y_IsDevice;\n return isRoot\n ? this.service.getRootNodes()\n : isDevice\n ? this.service.getDeviceChildren(\n this.mo.id,\n {},\n this.filterQuery$.value,\n this.showChildDevices\n )\n : this.service.getGroupItems(\n this.mo.id,\n this.groupsOnly\n ? {\n query: `$filter=(has(${GroupFragment.groupFragmentType}))`\n }\n : {},\n this.showChildDevices,\n this.filterQuery$.value\n );\n }\n\n toString() {\n return GroupNode.NAME;\n }\n\n isGroup() {\n return this.mo && this.service.isGroup(this.mo);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AssetNodeService } from '../asset-node.service';\nimport { GroupNodeConfig } from './asset-selector.model';\nimport { GroupNode } from './group-node';\n\n@Injectable({ providedIn: 'root' })\nexport class GroupNodeService extends AssetNodeService {\n protected PAGE_SIZE = 5;\n\n createGroupNode(config: GroupNodeConfig) {\n return new GroupNode(this, config);\n }\n\n createChildNode(config: GroupNodeConfig): GroupNode {\n return this.createGroupNode(config);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IIdentified, IManagedObject } from '@c8y/client';\nimport { AssetNodeService } from '../asset-node.service';\nimport { isArray, isNumber, isObject, isString } from 'lodash';\nimport { GroupNode } from './group-node';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AssetSelectorService extends AssetNodeService {\n /**\n * Function which will check if the node is selectable.\n */\n private isNodeSelectableFn: boolean | ((node: GroupNode) => boolean) = true;\n\n /**\n * Sets the function that will decide if the node is selectable.\n * @param fn A boolean or a function that will decide if the node is selectable.\n */\n setIsNodeSelectable(fn: boolean | ((node: GroupNode) => boolean)): void {\n this.isNodeSelectableFn = fn;\n }\n\n /**\n * Checks if the node is selectable.\n * @param node The node to check.\n */\n isNodeSelectable(node: GroupNode): boolean {\n if (typeof this.isNodeSelectableFn === 'boolean') {\n return this.isNodeSelectableFn;\n } else if (typeof this.isNodeSelectableFn === 'function') {\n return this.isNodeSelectableFn(node);\n }\n return true;\n }\n /**\n * Simplifies the object model based on the selected mode.\n * @param obj The selected asset.\n * @param mode The mode which will decide what type of model will be returned.\n */\n normalizeValue(\n obj: Partial<IManagedObject>,\n modelMode: 'simple' | 'full'\n ): Partial<IManagedObject> | IIdentified {\n return this.simplifyModel(this.normalizeModelValue(obj), modelMode);\n }\n\n simplifyModel(\n model: Partial<IManagedObject> | IIdentified[],\n mode: 'simple' | 'full'\n ): Partial<IManagedObject> | IIdentified {\n const mapModel = model => {\n const { id, name, c8y_DeviceQueryString } = model as IIdentified;\n return { id, name, ...(c8y_DeviceQueryString ? { c8y_DeviceQueryString } : {}) };\n };\n\n if (mode === 'full') {\n return model;\n }\n if (!isArray(model)) {\n return mapModel(model);\n }\n return model.map(mapModel);\n }\n\n /**\n * Returns the index of the currently selected item.\n * @param selected All selected items\n * @param selectedMo The new selected item-\n * @returns An index, or -1 if not found.\n */\n getIndexOfSelected(\n selected: Array<Partial<IIdentified>> | Partial<IIdentified>,\n selectedMo: IIdentified\n ) {\n return selected.findIndex(mo => mo.id === selectedMo.id);\n }\n\n private normalizeModelValue(value: any): IIdentified[] {\n if (isNumber(value) || isString(value)) {\n return [{ id: value }];\n }\n if (isArray(value)) {\n return value;\n }\n if (isObject(value)) {\n return [value];\n }\n return [];\n }\n}\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IIdentified, IManagedObject } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { IconDirective, C8yTranslateDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { AssetsNavigatorAction } from '../action.enum';\nimport { AssetSelectorService } from './asset-selector.service';\nimport { GroupNode } from './group-node';\nimport { NgIf, NgStyle, NgClass, NgFor } from '@angular/common';\nimport { CollapseDirective } from 'ngx-bootstrap/collapse';\n\n@Component({\n selector: 'c8y-asset-selector-node',\n templateUrl: './asset-selector-node.component.html',\n imports: [\n NgIf,\n NgStyle,\n NgClass,\n IconDirective,\n C8yTranslateDirective,\n CollapseDirective,\n NgFor,\n C8yTranslatePipe\n ]\n})\nexport class AssetSelectorNodeComponent implements OnInit {\n /**\n * The current node.\n */\n @Input() node: GroupNode;\n /**\n * Root node. Node found at the top of the hierarchy.\n */\n @Input() rootNode: GroupNode;\n /**\n * All preselected items.\n */\n @Input() preselected: IIdentified | IIdentified[] = [];\n /**\n * Should the path be shown.\n */\n @Input() showPath = false;\n /**\n * Can the user select multiple assets.\n */\n @Input() multi = false;\n /**\n * The current path to the node.\n */\n @Input() view: 'tree' | 'miller' = 'tree';\n /**\n * Used only for miller-view, displays the column level for the current node.\n * E.g if the index is one, this will be second column.\n */\n @Input() index;\n /**\n * Sets the active node.\n */\n @Input() active: GroupNode;\n /**\n * A function that should verify the need to add a column when a node is clicked.\n */\n @Input() handleNextMillerViewColumn: (node: GroupNode, index: number) => boolean;\n\n @Input() disabled = false;\n /**\n * Event, which indicates whether the loading of the node has completed.\n */\n @Output() isLoadingState: EventEmitter<boolean> = new EventEmitter();\n /**\n * Event that emits when a node is selected.\n */\n @Output() onSelect: EventEmitter<IManagedObject> = new EventEmitter();\n /**\n * Event that emits when a node is deselected.\n */\n @Output() onDeselect: EventEmitter<{ deselectMode: 'single' | 'all'; mo: IManagedObject }> =\n new EventEmitter();\n\n breadcrumb: string;\n /**\n * @ignore\n */\n level = 0;\n /**\n * @ignore\n */\n unsubscribe$ = new Subject<void>();\n isNodeSelectable = true;\n\n /** sets the `btn-pending` class in the load more button */\n isLoading = false;\n /**\n * @ignore\n */\n get expandTitle() {\n return !this.node.open ? gettext('Expand') : gettext('Collapse');\n }\n\n /**\n * @ignore only di\n */\n constructor(\n private translateService: TranslateService,\n private cd: ChangeDetectorRef,\n public assetSelectorService: AssetSelectorService\n ) {}\n\n /**\n * @ignore\n */\n async ngOnInit() {\n this.isNodeSelectable = this.assetSelectorService.isNodeSelectable(this.node);\n this.breadcrumb = this.node.label;\n this.setupBreadcrumbsAndLevel(this.node);\n\n if (this.node instanceof GroupNode) {\n this.node.hookEvents();\n }\n\n // open on startup\n if (this.node.root) {\n this.click();\n }\n\n // used for loading and to trigger change detection when the node is no longer loading.\n if (this.node.events) {\n this.node.events\n .pipe(\n takeUntil(this.unsubscribe$),\n filter((a: AssetsNavigatorAction) => a === AssetsNavigatorAction.LOADING_DONE)\n )\n .subscribe(() => {\n this.isLoadingState.emit(false);\n this.cd.markForCheck();\n });\n }\n }\n\n /**\n * Opens a node.\n */\n click() {\n this.node.open = !this.node.open;\n this.node.click({ open: this.node.open });\n }\n\n setupBreadcrumbsAndLevel(node: GroupNode) {\n if (node.parents && node.parents.length) {\n const parent = node.parents[0] as GroupNode;\n this.breadcrumb =\n this.translateService.instant(parent.label) +\n ' > ' +\n this.translateService.instant(this.breadcrumb);\n this.level++;\n\n this.setupBreadcrumbsAndLevel(parent);\n }\n }\n\n /**\n * Selects the node and emits a change on the parent component.\n * @param node The node to select.\n */\n selected(node: GroupNode) {\n if (node.mo) {\n this.updateSelection(node.mo);\n return;\n }\n this.click();\n }\n\n /**\n * Handles clicks on a item in Miller View.\n * @param node The node that was clicked.\n */\n millerViewClick(node: GroupNode) {\n node.breadcrumb = this.breadcrumb;\n\n if (!this.handleNextMillerViewColumn) {\n return;\n }\n const shouldHandleDefault = this.handleNextMillerViewColumn(node, this.index);\n if (shouldHandleDefault) {\n this.selected(node);\n }\n }\n\n /**\n * @ignore\n */\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n isSelected() {\n if (!this.node.mo) {\n return false;\n }\n return this.assetSelectorService.getIndexOfSelected(this.preselected, this.node.mo) > -1;\n }\n\n isActive() {\n if (this.active && this.node.mo) {\n return this.active.mo?.id === this.node.mo.id;\n }\n return false;\n }\n\n private updateSelection(selectedMo: IManagedObject) {\n if (!this.multi) {\n this.onDeselect.emit({ deselectMode: 'all', mo: selectedMo });\n return;\n }\n if (this.isSelected()) {\n this.onDeselect.emit({ deselectMode: 'single', mo: selectedMo });\n return;\n }\n this.onSelect.emit(selectedMo);\n this.cd.markForCheck();\n }\n}\n","<!-- Hierarchy tree -->\n<div\n class=\"c8y-asset-selector__item\"\n [ngStyle]=\"{\n 'margin-left': level > 1 ? 16 + 'px' : '0'\n }\"\n *ngIf=\"view === 'tree'\"\n [attr.role]=\"view === 'tree' ? 'tree' : 'list'\"\n [ngClass]=\"{\n 'c8y-asset-selector__item--more': node?.icon === 'plus',\n 'c8y-asset-selector__item--start': level === 0\n }\"\n>\n <div\n class=\"c8y-asset-selector__node\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n [ngClass]=\"{ 'c8y-asset-selector__node--open': node?.open }\"\n >\n <!-- expand button -->\n <div class=\"c8y-asset-selector__node__btn-spacer\">\n <button\n class=\"collapse-btn btn-dot\"\n [title]=\"expandTitle | translate\"\n [attr.aria-expanded]=\"node.open\"\n (click)=\"click()\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </button>\n </div>\n <div\n class=\"d-flex a-i-center p-t-4 p-b-4\"\n *ngIf=\"node.toString() !== 'LoadMoreNode' && isNodeSelectable\"\n >\n <label [ngClass]=\"{ 'c8y-checkbox': multi, 'c8y-radio': !multi }\">\n <input\n id=\"nodeLabel\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"disabled || !node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <!-- group button -->\n <button\n class=\"c8y-asset-selector__btn text-truncate\"\n [attr.aria-expanded]=\"!node.open\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n (click)=\"click()\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate\"\n *ngIf=\"showPath\"\n >\n <small\n class=\"text-muted\"\n title=\"{{ breadcrumb }}\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n </p>\n <!-- up to here -->\n </span>\n </button>\n <!-- not a group button -->\n <button\n class=\"flex-grow\"\n title=\"{{ breadcrumb }}\"\n type=\"button\"\n *ngIf=\"!node.isGroup() && !node.hasChildDevices()\"\n [ngClass]=\"{\n 'btn btn-default btn-sm m-b-8 m-r-8 d-flex j-c-center': node.icon === 'plus',\n 'c8y-asset-selector__btn text-truncate': node.icon != 'plus'\n }\"\n (click)=\"selected(node)\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16 ': node.icon != 'plus' }\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate text-muted small\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </p>\n <!-- up to here -->\n </span>\n </button>\n </div>\n <div\n class=\"collapse\"\n *ngIf=\"node.countChildren()\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n [attr.role]=\"'group'\"\n >\n <c8y-asset-selector-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [preselected]=\"preselected || []\"\n [disabled]=\"disabled\"\n [multi]=\"multi\"\n [active]=\"active\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n\n<!-- Miller columns -->\n<div *ngIf=\"view === 'miller'\">\n <div\n class=\"miller-column__item bg-inherit\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden && node !== rootNode\"\n [ngClass]=\"{\n active: isActive(),\n 'miller-column__item--more': node.toString() === 'LoadMoreNode'\n }\"\n >\n <div\n class=\"m-l-4 m-r-4 miller-column__item__checkbox\"\n *ngIf=\"node.toString() !== 'LoadMoreNode'\"\n >\n <label [ngClass]=\"{ 'c8y-radio': !multi, 'c8y-checkbox': multi }\">\n <input\n id=\"nodeLabel2\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"disabled || !node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel2\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <button\n title=\"{{ breadcrumb | translate }}\"\n type=\"button\"\n [ngClass]=\"{\n 'btn btn-default btn-sm d-flex flex-grow j-c-center m-l-16 m-r-16 m-b-4 m-t-4':\n node.toString() === 'LoadMoreNode',\n 'miller-column__item__btn': node.toString() !== 'LoadMoreNode',\n 'btn-pending': node.loading && node.toString() === 'LoadMoreNode'\n }\"\n (click)=\"millerViewClick(node)\"\n >\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16': node.toString() !== 'LoadMoreNode' }\"\n ></i>\n <div class=\"text-left text-truncate\">\n <p\n class=\"text-truncate\"\n title=\"{{ node.translateLabel ? (node.label | translate) : node.label }}\"\n >\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n </p>\n <!-- use just for search results to display the path -->\n <small\n class=\"text-muted text-truncate\"\n title=\"{{ breadcrumb }}\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n <!-- up to here -->\n </div>\n <span\n class=\"p-l-4 m-l-auto\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </span>\n </button>\n </div>\n\n <div\n role=\"list\"\n *ngIf=\"node\"\n [ngClass]=\"{ hidden: node !== rootNode }\"\n >\n <c8y-asset-selector-node\n role=\"listitem\"\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [rootNode]=\"rootNode\"\n [preselected]=\"preselected || []\"\n [multi]=\"multi\"\n [view]=\"view\"\n [index]=\"index\"\n [active]=\"active\"\n [disabled]=\"disabled\"\n [handleNextMillerViewColumn]=\"handleNextMillerViewColumn\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n","import { EventEmitter } from '@angular/core';\nimport { IIdentified, IManagedObject, InventoryService } from '@c8y/client';\nimport { GroupNodeService } from './group-node.service';\nimport { AssetSelectorService } from './asset-selector.service';\nimport { AssetSelectionChangeEvent, AssetSelectorOptions } from './asset-selector.model';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport class AssetSelectorBase {\n /**\n * Config object containing all options for the asset selector.\n */\n config: AssetSelectorOptions = {};\n /**\n * An array of predefined nodes.\n */\n selected: Array<Partial<IManagedObject>> | IIdentified[] | IIdentified;\n /**\n * The loading state of the current node.\n */\n isLoading = false;\n /**\n * Emit the selected asset or assets.\n */\n onSelected = new EventEmitter<AssetSelectionChangeEvent>();\n /**\n * Emits if the currently selected asset is cleared.\n */\n onClearSelected = new EventEmitter<void>();\n\n private onChange: (mo: IIdentified[] | IIdentified) => void;\n private onTouched: () => void;\n\n constructor(\n protected groupNodeService: GroupNodeService,\n protected inventory: InventoryService,\n protected assetSelectorService: AssetSelectorService\n ) {}\n\n /**\n * @ignore\n */\n validate(control: AbstractControl): ValidationErrors {\n if (this.config.required && (!control.value || control.value.length === 0)) {\n return { required: true };\n }\n return null;\n }\n\n /**\n * @ignore\n */\n writeValue(obj: any): void {\n this.selected = this.assetSelectorService.normalizeValue(obj, this.config.modelMode);\n }\n\n /**\n * @ignore\n */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /**\n * @ignore\n */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * @ignore\n */\n doBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n /**\n * Deselects all expect the given one.\n * @param selectedMo The selected asset (optional, if empty -> just deselect all).\n */\n deselectAll(selectedMo?: IManagedObject) {\n this.selected = [];\n if (selectedMo) {\n this.selected = [this.assetSelectorService.simplifyModel(selectedMo, this.config.modelMode)];\n }\n this.emitChange(this.selected, selectedMo, !!selectedMo);\n this.doBlur();\n }\n\n /**\n * Adds an managed object to the selected array and emits the change.\n * @param selectedMo The selected asset.\n */\n select(selectedMo: IManagedObject) {\n if (!this.config.multi) {\n this.selected = [];\n }\n const index = this.getIndexOfSelected(this.selected, selectedMo);\n if (index === -1) {\n this.selected.push(\n this.assetSelectorService.simplifyModel(selectedMo, this.config.modelMode)\n );\n }\n this.emitChange(this.selected, selectedMo, true);\n this.doBlur();\n }\n\n /**\n * Removes a managed object from the selected array and emits the change.\n * @param selectedMo The selected asset.\n */\n deselect(selectedMo: IManagedObject) {\n const index = this.getIndexOfSelected(this.selected, selectedMo);\n if (index > -1) {\n this.selected.splice(index, 1);\n }\n this.emitChange(this.selected, selectedMo, false);\n this.doBlur();\n }\n\n /**\n * Returns the index of the currently selected item.\n * @param selected All selected items\n * @param selectedMo The new selected item-\n * @returns An index, or -1 if not found.\n */\n getIndexOfSelected(\n selected: Array<Partial<IIdentified>> | Partial<IIdentified>,\n selectedMo: IIdentified\n ) {\n return selected.findIndex(mo => mo.id === selectedMo.id);\n }\n\n emitChange(selected: IIdentified | IIdentified[], item: IManagedObject, isSelected: boolean) {\n const changes = this.config.multi ? selected : selected[0];\n if (this.onChange) {\n this.onChange(changes);\n }\n this.onSelected.emit({ items: changes, change: { item, isSelected } });\n }\n\n createDefaultRootNode() {\n return this.groupNodeService.createGroupNode({\n root: true,\n groupsSelectable: this.config.groupsSelectable,\n groupsOnly: this.config.groupsOnly,\n showChildDevices: this.config.showChildDevices\n });\n }\n async createManagedObjectRootNode(asset: IIdentified) {\n if ((asset as IIdentified).id) {\n return this.groupNodeService.createGroupNode({\n mo: asset as IManagedObject,\n groupsSelectable: this.config.groupsSelectable,\n groupsOnly: this.config.groupsOnly,\n showChildDevices: this.config.showChildDevices\n });\n }\n const { data: mo } = await this.inventory.detail(asset);\n return this.groupNodeService.createGroupNode({\n mo,\n groupsSelectable: this.config.groupsSelectable,\n groupsOnly: this.config.groupsOnly,\n showChildDevices: this.config.showChildDevices\n });\n }\n}\n","import { IManagedObject, IIdentified } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport interface AssetSelectionChangeEvent {\n items: IIdentified | IIdentified[];\n change: { item: IManagedObject; isSelected: boolean };\n}\n\nexport interface GroupNodeConfig {\n root?: boolean;\n mo?: IManagedObject;\n groupsOnly?: boolean;\n groupsSelectable?: boolean;\n showChildDevices?: boolean;\n}\n\nexport const CONFIG_OPTIONS_DEFAULT: AssetSelectorOptions = {\n label: gettext('Asset selection'),\n multi: false,\n showFilter: false,\n columnHeaders: false,\n singleColumn: false,\n modelMode: 'simple',\n groupsOnly: false,\n groupsSelectable: false,\n search: false,\n showUnassignedDevices: false,\n view: 'tree',\n showChildDevices: false,\n showSelected: true\n};\n\nexport interface AssetSelectorOptions {\n /**\n * Already selected devices.\n */\n selectedDevices?: IIdentified | IIdentified[];\n /**\n * Defines a label to be shown to the user.\n */\n label?: string;\n /**\n * Can the user select multiple assets.\n */\n multi?: boolean;\n /**\n * displays a filter input on every column when using the miller view.\n */\n showFilter?: boolean;\n /**\n * displays a column header on every column when using the miller view.\n */\n columnHeaders?: boolean;\n /**\n * Displays only the select column.\n */\n singleColumn?: boolean;\n /**\n * Set to true to mark it as required on a form.\n */\n required?: boolean;\n /**\n * In simple model-mode the result will only contain the IDs and name of the selected\n * assets. In full mode, everything is contained.\n */\n modelMode?: 'simple' | 'full';\n /**\n * Set this to true, if the selector should only show groups.\n */\n groupsOnly?;\n /**\n * Set this true, if groups should be selectable.\n */\n groupsSelectable?;\n /**\n * Enable to display global search in the asset-selector (only possible whithout device context).\n */\n search?: boolean;\n /**\n * Displays all unassigned devices in a custom root group.\n */\n showUnassignedDevices?: boolean;\n /**\n * Set the view of the asset selector with tree view as default.\n */\n view?: 'tree' | 'miller';\n /**\n * Used only for miller-view, displays the column level for the current node.\n * E.g if the index is one, this will be second column.\n */\n index?: number;\n /**\n * Used only for single column, the array contains all selected columns.\n */\n selectedColumns?: IIdentified[] | IIdentified;\n /**\n * Devices with children can be selected to show their child devices.\n */\n showChildDevices?: boolean;\n /**\n * Allows to show chips at the top with the currently selected asset for multi select.\n * For single select it shows the currently selected asset.\n */\n showSelected?: boolean;\n /**\n * Prevents automatic asset selection on component initialization.\n */\n preventInitialSelect?: boolean;\n}\n","import { gettext } from '@c8y/ngx-components/gettext';\nimport { ClickOptions } from '@c8y/ngx-components';\nimport { AssetsNavigatorAction } from '../action.enum';\nimport { GroupNodeConfig } from './asset-selector.model';\nimport { GroupNode } from './group-node';\nimport { GroupNodeService } from './group-node.service';\n\nexport class UnassignedDevicesNode extends GroupNode {\n static NAME = 'UnassignedDevicesNode';\n label = gettext('Unassigned devices');\n icon = 'delete-folder';\n groupsSelectable = false;\n groupsOnly = false;\n showChildDevices = false;\n mo = {};\n\n constructor(\n protected service: GroupNodeService,\n config: GroupNodeConfig = {}\n ) {\n super(service, config);\n this.priority = Infinity;\n this.showChildDevices = config.showChildDevices || false;\n }\n\n click(options: ClickOptions = {}) {\n this.hookEvents();\n if (options.open) {\n this.events.next(AssetsNavigatorAction.FETCH);\n }\n }\n\n addManagedObject(mo) {\n this.add(this.service.createChildNode({ mo, showChildDevices: this.showChildDevices }));\n }\n\n fetch() {\n return this.service.getUnassignedDevices(this.showChildDevices, this.filterQuery$.value);\n }\n\n isGroup() {\n return true;\n }\n\n toString() {\n return UnassignedDevicesNode.NAME;\n }\n\n setLabel() {\n // do nothing, as this item has a hardcoded label.\n // This is only to overwrite the default inherited method.\n this.label = this.label;\n }\n\n async updateIcon() {\n // do nothing, as this item has a hardcoded label.\n // This is only to overwrite the default inherited method.\n this.icon = this.icon;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { IIdentified, IManagedObject, InventoryService } from '@c8y/client';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\nimport { AssetSelectorBase } from './asset-selector-base';\nimport {\n AssetSelectionChangeEvent,\n AssetSelectorOptions,\n CONFIG_OPTIONS_DEFAULT\n} from './asset-selector.model';\nimport { AssetSelectorService } from './asset-selector.service';\nimport { GroupNode } from './group-node';\nimport { GroupNodeService } from './group-node.service';\nimport { UnassignedDevicesNode } from './unassigned-devices-node';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n SearchInputComponent,\n IconDirective,\n C8yTranslatePipe,\n GetGroupIconPipe\n} from '@c8y/ngx-components';\nimport { NgIf, NgStyle, NgClass, NgFor, AsyncPipe } from '@angular/common';\nimport { AssetSelectorNodeComponent } from './asset-selector-node.component';\n\n/**\n * Displays a hierarchical tree selector for assets.\n */\n@Component({\n selector: 'c8y-asset-selector',\n templateUrl: './asset-selector.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AssetSelectorComponent)\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => AssetSelectorComponent),\n multi: true\n },\n AssetSelectorService\n ],\n imports: [\n NgIf,\n NgStyle,\n NgClass,\n SearchInputComponent,\n NgFor,\n IconDirective,\n FormsModule,\n AssetSelectorNodeComponent,\n C8yTranslatePipe,\n AsyncPipe,\n GetGroupIconPipe\n ]\n})\nexport class AssetSelectorComponent extends AssetSelectorBase implements OnInit {\n /**\n * Config object containing all options for the asset selector.\n */\n @Input() config: AssetSelectorOptions = {};\n /**\n * Defines the node, which should be displayed as active.\n */\n @Input() active: GroupNode;\n /**\n * Used only for miller-view, displays the column level for the current node.\n * E.g if the index is one, this will be second column.\n */\n @Input() index = 0;\n /**\n * The asset to use as root.\n */\n @Input() asset: IIdentified = undefined;\n /**\n * The selected device.\n */\n @Input() selectedDevice: IManagedObject = undefined;\n /**\n * An array of predefined nodes.\n */\n @Input() selected: Array<Partial<IManagedObject>> | IIdentified[] | IIdentified = [];\n /**\n * The node to use as root. You can either set this, or the asset to start from.\n */\n @Input() rootNode: GroupNode;\n /**\n * All currently selected assets.\n */\n @Input() selectedItems: IIdentified[] | IIdentified = [];\n @Input() container: '' | 'body' = 'body';\n @Input() isNodeSelectable: boolean | ((node: IIdentified) => boolean) = true;\n @Input() disabled = false;\n /**\n * Emits if one item was selected (all currently selected nodes).\n */\n @Output() onSelected = new EventEmitter<AssetSelectionChangeEvent>();\n /**\n * Emits if the currently selected asset is cleared.\n */\n @Output() onClearSelected = new EventEmitter<void>();\n /**\n * Used only for miller view. Emit the selected node and use it as a 'rootNode' for the new column.\n */\n @Output() onRowSelected = new EventEmitter<any>();\n /**\n * Emits the current loading state of the node.\n */\n @Output() onLoad = new EventEmitter<any>();\n /**\n * The current filter applied.\n */\n filterText = '';\n /**\n * Displays the global search at all times if the miller view is used\n * on root group level.\n */\n root = false;\n /**\n * @ignore\n */\n unsubscribe$ = new Subject<void>();\n /**\n * Returns the current header hight in pixel.\n */\n getHeaderHeight$ = new BehaviorSubject(0);\n readonly ASSET_CONST = gettext('Asset {{ assetId }}');\n\n @ViewChild('header')\n private header: ElementRef;\n\n /**\n * @ignore only DI\n */\n constructor(\n protected groupNodeService: GroupNodeService,\n protected inventory: InventoryService,\n protected assetSelectorService: AssetSelectorService,\n protected cd: ChangeDetectorRef\n ) {\n super(groupNodeService, inventory, assetSelectorService);\n }\n\n /**\n * Checks when a node was selected, if a new column needs to be added.\n * @param node The node that was clicked.\n * @param index The current index of this node.\n * @returns True if the click was handled and a new column was added.\n */\n handleNextMillerViewColumn(node: GroupNode, index: number) {\n const nodeCopy = Object.create(node);\n const isSameAsRoot = this.rootNode === node;\n const isUnassignedDevicesNode = node.toString() === UnassignedDevicesNode.NAME;\n const isNewColumnNeeded =\n !isSameAsRoot && (node.isGroup() || isUnassignedDevicesNode || node.hasChildDevices());\n\n if (isNewColumnNeeded) {\n this.onRowSelected.emit({ nodeCopy, index });\n return false;\n }\n return true;\n }\n\n /**\n * @ignore\n */\n async ngOnInit() {\n this.assetSelectorService.setIsNodeSelectable(this.isNodeSelectable);\n if (this.index === 0) {\n this.config = { ...CONFIG_OPTIONS_DEFAULT, ...this.config };\n }\n const shouldResetNameFilter =\n this.rootNode && this.rootNode.mo && this.config.view === 'miller';\n if (shouldResetNameFilter) {\n await this.applyFilter('');\n }\n\n const isOnlyAssetNodeDefined = this.asset;\n if (isOnlyAssetNodeDefined) {\n this.rootNode = await this.createManagedObjectRootNode(this.asset);\n }\n\n const isAnyNodeDefined =\n !this.rootNode && (!this.asset || Object.keys(this.asset).length === 0);\n if (isAnyNodeDefined) {\n this.rootNode = this.createDefaultRootNode();\n }\n\n if (\n this.config.showUnassignedDevices &&\n (!this.asset || Object.keys(this.asset).length === 0) &&\n this.rootNode.root\n ) {\n this.rootNode.add(\n new UnassignedDevicesNode(this.groupNodeService, {\n showChildDevices: this.config.showChildDevices\n })\n );\n }\n this.root = this.rootNode.root;\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes.isNodeSelectable) {\n this.assetSelectorService.setIsNodeSelectable(this.isNodeSelectable);\n }\n if (\n changes.asset &&\n changes.asset.currentValue &&\n Object.keys(changes.asset.currentValue).length !== 0\n ) {\n this.rootNode = await this.createManagedObjectRootNode(changes.asset.currentValue);\n }\n }\n\n /**\n * @ignore\n */\n ngAfterViewInit(): void {\n this.updateHeaderHeight();\n }\n\n /**\n * Changes the current root to one level back.\n */\n back() {\n const index = this.index - 1;\n const nodeCopy = Object.create(this.rootNode.parents[0]);\n this.onRowSelected.emit({ nodeCopy, index });\n }\n\n /**\n * Clears the current filter.\n */\n clearFilters() {\n this.filterText = '';\n this.applyFilter('');\n }\n\n /**\n * Clears the currently selected device.\n */\n clearSelectedDevices() {\n this.selectedDevice = undefined;\n this.applyFilter('');\n this.onClearSelected.emit();\n }\n\n isGroupSelected() {\n if (this.selected.some(selectedNode => selectedNode.id === this.rootNode.mo?.id)) {\n return true;\n }\n return false;\n }\n\n /**\n * @param nameFilter The name filter to apply.\n * @param moId The managed object ID to filter by.\n * @param showUnassignedDevices If true, it will show unassigned devices.\n * @return The filter query to apply.\n * @description\n * This method builds a filter query based on the provided name filter and managed object ID.\n */\n groupNameFilter(nameFilter: string, moId, showUnassignedDevices?: boolean) {\n if (nameFilter) {\n const filterByName = showUnassignedDevices\n ? {\n __filter: {\n name: nameFilter\n },\n __orderby: [{ name: 1 }]\n }\n : {\n __filter: {\n name: nameFilter,\n __bygroupid: moId\n }\n };\n return this.assetSelectorService.queriesUtil.buildQuery(filterByName);\n }\n const defaultFilter = {\n __filter: {\n __bygroupid: moId\n },\n __orderby: [{ name: 1 }]\n };\n return this.assetSelectorService.queriesUtil.buildQuery(defaultFilter);\n }\n\n /**\n * Applies a filter.\n * @param filter The filter to apply.\n */\n async applyFilter(filter: string) {\n this.rootNode.filterQuery$.next(\n this.groupNameFilter(\n filter,\n this.rootNode.mo.id,\n this.isUnassignedDevicesNode() ? true : false\n )\n );\n this.rootNode.refresh();\n this.onLoad.emit({\n loading: true,\n filterText: this.filterText,\n index: this.index,\n selectedDevice: this.selectedDevice\n });\n this.cd.detectChanges();\n }\n\n /**\n * Check if the UnassignedDevice node is the rootNode.\n */\n isUnassignedDevicesNode() {\n return this.rootNode.toString() === UnassignedDevicesNode.NAME;\n }\n\n /**\n * Called when the user resets the search result.\n */\n onSearchResultReset(selectedItem) {\n if (selectedItem) {\n this.rootNode = this.createDefaultRootNode();\n if (this.config.showUnassignedDevices) {\n this.rootNode.add(\n new UnassignedDevicesNode(this.groupNodeService, {\n showChildDevices: this.config.showChildDevices\n })\n );\n }\n if (this.config.view === 'miller') {\n this.onRowSelected.emit({ root: true });\n }\n\n this.rootNode.click({ open: true });\n this.rootNode.nodesFetched\n .pipe(\n tap(() => this.cd.detectChanges()),\n takeUntil(this.unsubscribe$)\n )\n .subscribe();\n\n if (this.config.view === 'tree') {\n this.rootNode.open = true;\n }\n }\n }\n\n /**\n * Called if the user clicks on a search result.\n */\n async onSearchResultClick(mo: IManagedObject) {\n const canSelectNode = this.config.groupsSelectable || !this.groupNodeService.isGroup(mo);\n if (this.config.view === 'miller') {\n this.rootNode = await this.createManagedObjectRootNode(mo);\n this.rootNode.click({ open: true });\n const nodeCopy = Object.create(this.rootNode);\n this.onRowSelected.emit({\n nodeCopy,\n index: 0,\n selectedDevices: this.selectedDevice,\n root: true\n });\n }\n if (!this.config.multi) {\n this.deselectAll();\n }\n if (canSelectNode) {\n this.select(mo);\n }\n }\n\n onLoading(isLoading: boolean) {\n this.onLoad.emit({ loading: isLoading, filterText: this.filterText });\n this.cd.markForCheck();\n }\n\n onSelect(mo: IManagedObject) {\n this.select(mo);\n }\n\n onDeselect(config: { deselectMode: 'single' | 'all'; mo: IManagedObject }) {\n switch (config?.deselectMode) {\n case 'single':\n this.deselect(config.mo);\n this.cd.markForCheck();\n break;\n case 'all':\n this.deselectAll(config.mo);\n break;\n }\n }\n\n private updateHeaderHeight() {\n // An observer is used to detect if the header is visible or not.\n // If the header is not visible, the height is 0 and the observer is\n // used to detect when it becomes visible, to recalculate the height.\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.updateHeaderHeight();\n observer.unobserve(entry.target);\n }\n });\n });\n\n requestAnimationFrame(() => {\n if (this.header?.nativeElement) {\n const { clientHeight } = this.header.nativeElement;\n if (clientHeight === 0 && this.isElementOrParentHidden(this.header.nativeElement)) {\n observer.observe(this.header.nativeElement);\n return;\n }\n this.getHeaderHeight$.next(clientHeight);\n } else {\n this.getHeaderHeight$.next(0);\n }\n });\n }\n\n private isElementOrParentHidden(element: HTMLElement): boolean {\n while (element) {\n const style = window.getComputedStyle(element);\n if (style.display === 'none' || style.visibility === 'hidden') {\n return true;\n }\n element = element.parentElement;\n }\n return false;\n }\n}\n","<div\n class=\"bg-inherit p-t-8 p-b-8 separator-bottom p-r-16 p-l-16 sticky-top\"\n [ngStyle]=\"{ 'z-index': config.singleColumn && config.search ? '30' : '20' }\"\n #header\n [ngClass]=\"{\n 'p-absolute miller-column__selection d-flex flex-wrap a-i-center': config.view === 'miller',\n 'miller-column__search': config.search,\n 'miller-column__show-selected': config.showSelected\n }\"\n *ngIf=\"\n !selectedDevice &&\n index === 0 &&\n (config.search || config.multi || config.label?.length || config.showSelected)\n \"\n>\n <p\n class=\"text-medium flex-no-shrink a-s-center\"\n [ngClass]=\"{\n 'm-b-4': config.search && root && config.singleColumn,\n 'm-r-8': !config.singleColumn && !config.search,\n 'fit-w': config.singleColumn\n }\"\n *ngIf=\"config.label?.length\"\n >\n {{ config.label | translate }}\n </p>\n <c8y-search-input\n [ngStyle]=\"{ 'min-width': !config.singleColumn && config.label.length ? '50%' : 'inherit' }\"\n *ngIf=\"config.search && root\"\n (onClick)=\"onSearchResultClick($event)\"\n (reset)=\"onSearchResultReset($event)\"\n [mode]=\"'select'\"\n [container]=\"container\"\n class=\"input-group-sm\"\n [groupsOnly]=\"config.groupsOnly\"\n [ngClass]=\"{\n 'm-l-auto': !config.singleColumn && config.label.length,\n 'fit-w': config.singleColumn || !config.label.length\n }\"\n ></c8y-search-input>\n <div\n class=\"bg-inherit d-flex gap-4 fit-w\"\n *ngIf=\"config.showSelected\"\n [ngClass]=\"{ 'm-t-4': config.search }\"\n >\n <span class=\"text-label-small m-r-4 a-s-center l-h-1\">{{ 'Selected' | translate }}</span>\n <div class=\"flex-grow inner-scroll d-flex gap-4 a-i-center\">\n <ng-container *ngIf=\"!selected.length\">\n <em class=\"text-12 text-muted d-flex a-i-center fit-h-20\">{{ 'None' | translate }}</em>\n </ng-container>\n <span\n class=\"tag tag--info chip flex-no-shrink\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ selectedItem.name }}\"\n [disabled]=\"disabled\"\n type=\"button\"\n (click)=\"config.multi ? deselect(selectedItem) : deselectAll()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.name || (ASSET_CONST | translate: { assetId: selectedItem.id }) }}\n </span>\n </div>\n </div>\n</div>\n\n<div\n class=\"p-r-16\"\n *ngIf=\"selectedDevice\"\n>\n <div class=\"d-flex p-b-4\">\n <p\n class=\"text-medium p-t-8 m-r-8\"\n *ngIf=\"selectedDevice; else multiAssets\"\n >\n {{ 'Selected asset' | translate }}\n </p>\n <ng-template #multiAssets>\n <p class=\"text-medium m-r-8\">{{ 'Selected assets' | translate }}</p>\n </ng-template>\n <button\n class=\"btn btn-default btn-xs a-s-center m-t-4 m-l-auto\"\n title=\"{{ 'Change' | translate }}\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); clearSelectedDevices()\"\n >\n {{ 'Change' | translate }}\n </button>\n </div>\n <div class=\"d-flex\">\n <i\n class=\"text-success p-l-0 p-r-8\"\n [c8yIcon]=\"'check-circle'\"\n ></i>\n <i\n class=\"m-r-4 icon-20\"\n [c8yIcon]=\"selectedDevice | getGroupIcon | async\"\n ></i>\n <span>{{ selectedDevice.name }}</span>\n </div>\n</div>\n\n<!-- miller columns header -->\n<div\n class=\"miller-column__header sticky-top bg-inherit separator-bottom\"\n *ngIf=\"\n config.view === 'miller' &&\n ((config.showFilter && !rootNode.root) || config.columnHeaders) &&\n !selectedDevice\n \"\n [ngClass]=\"{ 'p-t-8': config.search }\"\n>\n <div class=\"d-flex\" *ngIf=\"config.singleColumn && index !== 0\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"home\"\n ></i>\n <p\n class=\"text-12 text-muted text-truncate text-rtl m-b-4\"\n title=\"{{ rootNode.breadcrumb || rootNode.label | translate }}\"\n >\n {{ rootNode.breadcrumb || rootNode.label | translate }}\n </p>\n </div>\n <div\n class=\"d-flex a-i-center\"\n *ngIf=\"config.columnHeaders || config.singleColumn\"\n >\n <button\n class=\"btn btn-default btn-xs m-r-8 p-t-0 p-b-0 p-l-4 p-r-4 l-h-1\"\n title=\"{{ 'Back' | translate }}\"\n type=\"button\"\n *ngIf=\"config.singleColumn && !rootNode.root && index !== 0\"\n (click)=\"$event.stopPropagation(); back()\"\n >\n <i c8yIcon=\"angle-left\"></i>\n </button>\n <label\n class=\"c8y-radio checkbox-inline m-r-8\"\n *ngIf=\"!rootNode.root && index === 0 && (config.groupsSelectable || !rootNode.isGroup())\"\n >\n <input\n title=\"{{ 'Select group' | translate }}\"\n type=\"radio\"\n (change)=\"select(rootNode.mo)\"\n [checked]=\"isGroupSelected()\"\n />\n <span></span>\n </label>\n\n <i\n class=\"icon-20 c8y-icon-duocolor m-r-4\"\n [c8yIcon]=\"this.rootNode.mo | getGroupIcon: true : this.rootNode.icon | async\"\n *ngIf=\"config.columnHeaders && (config.singleColumn || (!rootNode.root && index === 0))\"\n ></i>\n <p\n class=\"text-truncate\"\n title=\"{{ rootNode.label | translate }}\"\n *ngIf=\"config.columnHeaders\"\n [ngClass]=\"{\n 'text-label-small': !config.singleColumn,\n 'text-medium': config.singleColumn\n }\"\n >\n {{ rootNode.label | translate }}\n </p>\n </div>\n\n <div\n *ngIf=\"!rootNode.root && config.showFilter\"\n [ngClass]=\"{ 'p-t-4': config.columnHeaders }\"\n >\n <div class=\"input-group input-group-sm input-group-search\">\n <input\n class=\"form-control text-truncate\"\n placeholder=\"{{ 'Filter this column…' | translate }}\"\n [(ngModel)]=\"filterText\"\n (keyup.enter)=\"applyFilter('*' + filterText + '*')\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot p-l-4\"\n title=\"{{ 'Apply filter' | translate }}\"\n type=\"button\"\n (click)=\"applyFilter('*' + filterText + '*')\"\n >\n <i c8yIcon=\"filter\"></i>\n </button>\n <button\n class=\"btn btn-dot p-l-4\"\n title=\" {{ 'Clear filters' | translate }}\"\n type=\"button\"\n (click)=\"clearFilters()\"\n *ngIf=\"filterText.length\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </span>\n </div>\n </div>\n</div>\n\n<c8y-asset-selector-node\n class=\"d-block bg-inherit p-relative\"\n style=\"z-index: 9\"\n *ngIf=\"rootNode && !selectedDevice\"\n [node]=\"rootNode\"\n [rootNode]=\"rootNode\"\n [preselected]=\"selected\"\n [multi]=\"config.multi\"\n [view]=\"config.view\"\n [index]=\"index\"\n [active]=\"active\"\n [disabled]=\"disabled\"\n [handleNextMillerViewColumn]=\"handleNextMillerViewColumn.bind(this)\"\n (isLoadingState)=\"onLoading($event)\"\n (onSelect)=\"onSelect($event)\"\n (onDeselect)=\"onDeselect($event)\"\n [ngClass]=\"{ 'collapse show': !rootNode.root && !rootNode.hidden && config.view !== 'miller' }\"\n></c8y-asset-selector-node>\n","import { NgClass, NgFor, NgIf, NgStyle } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IIdentified, IManagedObject, InventoryService } from '@c8y/client';\nimport { C8yTranslatePipe, EmptyStateComponent, LoadingComponent } from '@c8y/ngx-components';\nimport { AssetSelectorBase } from './asset-selector-base';\nimport { AssetSelectorComponent } from './asset-selector.component';\nimport {\n AssetSelectionChangeEvent,\n AssetSelectorOptions,\n CONFIG_OPTIONS_DEFAULT\n} from './asset-selector.model';\nimport { AssetSelectorService } from './asset-selector.service';\nimport { GroupNode } from './group-node';\nimport { GroupNodeService } from './group-node.service';\n\n@Component({\n selector: 'c8y-asset-selector-miller',\n templateUrl: './miller-view.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MillerViewComponent),\n multi: true\n }\n ],\n imports: [\n NgStyle,\n NgClass,\n NgFor,\n AssetSelectorComponent,\n NgIf,\n LoadingComponent,\n EmptyStateComponent,\n C8yTranslatePipe\n ]\n})\nexport class MillerViewComponent extends AssetSelectorBase implements OnInit {\n /**\n * Config object containing all options for the asset selector.\n */\n @Input() config: AssetSelectorOptions = {};\n /**\n * The asset to use as root.\n */\n @Input() asset: IIdentified = undefined;\n /**\n * The selected devices.\n */\n @Input() selectedDevice: IManagedObject = undefined;\n /**\n * The node to use as root. You can either set this, or the asset to start from.\n */\n @Input() rootNode: GroupNode;\n /**\n * Emits if the selection changes\n */\n @Output() onSelected = new EventEmitter<AssetSelectionChangeEvent>();\n /**\n * Emits if the currently selected asset is cleared.\n */\n @Output() onClearSelected = new EventEmitter<void>();\n /**\n * @ignore\n */\n @ViewChild('millerViewWrapper') millerViewWrapper: ElementRef;\n /**\n * The column array will contain all currently selected nodes\n * which will form the miller view columns (only one per level).\n */\n columns = [];\n /**\n * The current filter applied. Used for the empty state text in the view.\n */\n filterText = '';\n /**\n * Index of the column used to check where to show the loading state.\n */\n columnIndex: number;\n @Input() container: '' | 'body' = 'body';\n\n configOptionsDefault: AssetSelectorOptions = {\n ...CONFIG_OPTIONS_DEFAULT,\n view: 'miller'\n };\n\n /**\n * Cached padding top value to avoid recalculating on every change detection cycle.\n */\n private _cachedPaddingTop: string | null = null;\n\n constructor(\n protected groupNodeService: GroupNodeService,\n protected inventory: InventoryService,\n protected assetSelectorService: AssetSelectorService,\n protected cd: ChangeDetectorRef\n ) {\n super(groupNodeService, inventory, assetSelectorService);\n }\n\n /**\n * @ignore\n */\n async ngOnInit() {\n this.config = { ...this.configOptionsDefault, ...this.config };\n this._calculatePaddingTop();\n\n const isAnyNodeDefined =\n !this.rootNode && (!this.asset || Object.keys(this.asset).length === 0);\n if (isAnyNodeDefined) {\n this.rootNode = this.createDefaultRootNode();\n }\n\n const isOnlyAssetNodeDefined = this.asset && Object.keys(this.asset).length !== 0;\n if (isOnlyAssetNodeDefined) {\n this.rootNode = await this.createManagedObjectRootNode(this.asset);\n this.rootNode.click();\n if (!this.config.preventInitialSelect) {\n const selected = this.selectedDevice || this.asset;\n this.selected = [selected];\n this.emitChange(this.selected, selected as IManagedObject, true);\n }\n }\n\n this.columns.push(this.rootNode);\n }\n\n /**\n * @ignore\n */\n async ngOnChanges(changes: SimpleChanges) {\n if (changes.config) {\n this._calculatePaddingTop();\n }\n\n if (changes.asset && changes.asset.currentValue && !this.asset) {\n this.columns = [];\n this.columns.push(await this.createManagedObjectRootNode(changes.asset.currentValue));\n }\n\n if (changes.selectedDevice && changes.selectedDevice.currentValue) {\n this.selected = [this.selectedDevice];\n this.emitChange(this.selected, this.selectedDevice as IManagedObject, true);\n }\n }\n\n /**\n * Returns the cached padding top value for the miller view header.\n * The value is calculated once during initialization and when config changes.\n *\n * @returns A unit value (as string) that is multiplied by --c8y-unit-base CSS custom property\n */\n getPaddingTop(): string {\n return this._cachedPaddingTop || '0';\n }\n\n /**\n * Create a new column with the selected node as root.\n */\n addNewColumn(node): void {\n const level = node.index;\n this.selectedDevice = node.selectedDevices || undefined;\n if (node.root) {\n window.requestAnimationFrame(() => (this.millerViewWrapper.nativeElement.scrollLeft = 0));\n this.columns.length = 1;\n }\n\n const isLevelLowerThanColumnNumber = level < this.columns.length - 1;\n let goBack = false;\n if (isLevelLowerThanColumnNumber) {\n this.columns.length = level + 1;\n goBack = true;\n }\n if (!node.root && !(this.config.singleColumn && goBack)) {\n this.columns.push(node.nodeCopy);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const col = this;\n window.requestAnimationFrame(() => (col.millerViewWrapper.nativeElement.scrollLeft = 50000));\n /* triggered twice with a small delay as a workaround for dealing with Safari's bug:\n \"Safari doesn’t update the scrollTop / scrollLeft properties of an element its any of its\n ancestors has overflow set to hidden.\"\n This was reported on customer portal with the ticket SI-488573\n */\n setTimeout(function () {\n window.requestAnimationFrame(\n () => (col.millerViewWrapper.nativeElement.scrollLeft = 55000)\n );\n }, 700);\n }\n }\n\n /**\n * Change the loading state of the asset selector.\n */\n onLoad(event) {\n this.isLoading = event.loading;\n this.filterText = event.filterText;\n this.columnIndex = event.index;\n this.selectedDevice = event.selectedDevice;\n this.cd.detectChanges();\n }\n\n /**\n * Add the selected node to the selected array.\n */\n onSelectionChange(event: AssetSelectionChangeEvent): void {\n if (!this.config.multi) {\n this.deselectAll(event.change.item);\n return;\n }\n if (event.change.isSelected) {\n this.select(event.change.item);\n return;\n }\n this.deselect(event.change.item);\n }\n\n /**\n * Calculates and caches the padding top value based on configuration options.\n *\n * The method determines the appropriate header height by considering:\n * - Whether selected items are shown (showSelected)\n * - Whether search functionality is enabled (search)\n * - Whether single column mode is active (singleColumn)\n * - Whether a label is present (label length > 0)\n */\n private _calculatePaddingTop(): void {\n const PADDING = {\n NONE: '0',\n BASE: '5',\n WITH_SEARCH: '6',\n WITH_LABEL: '7',\n WITH_SEARCH_AND_SELECTED: '9',\n WITH_SEARCH_LABEL_SELECTED_SINGLE: '11'\n };\n\n const { showSelected = false, search = false, singleColumn = false, label } = this.config;\n const hasLabel = label?.length > 0;\n\n const state = { showSelected, search, singleColumn, hasLabel };\n\n if (state.showSelected && state.search && state.singleColumn && state.hasLabel) {\n this._cachedPaddingTop = PADDING.WITH_SEARCH_LABEL_SELECTED_SINGLE;\n } else if (state.showSelected && state.search) {\n this._cachedPaddingTop = PADDING.WITH_SEARCH_AND_SELECTED;\n } else if (state.showSelected && state.hasLabel) {\n this._cachedPaddingTop = PADDING.WITH_LABEL;\n } else if (state.showSelected) {\n this._cachedPaddingTop = PADDING.BASE;\n } else if (state.search && state.singleColumn && state.hasLabel) {\n this._cachedPaddingTop = PADDING.WITH_SEARCH_AND_SELECTED;\n } else if (state.search) {\n this._cachedPaddingTop = PADDING.WITH_SEARCH;\n } else if (state.hasLabel) {\n this._cachedPaddingTop = PADDING.BASE;\n } else {\n this._cachedPaddingTop = PADDING.NONE;\n }\n }\n}\n","<div\n class=\"miller-view-wrapper {{ config.label }}\"\n [ngStyle]=\"{\n 'padding-top': 'calc('+ getPaddingTop() +' * var(--c8y-unit-base))',\n }\"\n #millerViewWrapper\n [ngClass]=\"{\n 'single-column': config.singleColumn,\n }\"\n>\n <div\n class=\"miller-column bg-inherit\"\n *ngFor=\"let column of columns; index as i\"\n >\n <c8y-asset-selector\n class=\"bg-inherit\"\n #assetSelector\n [config]=\"config\"\n [index]=\"i\"\n [active]=\"columns[i + 1]\"\n [rootNode]=\"column\"\n [selected]=\"selected || []\"\n [selectedDevice]=\"selectedDevice\"\n (onSelected)=\"onSelectionChange($event)\"\n (onClearSelected)=\"onClearSelected.emit()\"\n (onRowSelected)=\"addNewColumn($event)\"\n (onLoad)=\"onLoad($event)\"\n [container]=\"container\"\n ></c8y-asset-selector>\n <div\n class=\"p-relative p-b-64\"\n *ngIf=\"isLoading && columnIndex === i && !selectedDevice\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <div\n class=\"p-l-8 p-r-8\"\n *ngIf=\"!column.children.length && !isLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'folder-open'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'The selected asset has no children.' | translate\"\n *ngIf=\"!filterText; else noSearchResults\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <ng-template #noSearchResults>\n <c8y-ui-empty-state\n [icon]=\"'folder-open'\"\n [title]=\"'No results to display for the current filter.' | translate\"\n [subtitle]=\"'There are no assets matching the filter.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </ng-template>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule, CommonModule, CoreSearchModule } from '@c8y/ngx-components';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { GroupNodeService } from './group-node.service';\n\nimport { AssetSelectorNodeComponent } from './asset-selector-node.component';\nimport { AssetSelectorComponent } from './asset-selector.component';\nimport { FormsModule } from '@angular/forms';\nimport { MillerViewComponent } from './miller-view.component';\nimport { AssetSelectorService } from './asset-selector.service';\n\n@NgModule({\n imports: [\n CoreModule,\n CommonModule,\n CollapseModule,\n BsDropdownModule,\n CoreSearchModule,\n FormsModule,\n AssetSelectorNodeComponent,\n AssetSelectorComponent,\n MillerViewComponent\n ],\n exports: [AssetSelectorNodeComponent, AssetSelectorComponent, MillerViewComponent],\n providers: [GroupNodeService, AssetSelectorService]\n})\nexport class AssetSelectorModule {}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DeviceStatusModule, hookNavigator, ModalModule, ModalService } from '@c8y/ngx-components';\nimport { AssetNavigatorConfig, ASSET_NAVIGATOR_CONFIG } from './asset-node-config.model';\nimport { AssetNodeFactory } from './asset-node.factory';\nimport { AssetNodeService } from './asset-node.service';\nimport { AssetSelectorModule } from './asset-selector/asset-selector.module';\n\n@NgModule({\n declarations: [],\n imports: [ModalModule, AssetSelectorModule, DeviceStatusModule],\n providers: [ModalService, AssetNodeService, hookNavigator(AssetNodeFactory)]\n})\nexport class AssetsNavigatorModule {\n static config(config: AssetNavigatorConfig = {}): ModuleWithProviders<AssetsNavigatorModule> {\n return {\n ngModule: AssetsNavigatorModule,\n providers: [\n {\n provide: ASSET_NAVIGATOR_CONFIG,\n useValue: config\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["getProp","i1","i2.AssetSelectorService","i1.GroupNodeService","i3.AssetSelectorService"],"mappings":"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"}