@memberjunction/ng-conversations 6.2.0-edge.0 → 6.2.0-edge.2

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 (351) hide show
  1. package/README.md +43 -2
  2. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +19 -3
  3. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -1
  4. package/dist/lib/components/active-tasks/active-tasks-panel.component.js +39 -7
  5. package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
  6. package/dist/lib/components/agent/active-agent-indicator.component.d.ts +74 -6
  7. package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -1
  8. package/dist/lib/components/agent/active-agent-indicator.component.js +111 -21
  9. package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -1
  10. package/dist/lib/components/agent/agent-process-panel.component.d.ts +31 -5
  11. package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -1
  12. package/dist/lib/components/agent/agent-process-panel.component.js +71 -15
  13. package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -1
  14. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts +65 -9
  15. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -1
  16. package/dist/lib/components/artifact/artifact-share-modal.component.js +169 -57
  17. package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
  18. package/dist/lib/components/attachment/image-viewer.component.d.ts +77 -11
  19. package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -1
  20. package/dist/lib/components/attachment/image-viewer.component.js +181 -47
  21. package/dist/lib/components/attachment/image-viewer.component.js.map +1 -1
  22. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +129 -19
  23. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
  24. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +350 -116
  25. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
  26. package/dist/lib/components/collection/artifact-create-modal.component.d.ts +60 -8
  27. package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -1
  28. package/dist/lib/components/collection/artifact-create-modal.component.js +130 -46
  29. package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -1
  30. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +63 -3
  31. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
  32. package/dist/lib/components/collection/collection-artifact-card.component.js +113 -19
  33. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
  34. package/dist/lib/components/collection/collection-form-modal.component.d.ts +54 -8
  35. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
  36. package/dist/lib/components/collection/collection-form-modal.component.js +130 -46
  37. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
  38. package/dist/lib/components/collection/collection-share-modal.component.d.ts +70 -10
  39. package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -1
  40. package/dist/lib/components/collection/collection-share-modal.component.js +175 -53
  41. package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
  42. package/dist/lib/components/collection/collection-tree.component.d.ts +89 -9
  43. package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
  44. package/dist/lib/components/collection/collection-tree.component.js +220 -70
  45. package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
  46. package/dist/lib/components/collection/collection-view.component.d.ts +89 -11
  47. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
  48. package/dist/lib/components/collection/collection-view.component.js +154 -40
  49. package/dist/lib/components/collection/collection-view.component.js.map +1 -1
  50. package/dist/lib/components/collection/collections-full-view.component.d.ts +390 -38
  51. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
  52. package/dist/lib/components/collection/collections-full-view.component.js +951 -367
  53. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
  54. package/dist/lib/components/composer/ai-composer.component.d.ts +213 -18
  55. package/dist/lib/components/composer/ai-composer.component.d.ts.map +1 -1
  56. package/dist/lib/components/composer/ai-composer.component.js +388 -44
  57. package/dist/lib/components/composer/ai-composer.component.js.map +1 -1
  58. package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts +12 -1
  59. package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts.map +1 -1
  60. package/dist/lib/components/conversation/conversation-agent-picker.component.js +26 -4
  61. package/dist/lib/components/conversation/conversation-agent-picker.component.js.map +1 -1
  62. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +1191 -124
  63. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  64. package/dist/lib/components/conversation/conversation-chat-area.component.js +2816 -785
  65. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  66. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +139 -19
  67. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
  68. package/dist/lib/components/conversation/conversation-empty-state.component.js +296 -59
  69. package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
  70. package/dist/lib/components/conversation/conversation-list.component.d.ts +579 -78
  71. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  72. package/dist/lib/components/conversation/conversation-list.component.js +2322 -823
  73. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  74. package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts +42 -4
  75. package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts.map +1 -1
  76. package/dist/lib/components/conversation/pinned-messages-panel.component.js +93 -21
  77. package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
  78. package/dist/lib/components/dialogs/input-dialog.component.d.ts +57 -11
  79. package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -1
  80. package/dist/lib/components/dialogs/input-dialog.component.js +128 -16
  81. package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -1
  82. package/dist/lib/components/dialogs/rating-dialog.component.d.ts +68 -10
  83. package/dist/lib/components/dialogs/rating-dialog.component.d.ts.map +1 -1
  84. package/dist/lib/components/dialogs/rating-dialog.component.js +151 -27
  85. package/dist/lib/components/dialogs/rating-dialog.component.js.map +1 -1
  86. package/dist/lib/components/export/export-modal.component.d.ts +84 -10
  87. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
  88. package/dist/lib/components/export/export-modal.component.js +173 -49
  89. package/dist/lib/components/export/export-modal.component.js.map +1 -1
  90. package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts +29 -3
  91. package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts.map +1 -1
  92. package/dist/lib/components/global-tasks/global-tasks-panel.component.js +58 -12
  93. package/dist/lib/components/global-tasks/global-tasks-panel.component.js.map +1 -1
  94. package/dist/lib/components/library/library-full-view.component.d.ts +57 -8
  95. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
  96. package/dist/lib/components/library/library-full-view.component.js +119 -35
  97. package/dist/lib/components/library/library-full-view.component.js.map +1 -1
  98. package/dist/lib/components/members/members-modal.component.d.ts +76 -10
  99. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
  100. package/dist/lib/components/members/members-modal.component.js +164 -50
  101. package/dist/lib/components/members/members-modal.component.js.map +1 -1
  102. package/dist/lib/components/message/actionable-commands.component.d.ts +49 -5
  103. package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -1
  104. package/dist/lib/components/message/actionable-commands.component.js +140 -26
  105. package/dist/lib/components/message/actionable-commands.component.js.map +1 -1
  106. package/dist/lib/components/message/conversation-message-rating.component.d.ts +46 -10
  107. package/dist/lib/components/message/conversation-message-rating.component.d.ts.map +1 -1
  108. package/dist/lib/components/message/conversation-message-rating.component.js +120 -36
  109. package/dist/lib/components/message/conversation-message-rating.component.js.map +1 -1
  110. package/dist/lib/components/message/message-input.component.d.ts +613 -74
  111. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  112. package/dist/lib/components/message/message-input.component.js +1390 -422
  113. package/dist/lib/components/message/message-input.component.js.map +1 -1
  114. package/dist/lib/components/message/message-item.component.d.ts +490 -29
  115. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  116. package/dist/lib/components/message/message-item.component.js +1088 -244
  117. package/dist/lib/components/message/message-item.component.js.map +1 -1
  118. package/dist/lib/components/message/message-list.component.d.ts +297 -29
  119. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  120. package/dist/lib/components/message/message-list.component.js +598 -123
  121. package/dist/lib/components/message/message-list.component.js.map +1 -1
  122. package/dist/lib/components/navigation/conversation-navigation.component.d.ts +64 -5
  123. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
  124. package/dist/lib/components/navigation/conversation-navigation.component.js +101 -11
  125. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
  126. package/dist/lib/components/notification/activity-indicator.component.d.ts +6 -2
  127. package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -1
  128. package/dist/lib/components/notification/activity-indicator.component.js +13 -3
  129. package/dist/lib/components/notification/activity-indicator.component.js.map +1 -1
  130. package/dist/lib/components/notification/notification-badge.component.d.ts +15 -3
  131. package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -1
  132. package/dist/lib/components/notification/notification-badge.component.js +36 -8
  133. package/dist/lib/components/notification/notification-badge.component.js.map +1 -1
  134. package/dist/lib/components/overlay/chat-overlay.component.d.ts +1 -1
  135. package/dist/lib/components/overlay/chat-overlay.component.js +4 -4
  136. package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
  137. package/dist/lib/components/project/project-form-modal.component.d.ts +93 -11
  138. package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -1
  139. package/dist/lib/components/project/project-form-modal.component.js +348 -87
  140. package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
  141. package/dist/lib/components/project/project-selector.component.d.ts +78 -8
  142. package/dist/lib/components/project/project-selector.component.d.ts.map +1 -1
  143. package/dist/lib/components/project/project-selector.component.js +177 -46
  144. package/dist/lib/components/project/project-selector.component.js.map +1 -1
  145. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +1 -1
  146. package/dist/lib/components/realtime/realtime-activity-rail.component.js +2 -2
  147. package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
  148. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +1 -1
  149. package/dist/lib/components/realtime/realtime-delegation-card.component.js +2 -2
  150. package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
  151. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +2 -2
  152. package/dist/lib/components/realtime/realtime-session-overlay.component.js +18 -18
  153. package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
  154. package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts +47 -23
  155. package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts.map +1 -1
  156. package/dist/lib/components/realtime/realtime-session-timeline-card.component.js +136 -92
  157. package/dist/lib/components/realtime/realtime-session-timeline-card.component.js.map +1 -1
  158. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +2 -2
  159. package/dist/lib/components/realtime/realtime-surface-tabs.component.js +4 -4
  160. package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
  161. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +1 -1
  162. package/dist/lib/components/realtime/realtime-surface-tabs.model.js +3 -3
  163. package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
  164. package/dist/lib/components/realtime/realtime-ui-config.d.ts +13 -11
  165. package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -1
  166. package/dist/lib/components/realtime/realtime-ui-config.js +29 -25
  167. package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -1
  168. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +3 -1
  169. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
  170. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +6 -2
  171. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -1
  172. package/dist/lib/components/search/search-panel.component.d.ts +133 -22
  173. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
  174. package/dist/lib/components/search/search-panel.component.js +312 -83
  175. package/dist/lib/components/search/search-panel.component.js.map +1 -1
  176. package/dist/lib/components/share/share-modal.component.d.ts +69 -9
  177. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
  178. package/dist/lib/components/share/share-modal.component.js +139 -31
  179. package/dist/lib/components/share/share-modal.component.js.map +1 -1
  180. package/dist/lib/components/shared/user-picker.component.d.ts +48 -8
  181. package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
  182. package/dist/lib/components/shared/user-picker.component.js +110 -30
  183. package/dist/lib/components/shared/user-picker.component.js.map +1 -1
  184. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +114 -11
  185. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
  186. package/dist/lib/components/sidebar/conversation-sidebar.component.js +199 -21
  187. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
  188. package/dist/lib/components/sidebar/routines-section.component.d.ts +20 -1
  189. package/dist/lib/components/sidebar/routines-section.component.d.ts.map +1 -1
  190. package/dist/lib/components/sidebar/routines-section.component.js +25 -5
  191. package/dist/lib/components/sidebar/routines-section.component.js.map +1 -1
  192. package/dist/lib/components/slots/slot-interfaces.d.ts +19 -0
  193. package/dist/lib/components/slots/slot-interfaces.d.ts.map +1 -1
  194. package/dist/lib/components/slots/slot-interfaces.js.map +1 -1
  195. package/dist/lib/components/task/tasks-full-view.component.d.ts +95 -13
  196. package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -1
  197. package/dist/lib/components/task/tasks-full-view.component.js +223 -75
  198. package/dist/lib/components/task/tasks-full-view.component.js.map +1 -1
  199. package/dist/lib/components/tasks/task-widget.component.d.ts +46 -6
  200. package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -1
  201. package/dist/lib/components/tasks/task-widget.component.js +100 -16
  202. package/dist/lib/components/tasks/task-widget.component.js.map +1 -1
  203. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +64 -7
  204. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
  205. package/dist/lib/components/tasks/tasks-dropdown.component.js +127 -27
  206. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
  207. package/dist/lib/components/thread/thread-panel.component.d.ts +66 -8
  208. package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
  209. package/dist/lib/components/thread/thread-panel.component.js +146 -36
  210. package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
  211. package/dist/lib/components/toast/toast.component.d.ts +11 -1
  212. package/dist/lib/components/toast/toast.component.d.ts.map +1 -1
  213. package/dist/lib/components/toast/toast.component.js +25 -5
  214. package/dist/lib/components/toast/toast.component.js.map +1 -1
  215. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +385 -42
  216. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  217. package/dist/lib/components/workspace/conversation-workspace.component.js +891 -292
  218. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  219. package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts +8 -0
  220. package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts.map +1 -1
  221. package/dist/lib/composer-plugins/base-conversation-mention.provider.js +8 -1
  222. package/dist/lib/composer-plugins/base-conversation-mention.provider.js.map +1 -1
  223. package/dist/lib/directives/chat-slot.directive.d.ts +5 -1
  224. package/dist/lib/directives/chat-slot.directive.d.ts.map +1 -1
  225. package/dist/lib/directives/chat-slot.directive.js.map +1 -1
  226. package/dist/lib/directives/search-shortcut.directive.d.ts +9 -1
  227. package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -1
  228. package/dist/lib/directives/search-shortcut.directive.js +14 -4
  229. package/dist/lib/directives/search-shortcut.directive.js.map +1 -1
  230. package/dist/lib/events/chat-events.d.ts +34 -7
  231. package/dist/lib/events/chat-events.d.ts.map +1 -1
  232. package/dist/lib/events/chat-events.js +37 -7
  233. package/dist/lib/events/chat-events.js.map +1 -1
  234. package/dist/lib/models/agent-turn.model.d.ts +113 -0
  235. package/dist/lib/models/agent-turn.model.d.ts.map +1 -0
  236. package/dist/lib/models/agent-turn.model.js +12 -0
  237. package/dist/lib/models/agent-turn.model.js.map +1 -0
  238. package/dist/lib/models/collection-view.model.js.map +1 -1
  239. package/dist/lib/models/conversation-state.model.d.ts +8 -0
  240. package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
  241. package/dist/lib/models/conversation-state.model.js.map +1 -1
  242. package/dist/lib/models/lazy-artifact-info.d.ts +44 -12
  243. package/dist/lib/models/lazy-artifact-info.d.ts.map +1 -1
  244. package/dist/lib/models/lazy-artifact-info.js +98 -34
  245. package/dist/lib/models/lazy-artifact-info.js.map +1 -1
  246. package/dist/lib/services/active-tasks.service.d.ts +30 -4
  247. package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
  248. package/dist/lib/services/active-tasks.service.js +71 -19
  249. package/dist/lib/services/active-tasks.service.js.map +1 -1
  250. package/dist/lib/services/agent-state.service.d.ts +17 -1
  251. package/dist/lib/services/agent-state.service.d.ts.map +1 -1
  252. package/dist/lib/services/agent-state.service.js +48 -16
  253. package/dist/lib/services/agent-state.service.js.map +1 -1
  254. package/dist/lib/services/artifact-permission.service.d.ts +39 -0
  255. package/dist/lib/services/artifact-permission.service.d.ts.map +1 -1
  256. package/dist/lib/services/artifact-permission.service.js +152 -17
  257. package/dist/lib/services/artifact-permission.service.js.map +1 -1
  258. package/dist/lib/services/artifact-state.service.d.ts +58 -5
  259. package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
  260. package/dist/lib/services/artifact-state.service.js +135 -35
  261. package/dist/lib/services/artifact-state.service.js.map +1 -1
  262. package/dist/lib/services/collection-permission.service.d.ts +28 -0
  263. package/dist/lib/services/collection-permission.service.d.ts.map +1 -1
  264. package/dist/lib/services/collection-permission.service.js +88 -32
  265. package/dist/lib/services/collection-permission.service.js.map +1 -1
  266. package/dist/lib/services/collection-state.service.d.ts +11 -1
  267. package/dist/lib/services/collection-state.service.d.ts.map +1 -1
  268. package/dist/lib/services/collection-state.service.js +25 -5
  269. package/dist/lib/services/collection-state.service.js.map +1 -1
  270. package/dist/lib/services/conversation-agent.service.d.ts +47 -4
  271. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  272. package/dist/lib/services/conversation-agent.service.js +85 -20
  273. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  274. package/dist/lib/services/conversation-attachment.service.d.ts +17 -0
  275. package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -1
  276. package/dist/lib/services/conversation-attachment.service.js +38 -10
  277. package/dist/lib/services/conversation-attachment.service.js.map +1 -1
  278. package/dist/lib/services/conversation-liveness-dom.service.d.ts +42 -0
  279. package/dist/lib/services/conversation-liveness-dom.service.d.ts.map +1 -0
  280. package/dist/lib/services/conversation-liveness-dom.service.js +74 -0
  281. package/dist/lib/services/conversation-liveness-dom.service.js.map +1 -0
  282. package/dist/lib/services/conversation-streaming.service.d.ts +22 -0
  283. package/dist/lib/services/conversation-streaming.service.d.ts.map +1 -1
  284. package/dist/lib/services/conversation-streaming.service.js +50 -10
  285. package/dist/lib/services/conversation-streaming.service.js.map +1 -1
  286. package/dist/lib/services/data-cache.service.d.ts +31 -0
  287. package/dist/lib/services/data-cache.service.d.ts.map +1 -1
  288. package/dist/lib/services/data-cache.service.js +71 -15
  289. package/dist/lib/services/data-cache.service.js.map +1 -1
  290. package/dist/lib/services/dialog.service.d.ts +13 -0
  291. package/dist/lib/services/dialog.service.d.ts.map +1 -1
  292. package/dist/lib/services/dialog.service.js +25 -5
  293. package/dist/lib/services/dialog.service.js.map +1 -1
  294. package/dist/lib/services/export.service.d.ts +2 -0
  295. package/dist/lib/services/export.service.d.ts.map +1 -1
  296. package/dist/lib/services/export.service.js +5 -1
  297. package/dist/lib/services/export.service.js.map +1 -1
  298. package/dist/lib/services/mention-parser.service.d.ts +10 -0
  299. package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
  300. package/dist/lib/services/mention-parser.service.js +25 -5
  301. package/dist/lib/services/mention-parser.service.js.map +1 -1
  302. package/dist/lib/services/notification.service.d.ts +54 -6
  303. package/dist/lib/services/notification.service.d.ts.map +1 -1
  304. package/dist/lib/services/notification.service.js +123 -27
  305. package/dist/lib/services/notification.service.js.map +1 -1
  306. package/dist/lib/services/realtime-audio-recorder.d.ts +4 -4
  307. package/dist/lib/services/realtime-audio-recorder.js +12 -12
  308. package/dist/lib/services/realtime-audio-recorder.js.map +1 -1
  309. package/dist/lib/services/realtime-pcm-wav.d.ts +4 -0
  310. package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -1
  311. package/dist/lib/services/realtime-pcm-wav.js +10 -2
  312. package/dist/lib/services/realtime-pcm-wav.js.map +1 -1
  313. package/dist/lib/services/search.service.d.ts +42 -9
  314. package/dist/lib/services/search.service.d.ts.map +1 -1
  315. package/dist/lib/services/search.service.js +103 -23
  316. package/dist/lib/services/search.service.js.map +1 -1
  317. package/dist/lib/services/toast.service.d.ts +19 -1
  318. package/dist/lib/services/toast.service.d.ts.map +1 -1
  319. package/dist/lib/services/toast.service.js +45 -9
  320. package/dist/lib/services/toast.service.js.map +1 -1
  321. package/dist/lib/services/ui-command-handler.service.d.ts +56 -5
  322. package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
  323. package/dist/lib/services/ui-command-handler.service.js +113 -16
  324. package/dist/lib/services/ui-command-handler.service.js.map +1 -1
  325. package/dist/lib/utils/agent-artifact-summary.d.ts +2 -2
  326. package/dist/lib/utils/agent-artifact-summary.js +3 -3
  327. package/dist/lib/utils/agent-artifact-summary.js.map +1 -1
  328. package/dist/lib/utils/agent-turn-routing.d.ts +70 -0
  329. package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -0
  330. package/dist/lib/utils/agent-turn-routing.js +84 -0
  331. package/dist/lib/utils/agent-turn-routing.js.map +1 -0
  332. package/dist/lib/utils/artifact-panel-action.d.ts +15 -4
  333. package/dist/lib/utils/artifact-panel-action.d.ts.map +1 -1
  334. package/dist/lib/utils/artifact-panel-action.js +10 -2
  335. package/dist/lib/utils/artifact-panel-action.js.map +1 -1
  336. package/dist/lib/utils/decision-routing.d.ts +68 -0
  337. package/dist/lib/utils/decision-routing.d.ts.map +1 -0
  338. package/dist/lib/utils/decision-routing.js +101 -0
  339. package/dist/lib/utils/decision-routing.js.map +1 -0
  340. package/dist/lib/utils/distinct-artifacts.d.ts +2 -0
  341. package/dist/lib/utils/distinct-artifacts.d.ts.map +1 -1
  342. package/dist/lib/utils/distinct-artifacts.js +5 -1
  343. package/dist/lib/utils/distinct-artifacts.js.map +1 -1
  344. package/dist/lib/utils/plan-mode-preference.d.ts +2 -2
  345. package/dist/lib/utils/plan-mode-preference.js +6 -6
  346. package/dist/lib/utils/plan-mode-preference.js.map +1 -1
  347. package/dist/public-api.d.ts +5 -0
  348. package/dist/public-api.d.ts.map +1 -1
  349. package/dist/public-api.js +8 -0
  350. package/dist/public-api.js.map +1 -1
  351. package/package.json +32 -32
@@ -1 +1 @@
1
- {"version":3,"file":"collection-tree.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-tree.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { MJCollectionEntity } from '@memberjunction/core-entities';\nimport { UserInfo, RunView, Metadata, LogError } from '@memberjunction/core';\nimport { CollectionPermission, CollectionPermissionService } from '../../services/collection-permission.service';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { MJConfirmService } from '@memberjunction/ng-ui-components';\n\ninterface TreeNode {\n collection: MJCollectionEntity;\n children: TreeNode[];\n expanded: boolean;\n level: number;\n}\n\ninterface DragData {\n collectionId: string;\n parentId: string | null;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-collection-tree',\n template: `\n <div class=\"collection-tree\">\n <div class=\"tree-header\">\n <h3>Collections</h3>\n @if (canCreateAtRoot()) {\n <button class=\"btn-new\" (click)=\"onCreateCollection(null)\" title=\"New Collection\">\n <i class=\"fas fa-plus\"></i>\n </button>\n }\n </div>\n\n <div\n class=\"tree-content\"\n [class.drag-over-root]=\"dragOverNodeId === 'root'\"\n (dragover)=\"onDragOverRoot($event)\"\n (drop)=\"onDropRoot($event)\">\n @for (node of treeNodes; track node.collection.ID) {\n <div class=\"tree-node-wrapper\">\n <div\n class=\"tree-node\"\n [class.selected]=\"IsCollectionSelected(node)\"\n [class.drag-over]=\"dragOverNodeId === node.collection.ID\"\n [class.dragging]=\"IsCollectionDragging(node)\"\n [style.padding-left.px]=\"node.level * 20\"\n [draggable]=\"true\"\n (click)=\"onSelectCollection(node.collection)\"\n (dragstart)=\"onDragStart($event, node)\"\n (dragend)=\"onDragEnd($event)\"\n (dragover)=\"onDragOver($event, node)\"\n (dragleave)=\"onDragLeave($event, node)\"\n (drop)=\"onDrop($event, node)\">\n @if (node.children.length > 0) {\n <i\n class=\"fas toggle-icon\"\n [ngClass]=\"node.expanded ? 'fa-chevron-down' : 'fa-chevron-right'\"\n (click)=\"toggleNode(node, $event)\">\n </i>\n }\n <i class=\"fas fa-folder collection-icon\" [style.color]=\"node.collection.Color || '#0076B6'\"></i>\n <span class=\"collection-name\">{{ node.collection.Name }}</span>\n <div class=\"node-actions\" (click)=\"$event.stopPropagation()\">\n @if (canEdit(node.collection)) {\n <button class=\"node-action-btn\" (click)=\"onCreateCollection(node.collection.ID)\" title=\"Add sub-collection\">\n <i class=\"fas fa-plus\"></i>\n </button>\n }\n @if (canDelete(node.collection)) {\n <button class=\"node-action-btn\" (click)=\"onDeleteCollection(node.collection)\" title=\"Delete\">\n <i class=\"fas fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n\n @if (node.expanded) {\n @for (child of node.children; track child.collection.ID) {\n <ng-container *ngTemplateOutlet=\"recursiveTree; context: { node: child }\"></ng-container>\n }\n }\n </div>\n }\n </div>\n </div>\n\n <ng-template #recursiveTree let-node=\"node\">\n <div class=\"tree-node-wrapper\">\n <div\n class=\"tree-node\"\n [class.selected]=\"IsCollectionSelected(node)\"\n [class.drag-over]=\"dragOverNodeId === node.collection.ID\"\n [class.dragging]=\"IsCollectionDragging(node)\"\n [style.padding-left.px]=\"node.level * 20\"\n [draggable]=\"true\"\n (click)=\"onSelectCollection(node.collection)\"\n (dragstart)=\"onDragStart($event, node)\"\n (dragend)=\"onDragEnd($event)\"\n (dragover)=\"onDragOver($event, node)\"\n (dragleave)=\"onDragLeave($event, node)\"\n (drop)=\"onDrop($event, node)\">\n @if (node.children.length > 0) {\n <i\n class=\"fas toggle-icon\"\n [ngClass]=\"node.expanded ? 'fa-chevron-down' : 'fa-chevron-right'\"\n (click)=\"toggleNode(node, $event)\">\n </i>\n }\n <i class=\"fas fa-folder collection-icon\" [style.color]=\"node.collection.Color || '#0076B6'\"></i>\n <span class=\"collection-name\">{{ node.collection.Name }}</span>\n <div class=\"node-actions\" (click)=\"$event.stopPropagation()\">\n @if (canEdit(node.collection)) {\n <button class=\"node-action-btn\" (click)=\"onCreateCollection(node.collection.ID)\" title=\"Add sub-collection\">\n <i class=\"fas fa-plus\"></i>\n </button>\n }\n @if (canDelete(node.collection)) {\n <button class=\"node-action-btn\" (click)=\"onDeleteCollection(node.collection)\" title=\"Delete\">\n <i class=\"fas fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n\n @if (node.expanded) {\n @for (child of node.children; track child.collection.ID) {\n <ng-container *ngTemplateOutlet=\"recursiveTree; context: { node: child }\"></ng-container>\n }\n }\n </div>\n </ng-template>\n `,\n styles: [`\n .collection-tree { display: flex; flex-direction: column; height: 100%; }\n .tree-header { padding: 16px; border-bottom: 1px solid var(--mj-border-default); display: flex; justify-content: space-between; align-items: center; }\n .tree-header h3 { margin: 0; font-size: 16px; }\n .btn-new { padding: 6px 10px; background: var(--mj-brand-primary); color: var(--mj-text-inverse); border: none; border-radius: 4px; cursor: pointer; }\n .btn-new:hover { background: var(--mj-brand-primary-hover); }\n .tree-content { flex: 1; overflow-y: auto; position: relative; }\n .tree-content.drag-over-root { background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); }\n .tree-node {\n padding: 8px 12px;\n cursor: move;\n display: flex;\n align-items: center;\n gap: 8px;\n position: relative;\n transition: all 0.2s ease;\n border: 2px solid transparent;\n }\n .tree-node:hover { background: var(--mj-bg-surface-sunken); }\n .tree-node.selected { background: var(--mj-brand-accent); }\n .tree-node.dragging {\n opacity: 0.4;\n cursor: grabbing;\n }\n .tree-node.drag-over {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border: 2px dashed var(--mj-brand-primary);\n border-radius: 4px;\n }\n .toggle-icon { font-size: 10px; color: var(--mj-text-disabled); cursor: pointer; width: 12px; }\n .collection-icon { font-size: 14px; }\n .collection-name { flex: 1; font-size: 14px; user-select: none; }\n .node-actions { display: none; gap: 4px; }\n .tree-node:hover .node-actions { display: flex; }\n .node-action-btn { padding: 4px 6px; background: transparent; border: none; cursor: pointer; border-radius: 3px; color: var(--mj-text-muted); }\n .node-action-btn:hover { background: var(--mj-bg-surface-sunken); }\n `]\n})\nexport class CollectionTreeComponent extends BaseAngularComponent implements OnInit {\n @Input() environmentId!: string;\n @Input() currentUser!: UserInfo;\n @Input() selectedCollectionId: string | null = null;\n @Input() userPermissions: Map<string, CollectionPermission> = new Map();\n\n @Output() collectionSelected = new EventEmitter<MJCollectionEntity>();\n @Output() collectionCreated = new EventEmitter<MJCollectionEntity>();\n @Output() collectionDeleted = new EventEmitter<MJCollectionEntity>();\n\n public collections: MJCollectionEntity[] = [];\n public treeNodes: TreeNode[] = [];\n public draggedNode: TreeNode | null = null;\n public dragOverNodeId: string | null = null;\n\n constructor(private permissionService: CollectionPermissionService, private confirmService: MJConfirmService) {\n super();}\n\n ngOnInit() {\n this.permissionService.Provider = this.ProviderToUse;\n this.loadCollections();\n }\n\n private async loadCollections(): Promise<void> {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJCollectionEntity>({\n EntityName: 'MJ: Collections',\n ExtraFilter: `EnvironmentID='${this.environmentId}'`,\n OrderBy: 'Sequence ASC, Name ASC',\n ResultType: 'entity_object'\n }, this.currentUser);\n\n if (result.Success) {\n this.collections = result.Results || [];\n this.buildTree();\n }\n } catch (error) {\n console.error('Error loading collections:', error);\n }\n }\n\n private buildTree(): void {\n const rootCollections = this.collections.filter(c => !c.ParentID);\n this.treeNodes = rootCollections.map(c => this.buildNode(c, 0));\n }\n\n private buildNode(collection: MJCollectionEntity, level: number): TreeNode {\n const children = this.collections.filter(c => UUIDsEqual(c.ParentID, collection.ID));\n return {\n collection,\n children: children.map(c => this.buildNode(c, level + 1)),\n expanded: level === 0,\n level\n };\n }\n\n toggleNode(node: TreeNode, event: Event): void {\n event.stopPropagation();\n node.expanded = !node.expanded;\n }\n\n IsCollectionSelected(node: TreeNode): boolean {\n return UUIDsEqual(node.collection.ID, this.selectedCollectionId);\n }\n\n IsCollectionDragging(node: TreeNode): boolean {\n return UUIDsEqual(this.draggedNode?.collection?.ID, node.collection.ID);\n }\n\n onSelectCollection(collection: MJCollectionEntity): void {\n this.selectedCollectionId = collection.ID;\n this.collectionSelected.emit(collection);\n }\n\n async onCreateCollection(parentId: string | null): Promise<void> {\n // Validate permission if creating child collection\n if (parentId) {\n const parentCollection = this.collections.find(c => UUIDsEqual(c.ID, parentId));\n if (parentCollection) {\n // Check if user has Edit permission on parent\n if (parentCollection.OwnerID && !UUIDsEqual(parentCollection.OwnerID, this.currentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n parentId,\n this.currentUser.ID,\n this.currentUser\n );\n\n if (!permission?.canEdit) {\n alert('You do not have Edit permission to create a sub-collection.');\n return;\n }\n }\n }\n }\n\n const name = prompt('Enter collection name:');\n if (!name) return;\n\n try {\n const md = this.ProviderToUse;\n const collection = await md.GetEntityObject<MJCollectionEntity>('MJ: Collections', this.currentUser);\n\n collection.Name = name;\n collection.EnvironmentID = this.environmentId;\n\n if (parentId) {\n // Child collection - inherit parent's owner and set parent\n const parentCollection = this.collections.find(c => UUIDsEqual(c.ID, parentId));\n collection.ParentID = parentId;\n collection.OwnerID = parentCollection?.OwnerID || this.currentUser.ID;\n } else {\n // Root collection - current user becomes owner\n collection.OwnerID = this.currentUser.ID;\n }\n\n const saved = await collection.Save();\n if (saved) {\n this.collectionCreated.emit(collection);\n await this.loadCollections();\n }\n } catch (error) {\n console.error('Error creating collection:', error);\n alert('Failed to create collection');\n }\n }\n\n async onDeleteCollection(collection: MJCollectionEntity): Promise<void> {\n // Validate Delete permission\n if (collection.OwnerID && !UUIDsEqual(collection.OwnerID, this.currentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n collection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n\n if (!permission?.canDelete) {\n alert('You do not have Delete permission for this collection.');\n return;\n }\n }\n\n if (!(await this.confirmService.ConfirmDelete({ title: 'Delete Collection', message: `Delete collection \"${collection.Name}\"?` }))) return;\n\n try {\n const deleted = await collection.Delete();\n if (deleted) {\n this.collectionDeleted.emit(collection);\n await this.loadCollections();\n }\n } catch (error) {\n console.error('Error deleting collection:', error);\n alert('Failed to delete collection');\n }\n }\n\n onDragStart(event: DragEvent, node: TreeNode): void {\n this.draggedNode = node;\n const dragData: DragData = {\n collectionId: node.collection.ID,\n parentId: node.collection.ParentID || null\n };\n event.dataTransfer!.effectAllowed = 'move';\n event.dataTransfer!.setData('application/json', JSON.stringify(dragData));\n\n // Add visual feedback\n (event.target as HTMLElement).style.opacity = '0.4';\n }\n\n onDragEnd(event: DragEvent): void {\n // Clean up visual feedback\n (event.target as HTMLElement).style.opacity = '1';\n this.draggedNode = null;\n this.dragOverNodeId = null;\n }\n\n onDragOver(event: DragEvent, targetNode: TreeNode): void {\n event.preventDefault(); // Required to allow drop\n\n if (!this.draggedNode || UUIDsEqual(this.draggedNode.collection.ID, targetNode.collection.ID)) {\n event.dataTransfer!.dropEffect = 'none';\n return;\n }\n\n // Check if trying to drop into a descendant\n if (this.isDescendant(targetNode, this.draggedNode)) {\n event.dataTransfer!.dropEffect = 'none';\n return;\n }\n\n event.dataTransfer!.dropEffect = 'move';\n this.dragOverNodeId = targetNode.collection.ID;\n }\n\n onDragLeave(event: DragEvent, targetNode: TreeNode): void {\n if (this.dragOverNodeId === targetNode.collection.ID) {\n this.dragOverNodeId = null;\n }\n }\n\n async onDrop(event: DragEvent, targetNode: TreeNode): Promise<void> {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.draggedNode) {\n return;\n }\n\n // Don't allow dropping on itself\n if (UUIDsEqual(this.draggedNode.collection.ID, targetNode.collection.ID)) {\n this.dragOverNodeId = null;\n return;\n }\n\n // Check if trying to drop into a descendant\n if (this.isDescendant(targetNode, this.draggedNode)) {\n alert('Cannot move a collection into its own descendant');\n this.dragOverNodeId = null;\n return;\n }\n\n try {\n const collection = this.draggedNode.collection;\n const newParentId = targetNode.collection.ID;\n\n // Update the collection's parent\n collection.ParentID = newParentId;\n\n const saved = await collection.Save();\n if (saved) {\n // Reload the tree to reflect changes\n await this.loadCollections();\n } else {\n alert('Failed to move collection');\n }\n } catch (error) {\n LogError(error);\n alert('Error moving collection');\n } finally {\n this.dragOverNodeId = null;\n }\n }\n\n onDragOverRoot(event: DragEvent): void {\n event.preventDefault();\n\n if (!this.draggedNode) {\n event.dataTransfer!.dropEffect = 'none';\n return;\n }\n\n event.dataTransfer!.dropEffect = 'move';\n this.dragOverNodeId = 'root';\n }\n\n async onDropRoot(event: DragEvent): Promise<void> {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.draggedNode) {\n return;\n }\n\n try {\n const collection = this.draggedNode.collection;\n\n // Move to root level\n collection.ParentID = null;\n\n const saved = await collection.Save();\n if (saved) {\n await this.loadCollections();\n } else {\n alert('Failed to move collection to root');\n }\n } catch (error) {\n LogError(error);\n alert('Error moving collection to root');\n } finally {\n this.dragOverNodeId = null;\n }\n }\n\n private isDescendant(potentialDescendant: TreeNode, ancestor: TreeNode): boolean {\n if (UUIDsEqual(potentialDescendant.collection.ParentID, ancestor.collection.ID)) {\n return true;\n }\n\n for (const child of ancestor.children) {\n if (this.isDescendant(potentialDescendant, child)) {\n return true;\n }\n }\n\n return false;\n }\n\n // Permission checking methods\n canEdit(collection: MJCollectionEntity): boolean {\n // Backwards compatibility: treat null OwnerID as owned by current user\n if (!collection.OwnerID || UUIDsEqual(collection.OwnerID, this.currentUser.ID)) {\n return true;\n }\n\n // Check permission record\n const permission = this.userPermissions.get(collection.ID);\n return permission?.canEdit || false;\n }\n\n canDelete(collection: MJCollectionEntity): boolean {\n // Backwards compatibility: treat null OwnerID as owned by current user\n if (!collection.OwnerID || UUIDsEqual(collection.OwnerID, this.currentUser.ID)) {\n return true;\n }\n\n // Check permission record\n const permission = this.userPermissions.get(collection.ID);\n return permission?.canDelete || false;\n }\n\n canCreateAtRoot(): boolean {\n // Anyone can create at root level\n return true;\n }\n}"]}
1
+ {"version":3,"file":"collection-tree.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-tree.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { MJCollectionEntity } from '@memberjunction/core-entities';\nimport { UserInfo, RunView, Metadata, LogError } from '@memberjunction/core';\nimport { CollectionPermission, CollectionPermissionService } from '../../services/collection-permission.service';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { MJConfirmService } from '@memberjunction/ng-ui-components';\n\ninterface TreeNode {\n collection: MJCollectionEntity;\n children: TreeNode[];\n expanded: boolean;\n level: number;\n}\n\ninterface DragData {\n collectionId: string;\n parentId: string | null;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-collection-tree',\n template: `\n <div class=\"collection-tree\">\n <div class=\"tree-header\">\n <h3>Collections</h3>\n @if (canCreateAtRoot()) {\n <button class=\"btn-new\" (click)=\"onCreateCollection(null)\" title=\"New Collection\">\n <i class=\"fas fa-plus\"></i>\n </button>\n }\n </div>\n\n <div\n class=\"tree-content\"\n [class.drag-over-root]=\"dragOverNodeId === 'root'\"\n (dragover)=\"onDragOverRoot($event)\"\n (drop)=\"onDropRoot($event)\">\n @for (node of treeNodes; track node.collection.ID) {\n <div class=\"tree-node-wrapper\">\n <div\n class=\"tree-node\"\n [class.selected]=\"IsCollectionSelected(node)\"\n [class.drag-over]=\"dragOverNodeId === node.collection.ID\"\n [class.dragging]=\"IsCollectionDragging(node)\"\n [style.padding-left.px]=\"node.level * 20\"\n [draggable]=\"true\"\n (click)=\"onSelectCollection(node.collection)\"\n (dragstart)=\"onDragStart($event, node)\"\n (dragend)=\"onDragEnd($event)\"\n (dragover)=\"onDragOver($event, node)\"\n (dragleave)=\"onDragLeave($event, node)\"\n (drop)=\"onDrop($event, node)\">\n @if (node.children.length > 0) {\n <i\n class=\"fas toggle-icon\"\n [ngClass]=\"node.expanded ? 'fa-chevron-down' : 'fa-chevron-right'\"\n (click)=\"toggleNode(node, $event)\">\n </i>\n }\n <i class=\"fas fa-folder collection-icon\" [style.color]=\"node.collection.Color || '#0076B6'\"></i>\n <span class=\"collection-name\">{{ node.collection.Name }}</span>\n <div class=\"node-actions\" (click)=\"$event.stopPropagation()\">\n @if (canEdit(node.collection)) {\n <button class=\"node-action-btn\" (click)=\"onCreateCollection(node.collection.ID)\" title=\"Add sub-collection\">\n <i class=\"fas fa-plus\"></i>\n </button>\n }\n @if (canDelete(node.collection)) {\n <button class=\"node-action-btn\" (click)=\"onDeleteCollection(node.collection)\" title=\"Delete\">\n <i class=\"fas fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n\n @if (node.expanded) {\n @for (child of node.children; track child.collection.ID) {\n <ng-container *ngTemplateOutlet=\"recursiveTree; context: { node: child }\"></ng-container>\n }\n }\n </div>\n }\n </div>\n </div>\n\n <ng-template #recursiveTree let-node=\"node\">\n <div class=\"tree-node-wrapper\">\n <div\n class=\"tree-node\"\n [class.selected]=\"IsCollectionSelected(node)\"\n [class.drag-over]=\"dragOverNodeId === node.collection.ID\"\n [class.dragging]=\"IsCollectionDragging(node)\"\n [style.padding-left.px]=\"node.level * 20\"\n [draggable]=\"true\"\n (click)=\"onSelectCollection(node.collection)\"\n (dragstart)=\"onDragStart($event, node)\"\n (dragend)=\"onDragEnd($event)\"\n (dragover)=\"onDragOver($event, node)\"\n (dragleave)=\"onDragLeave($event, node)\"\n (drop)=\"onDrop($event, node)\">\n @if (node.children.length > 0) {\n <i\n class=\"fas toggle-icon\"\n [ngClass]=\"node.expanded ? 'fa-chevron-down' : 'fa-chevron-right'\"\n (click)=\"toggleNode(node, $event)\">\n </i>\n }\n <i class=\"fas fa-folder collection-icon\" [style.color]=\"node.collection.Color || '#0076B6'\"></i>\n <span class=\"collection-name\">{{ node.collection.Name }}</span>\n <div class=\"node-actions\" (click)=\"$event.stopPropagation()\">\n @if (canEdit(node.collection)) {\n <button class=\"node-action-btn\" (click)=\"onCreateCollection(node.collection.ID)\" title=\"Add sub-collection\">\n <i class=\"fas fa-plus\"></i>\n </button>\n }\n @if (canDelete(node.collection)) {\n <button class=\"node-action-btn\" (click)=\"onDeleteCollection(node.collection)\" title=\"Delete\">\n <i class=\"fas fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n\n @if (node.expanded) {\n @for (child of node.children; track child.collection.ID) {\n <ng-container *ngTemplateOutlet=\"recursiveTree; context: { node: child }\"></ng-container>\n }\n }\n </div>\n </ng-template>\n `,\n styles: [`\n .collection-tree { display: flex; flex-direction: column; height: 100%; }\n .tree-header { padding: 16px; border-bottom: 1px solid var(--mj-border-default); display: flex; justify-content: space-between; align-items: center; }\n .tree-header h3 { margin: 0; font-size: 16px; }\n .btn-new { padding: 6px 10px; background: var(--mj-brand-primary); color: var(--mj-text-inverse); border: none; border-radius: 4px; cursor: pointer; }\n .btn-new:hover { background: var(--mj-brand-primary-hover); }\n .tree-content { flex: 1; overflow-y: auto; position: relative; }\n .tree-content.drag-over-root { background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); }\n .tree-node {\n padding: 8px 12px;\n cursor: move;\n display: flex;\n align-items: center;\n gap: 8px;\n position: relative;\n transition: all 0.2s ease;\n border: 2px solid transparent;\n }\n .tree-node:hover { background: var(--mj-bg-surface-sunken); }\n .tree-node.selected { background: var(--mj-brand-accent); }\n .tree-node.dragging {\n opacity: 0.4;\n cursor: grabbing;\n }\n .tree-node.drag-over {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border: 2px dashed var(--mj-brand-primary);\n border-radius: 4px;\n }\n .toggle-icon { font-size: 10px; color: var(--mj-text-disabled); cursor: pointer; width: 12px; }\n .collection-icon { font-size: 14px; }\n .collection-name { flex: 1; font-size: 14px; user-select: none; }\n .node-actions { display: none; gap: 4px; }\n .tree-node:hover .node-actions { display: flex; }\n .node-action-btn { padding: 4px 6px; background: transparent; border: none; cursor: pointer; border-radius: 3px; color: var(--mj-text-muted); }\n .node-action-btn:hover { background: var(--mj-bg-surface-sunken); }\n `]\n})\nexport class CollectionTreeComponent extends BaseAngularComponent implements OnInit {\n @Input() EnvironmentId!: string;\n\n /** @deprecated Use {@link EnvironmentId}. */\n @Input() set environmentId(value: string) {\n this.EnvironmentId = value;\n }\n /** @deprecated Use {@link EnvironmentId}. */\n get environmentId(): string {\n return this.EnvironmentId;\n }\n @Input() CurrentUser!: UserInfo;\n\n /** @deprecated Use {@link CurrentUser}. */\n @Input() set currentUser(value: UserInfo) {\n this.CurrentUser = value;\n }\n /** @deprecated Use {@link CurrentUser}. */\n get currentUser(): UserInfo {\n return this.CurrentUser;\n }\n @Input() SelectedCollectionId: string | null = null;\n\n /** @deprecated Use {@link SelectedCollectionId}. */\n @Input() set selectedCollectionId(value: string | null) {\n this.SelectedCollectionId = value;\n }\n /** @deprecated Use {@link SelectedCollectionId}. */\n get selectedCollectionId(): string | null {\n return this.SelectedCollectionId;\n }\n @Input() UserPermissions: Map<string, CollectionPermission> = new Map();\n\n /** @deprecated Use {@link UserPermissions}. */\n @Input() set userPermissions(value: Map<string, CollectionPermission>) {\n this.UserPermissions = value;\n }\n /** @deprecated Use {@link UserPermissions}. */\n get userPermissions(): Map<string, CollectionPermission> {\n return this.UserPermissions;\n }\n\n @Output() CollectionSelected = new EventEmitter<MJCollectionEntity>();\n\n /**\n * @deprecated Use {@link CollectionSelected}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (collectionSelected) keeps working. Must stay AFTER CollectionSelected: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() collectionSelected = this.CollectionSelected;\n @Output() CollectionCreated = new EventEmitter<MJCollectionEntity>();\n\n /**\n * @deprecated Use {@link CollectionCreated}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (collectionCreated) keeps working. Must stay AFTER CollectionCreated: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() collectionCreated = this.CollectionCreated;\n @Output() CollectionDeleted = new EventEmitter<MJCollectionEntity>();\n\n /**\n * @deprecated Use {@link CollectionDeleted}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (collectionDeleted) keeps working. Must stay AFTER CollectionDeleted: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() collectionDeleted = this.CollectionDeleted;\n\n public Collections: MJCollectionEntity[] = [];\n\n /** @deprecated Use {@link Collections}. */\n public get collections(): MJCollectionEntity[] {\n return this.Collections;\n }\n /** @deprecated Use {@link Collections}. */\n public set collections(value: MJCollectionEntity[]) {\n this.Collections = value;\n }\n public TreeNodes: TreeNode[] = [];\n\n /** @deprecated Use {@link TreeNodes}. */\n public get treeNodes(): TreeNode[] {\n return this.TreeNodes;\n }\n /** @deprecated Use {@link TreeNodes}. */\n public set treeNodes(value: TreeNode[]) {\n this.TreeNodes = value;\n }\n public DraggedNode: TreeNode | null = null;\n\n /** @deprecated Use {@link DraggedNode}. */\n public get draggedNode(): TreeNode | null {\n return this.DraggedNode;\n }\n /** @deprecated Use {@link DraggedNode}. */\n public set draggedNode(value: TreeNode | null) {\n this.DraggedNode = value;\n }\n public DragOverNodeId: string | null = null;\n\n /** @deprecated Use {@link DragOverNodeId}. */\n public get dragOverNodeId(): string | null {\n return this.DragOverNodeId;\n }\n /** @deprecated Use {@link DragOverNodeId}. */\n public set dragOverNodeId(value: string | null) {\n this.DragOverNodeId = value;\n }\n\n constructor(private permissionService: CollectionPermissionService, private confirmService: MJConfirmService) {\n super();}\n\n ngOnInit() {\n this.permissionService.Provider = this.ProviderToUse;\n this.loadCollections();\n }\n\n private async loadCollections(): Promise<void> {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJCollectionEntity>({\n EntityName: 'MJ: Collections',\n ExtraFilter: `EnvironmentID='${this.EnvironmentId}'`,\n OrderBy: 'Sequence ASC, Name ASC',\n ResultType: 'entity_object'\n }, this.CurrentUser);\n\n if (result.Success) {\n this.Collections = result.Results || [];\n this.buildTree();\n }\n } catch (error) {\n console.error('Error loading collections:', error);\n }\n }\n\n private buildTree(): void {\n const rootCollections = this.Collections.filter(c => !c.ParentID);\n this.TreeNodes = rootCollections.map(c => this.buildNode(c, 0));\n }\n\n private buildNode(collection: MJCollectionEntity, level: number): TreeNode {\n const children = this.Collections.filter(c => UUIDsEqual(c.ParentID, collection.ID));\n return {\n collection,\n children: children.map(c => this.buildNode(c, level + 1)),\n expanded: level === 0,\n level\n };\n }\n\n ToggleNode(node: TreeNode, event: Event): void {\n event.stopPropagation();\n node.expanded = !node.expanded;\n }\n\n /** @deprecated Use {@link ToggleNode}. */\n toggleNode(node: TreeNode, event: Event): void {\n return this.ToggleNode(node, event);\n }\n\n IsCollectionSelected(node: TreeNode): boolean {\n return UUIDsEqual(node.collection.ID, this.SelectedCollectionId);\n }\n\n IsCollectionDragging(node: TreeNode): boolean {\n return UUIDsEqual(this.DraggedNode?.collection?.ID, node.collection.ID);\n }\n\n OnSelectCollection(collection: MJCollectionEntity): void {\n this.SelectedCollectionId = collection.ID;\n this.CollectionSelected.emit(collection);\n }\n\n /** @deprecated Use {@link OnSelectCollection}. */\n onSelectCollection(collection: MJCollectionEntity): void {\n return this.OnSelectCollection(collection);\n }\n\n async OnCreateCollection(parentId: string | null): Promise<void> {\n // Validate permission if creating child collection\n if (parentId) {\n const parentCollection = this.Collections.find(c => UUIDsEqual(c.ID, parentId));\n if (parentCollection) {\n // Check if user has Edit permission on parent\n if (parentCollection.OwnerID && !UUIDsEqual(parentCollection.OwnerID, this.CurrentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n parentId,\n this.CurrentUser.ID,\n this.CurrentUser\n );\n\n if (!permission?.canEdit) {\n alert('You do not have Edit permission to create a sub-collection.');\n return;\n }\n }\n }\n }\n\n const name = prompt('Enter collection name:');\n if (!name) return;\n\n try {\n const md = this.ProviderToUse;\n const collection = await md.GetEntityObject<MJCollectionEntity>('MJ: Collections', this.CurrentUser);\n\n collection.Name = name;\n collection.EnvironmentID = this.EnvironmentId;\n\n if (parentId) {\n // Child collection - inherit parent's owner and set parent\n const parentCollection = this.Collections.find(c => UUIDsEqual(c.ID, parentId));\n collection.ParentID = parentId;\n collection.OwnerID = parentCollection?.OwnerID || this.CurrentUser.ID;\n } else {\n // Root collection - current user becomes owner\n collection.OwnerID = this.CurrentUser.ID;\n }\n\n const saved = await collection.Save();\n if (saved) {\n this.CollectionCreated.emit(collection);\n await this.loadCollections();\n }\n } catch (error) {\n console.error('Error creating collection:', error);\n alert('Failed to create collection');\n }\n }\n\n /** @deprecated Use {@link OnCreateCollection}. */\n async onCreateCollection(parentId: string | null): Promise<void> {\n return this.OnCreateCollection(parentId);\n }\n\n async OnDeleteCollection(collection: MJCollectionEntity): Promise<void> {\n // Validate Delete permission\n if (collection.OwnerID && !UUIDsEqual(collection.OwnerID, this.CurrentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n collection.ID,\n this.CurrentUser.ID,\n this.CurrentUser\n );\n\n if (!permission?.canDelete) {\n alert('You do not have Delete permission for this collection.');\n return;\n }\n }\n\n if (!(await this.confirmService.ConfirmDelete({ title: 'Delete Collection', message: `Delete collection \"${collection.Name}\"?` }))) return;\n\n try {\n const deleted = await collection.Delete();\n if (deleted) {\n this.CollectionDeleted.emit(collection);\n await this.loadCollections();\n }\n } catch (error) {\n console.error('Error deleting collection:', error);\n alert('Failed to delete collection');\n }\n }\n\n /** @deprecated Use {@link OnDeleteCollection}. */\n async onDeleteCollection(collection: MJCollectionEntity): Promise<void> {\n return this.OnDeleteCollection(collection);\n }\n\n OnDragStart(event: DragEvent, node: TreeNode): void {\n this.DraggedNode = node;\n const dragData: DragData = {\n collectionId: node.collection.ID,\n parentId: node.collection.ParentID || null\n };\n event.dataTransfer!.effectAllowed = 'move';\n event.dataTransfer!.setData('application/json', JSON.stringify(dragData));\n\n // Add visual feedback\n (event.target as HTMLElement).style.opacity = '0.4';\n }\n\n /** @deprecated Use {@link OnDragStart}. */\n onDragStart(event: DragEvent, node: TreeNode): void {\n return this.OnDragStart(event, node);\n }\n\n OnDragEnd(event: DragEvent): void {\n // Clean up visual feedback\n (event.target as HTMLElement).style.opacity = '1';\n this.DraggedNode = null;\n this.DragOverNodeId = null;\n }\n\n /** @deprecated Use {@link OnDragEnd}. */\n onDragEnd(event: DragEvent): void {\n return this.OnDragEnd(event);\n }\n\n OnDragOver(event: DragEvent, targetNode: TreeNode): void {\n event.preventDefault(); // Required to allow drop\n\n if (!this.DraggedNode || UUIDsEqual(this.DraggedNode.collection.ID, targetNode.collection.ID)) {\n event.dataTransfer!.dropEffect = 'none';\n return;\n }\n\n // Check if trying to drop into a descendant\n if (this.isDescendant(targetNode, this.DraggedNode)) {\n event.dataTransfer!.dropEffect = 'none';\n return;\n }\n\n event.dataTransfer!.dropEffect = 'move';\n this.DragOverNodeId = targetNode.collection.ID;\n }\n\n /** @deprecated Use {@link OnDragOver}. */\n onDragOver(event: DragEvent, targetNode: TreeNode): void {\n return this.OnDragOver(event, targetNode);\n }\n\n OnDragLeave(event: DragEvent, targetNode: TreeNode): void {\n if (this.DragOverNodeId === targetNode.collection.ID) {\n this.DragOverNodeId = null;\n }\n }\n\n /** @deprecated Use {@link OnDragLeave}. */\n onDragLeave(event: DragEvent, targetNode: TreeNode): void {\n return this.OnDragLeave(event, targetNode);\n }\n\n async OnDrop(event: DragEvent, targetNode: TreeNode): Promise<void> {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.DraggedNode) {\n return;\n }\n\n // Don't allow dropping on itself\n if (UUIDsEqual(this.DraggedNode.collection.ID, targetNode.collection.ID)) {\n this.DragOverNodeId = null;\n return;\n }\n\n // Check if trying to drop into a descendant\n if (this.isDescendant(targetNode, this.DraggedNode)) {\n alert('Cannot move a collection into its own descendant');\n this.DragOverNodeId = null;\n return;\n }\n\n try {\n const collection = this.DraggedNode.collection;\n const newParentId = targetNode.collection.ID;\n\n // Update the collection's parent\n collection.ParentID = newParentId;\n\n const saved = await collection.Save();\n if (saved) {\n // Reload the tree to reflect changes\n await this.loadCollections();\n } else {\n alert('Failed to move collection');\n }\n } catch (error) {\n LogError(error);\n alert('Error moving collection');\n } finally {\n this.DragOverNodeId = null;\n }\n }\n\n /** @deprecated Use {@link OnDrop}. */\n async onDrop(event: DragEvent, targetNode: TreeNode): Promise<void> {\n return this.OnDrop(event, targetNode);\n }\n\n OnDragOverRoot(event: DragEvent): void {\n event.preventDefault();\n\n if (!this.DraggedNode) {\n event.dataTransfer!.dropEffect = 'none';\n return;\n }\n\n event.dataTransfer!.dropEffect = 'move';\n this.DragOverNodeId = 'root';\n }\n\n /** @deprecated Use {@link OnDragOverRoot}. */\n onDragOverRoot(event: DragEvent): void {\n return this.OnDragOverRoot(event);\n }\n\n async OnDropRoot(event: DragEvent): Promise<void> {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.DraggedNode) {\n return;\n }\n\n try {\n const collection = this.DraggedNode.collection;\n\n // Move to root level\n collection.ParentID = null;\n\n const saved = await collection.Save();\n if (saved) {\n await this.loadCollections();\n } else {\n alert('Failed to move collection to root');\n }\n } catch (error) {\n LogError(error);\n alert('Error moving collection to root');\n } finally {\n this.DragOverNodeId = null;\n }\n }\n\n /** @deprecated Use {@link OnDropRoot}. */\n async onDropRoot(event: DragEvent): Promise<void> {\n return this.OnDropRoot(event);\n }\n\n private isDescendant(potentialDescendant: TreeNode, ancestor: TreeNode): boolean {\n if (UUIDsEqual(potentialDescendant.collection.ParentID, ancestor.collection.ID)) {\n return true;\n }\n\n for (const child of ancestor.children) {\n if (this.isDescendant(potentialDescendant, child)) {\n return true;\n }\n }\n\n return false;\n }\n\n // Permission checking methods\n canEdit(collection: MJCollectionEntity): boolean {\n // Backwards compatibility: treat null OwnerID as owned by current user\n if (!collection.OwnerID || UUIDsEqual(collection.OwnerID, this.CurrentUser.ID)) {\n return true;\n }\n\n // Check permission record\n const permission = this.UserPermissions.get(collection.ID);\n return permission?.canEdit || false;\n }\n\n canDelete(collection: MJCollectionEntity): boolean {\n // Backwards compatibility: treat null OwnerID as owned by current user\n if (!collection.OwnerID || UUIDsEqual(collection.OwnerID, this.CurrentUser.ID)) {\n return true;\n }\n\n // Check permission record\n const permission = this.UserPermissions.get(collection.ID);\n return permission?.canDelete || false;\n }\n\n CanCreateAtRoot(): boolean {\n // Anyone can create at root level\n return true;\n }\n\n /** @deprecated Use {@link CanCreateAtRoot}. */\n canCreateAtRoot(): boolean {\n return this.CanCreateAtRoot();\n }\n}"]}
@@ -9,50 +9,128 @@ type SortBy = 'name' | 'date' | 'type';
9
9
  export declare class CollectionViewComponent extends BaseAngularComponent implements OnInit, OnChanges, OnDestroy {
10
10
  private cdr;
11
11
  private confirmService;
12
- collection: MJCollectionEntity;
13
- currentUser: UserInfo;
14
- environmentId: string;
12
+ Collection: MJCollectionEntity;
13
+ /** @deprecated Use {@link Collection}. */
14
+ set collection(value: MJCollectionEntity);
15
+ /** @deprecated Use {@link Collection}. */
16
+ get collection(): MJCollectionEntity;
17
+ CurrentUser: UserInfo;
18
+ /** @deprecated Use {@link CurrentUser}. */
19
+ set currentUser(value: UserInfo);
20
+ /** @deprecated Use {@link CurrentUser}. */
21
+ get currentUser(): UserInfo;
22
+ EnvironmentId: string;
23
+ /** @deprecated Use {@link EnvironmentId}. */
24
+ set environmentId(value: string);
25
+ /** @deprecated Use {@link EnvironmentId}. */
26
+ get environmentId(): string;
15
27
  canEdit: boolean;
16
- artifactVersions: Array<{
28
+ ArtifactVersions: Array<{
17
29
  version: MJArtifactVersionEntity;
18
30
  artifact: MJArtifactEntity;
19
31
  }>;
20
- viewMode: ViewMode;
21
- sortBy: SortBy;
22
- selectedArtifactId: string | null;
23
- selectedVersionNumber: number | undefined;
24
- showArtifactViewer: boolean;
25
- sortOptions: {
32
+ /** @deprecated Use {@link ArtifactVersions}. */
33
+ get artifactVersions(): Array<{
34
+ version: MJArtifactVersionEntity;
35
+ artifact: MJArtifactEntity;
36
+ }>;
37
+ /** @deprecated Use {@link ArtifactVersions}. */
38
+ set artifactVersions(value: Array<{
39
+ version: MJArtifactVersionEntity;
40
+ artifact: MJArtifactEntity;
41
+ }>);
42
+ ViewMode: ViewMode;
43
+ /** @deprecated Use {@link ViewMode}. */
44
+ get viewMode(): ViewMode;
45
+ /** @deprecated Use {@link ViewMode}. */
46
+ set viewMode(value: ViewMode);
47
+ SortBy: SortBy;
48
+ /** @deprecated Use {@link SortBy}. */
49
+ get sortBy(): SortBy;
50
+ /** @deprecated Use {@link SortBy}. */
51
+ set sortBy(value: SortBy);
52
+ SelectedArtifactId: string | null;
53
+ /** @deprecated Use {@link SelectedArtifactId}. */
54
+ get selectedArtifactId(): string | null;
55
+ /** @deprecated Use {@link SelectedArtifactId}. */
56
+ set selectedArtifactId(value: string | null);
57
+ SelectedVersionNumber: number | undefined;
58
+ /** @deprecated Use {@link SelectedVersionNumber}. */
59
+ get selectedVersionNumber(): number | undefined;
60
+ /** @deprecated Use {@link SelectedVersionNumber}. */
61
+ set selectedVersionNumber(value: number | undefined);
62
+ ShowArtifactViewer: boolean;
63
+ /** @deprecated Use {@link ShowArtifactViewer}. */
64
+ get showArtifactViewer(): boolean;
65
+ /** @deprecated Use {@link ShowArtifactViewer}. */
66
+ set showArtifactViewer(value: boolean);
67
+ SortOptions: {
26
68
  label: string;
27
69
  value: string;
28
70
  }[];
71
+ /** @deprecated Use {@link SortOptions}. */
72
+ get sortOptions(): {
73
+ label: string;
74
+ value: string;
75
+ }[];
76
+ /** @deprecated Use {@link SortOptions}. */
77
+ set sortOptions(value: {
78
+ label: string;
79
+ value: string;
80
+ }[]);
29
81
  constructor(cdr: ChangeDetectorRef, confirmService: MJConfirmService);
30
82
  ngOnInit(): void;
31
83
  ngOnChanges(changes: SimpleChanges): void;
32
84
  ngOnDestroy(): void;
33
85
  private loadArtifacts;
34
86
  private getVersionOrderBy;
87
+ OnSortChange(): void;
88
+ /** @deprecated Use {@link OnSortChange}. */
35
89
  onSortChange(): void;
90
+ OnArtifactSelected(item: {
91
+ version: MJArtifactVersionEntity;
92
+ artifact: MJArtifactEntity;
93
+ }): void;
94
+ /** @deprecated Use {@link OnArtifactSelected}. */
36
95
  onArtifactSelected(item: {
37
96
  version: MJArtifactVersionEntity;
38
97
  artifact: MJArtifactEntity;
39
98
  }): void;
99
+ OnViewArtifact(item: {
100
+ version: MJArtifactVersionEntity;
101
+ artifact: MJArtifactEntity;
102
+ }): void;
103
+ /** @deprecated Use {@link OnViewArtifact}. */
40
104
  onViewArtifact(item: {
41
105
  version: MJArtifactVersionEntity;
42
106
  artifact: MJArtifactEntity;
43
107
  }): void;
108
+ OnCloseArtifactViewer(): void;
109
+ /** @deprecated Use {@link OnCloseArtifactViewer}. */
44
110
  onCloseArtifactViewer(): void;
111
+ OnEditArtifact(item: {
112
+ version: MJArtifactVersionEntity;
113
+ artifact: MJArtifactEntity;
114
+ }): void;
115
+ /** @deprecated Use {@link OnEditArtifact}. */
45
116
  onEditArtifact(item: {
46
117
  version: MJArtifactVersionEntity;
47
118
  artifact: MJArtifactEntity;
48
119
  }): void;
120
+ OnRemoveArtifact(item: {
121
+ version: MJArtifactVersionEntity;
122
+ artifact: MJArtifactEntity;
123
+ }): Promise<void>;
124
+ /** @deprecated Use {@link OnRemoveArtifact}. */
49
125
  onRemoveArtifact(item: {
50
126
  version: MJArtifactVersionEntity;
51
127
  artifact: MJArtifactEntity;
52
128
  }): Promise<void>;
129
+ OnAddArtifact(): Promise<void>;
130
+ /** @deprecated Use {@link OnAddArtifact}. */
53
131
  onAddArtifact(): Promise<void>;
54
132
  static ɵfac: i0.ɵɵFactoryDeclaration<CollectionViewComponent, never>;
55
- static ɵcmp: i0.ɵɵComponentDeclaration<CollectionViewComponent, "mj-collection-view", never, { "collection": { "alias": "collection"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "environmentId": { "alias": "environmentId"; "required": false; }; "canEdit": { "alias": "canEdit"; "required": false; }; }, {}, never, never, false, never>;
133
+ static ɵcmp: i0.ɵɵComponentDeclaration<CollectionViewComponent, "mj-collection-view", never, { "Collection": { "alias": "Collection"; "required": false; }; "collection": { "alias": "collection"; "required": false; }; "CurrentUser": { "alias": "CurrentUser"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "EnvironmentId": { "alias": "EnvironmentId"; "required": false; }; "environmentId": { "alias": "environmentId"; "required": false; }; "canEdit": { "alias": "canEdit"; "required": false; }; }, {}, never, never, false, never>;
56
134
  }
57
135
  export {};
58
136
  //# sourceMappingURL=collection-view.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-view.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,uBAAuB,EAA8B,MAAM,+BAA+B,CAAC;AAC1I,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;;AAEpE,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAChC,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC,qBA4Ga,uBAAwB,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;IAuB3F,OAAO,CAAC,GAAG;IAAqB,OAAO,CAAC,cAAc;IAtBzD,UAAU,EAAG,kBAAkB,CAAC;IAChC,WAAW,EAAG,QAAQ,CAAC;IACvB,aAAa,EAAG,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAQ;IAG1B,gBAAgB,EAAE,KAAK,CAAC;QAC7B,OAAO,EAAE,uBAAuB,CAAC;QACjC,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC,CAAM;IACD,QAAQ,EAAE,QAAQ,CAAU;IAC5B,MAAM,EAAE,MAAM,CAAU;IACxB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACzC,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAa;IACtD,kBAAkB,UAAS;IAE3B,WAAW;;;QAIhB;gBAEkB,GAAG,EAAE,iBAAiB,EAAU,cAAc,EAAE,gBAAgB;IAGpF,QAAQ;IAIR,WAAW,CAAC,OAAO,EAAE,aAAa;IAMlC,WAAW;YAOG,aAAa;IAsD3B,OAAO,CAAC,iBAAiB;IAazB,YAAY,IAAI,IAAI;IAIpB,kBAAkB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI;IAIhG,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI;IAQ5F,qBAAqB,IAAI,IAAI;IAM7B,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI;IAItF,gBAAgB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CvG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;yCAtLzB,uBAAuB;2CAAvB,uBAAuB;CAmOnC"}
1
+ {"version":3,"file":"collection-view.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-view.component.ts"],"names":[],"mappings":"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"}