@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
@@ -130,60 +130,152 @@ function MembersModalComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
130
130
  } }
131
131
  export class MembersModalComponent {
132
132
  dialogService;
133
- isVisible = false;
134
- conversation;
135
- currentUser;
136
- cancelled = new EventEmitter();
137
- membersChanged = new EventEmitter();
138
- members = [];
139
- newMemberEmail = '';
140
- newMemberRole = 'member';
141
- isLoading = false;
142
- errorMessage = '';
133
+ IsVisible = false;
134
+ /** @deprecated Use {@link IsVisible}. */
135
+ set isVisible(value) {
136
+ this.IsVisible = value;
137
+ }
138
+ /** @deprecated Use {@link IsVisible}. */
139
+ get isVisible() {
140
+ return this.IsVisible;
141
+ }
142
+ Conversation;
143
+ /** @deprecated Use {@link Conversation}. */
144
+ set conversation(value) {
145
+ this.Conversation = value;
146
+ }
147
+ /** @deprecated Use {@link Conversation}. */
148
+ get conversation() {
149
+ return this.Conversation;
150
+ }
151
+ CurrentUser;
152
+ /** @deprecated Use {@link CurrentUser}. */
153
+ set currentUser(value) {
154
+ this.CurrentUser = value;
155
+ }
156
+ /** @deprecated Use {@link CurrentUser}. */
157
+ get currentUser() {
158
+ return this.CurrentUser;
159
+ }
160
+ Cancelled = new EventEmitter();
161
+ /**
162
+ * @deprecated Use {@link Cancelled}.
163
+ *
164
+ * The same emitter under the old binding name, so a template still binding
165
+ * (cancelled) keeps working. Must stay AFTER Cancelled: class fields
166
+ * initialise in order, and the other way round this captures undefined.
167
+ */
168
+ cancelled = this.Cancelled;
169
+ MembersChanged = new EventEmitter();
170
+ /**
171
+ * @deprecated Use {@link MembersChanged}.
172
+ *
173
+ * The same emitter under the old binding name, so a template still binding
174
+ * (membersChanged) keeps working. Must stay AFTER MembersChanged: class fields
175
+ * initialise in order, and the other way round this captures undefined.
176
+ */
177
+ membersChanged = this.MembersChanged;
178
+ Members = [];
179
+ /** @deprecated Use {@link Members}. */
180
+ get members() {
181
+ return this.Members;
182
+ }
183
+ /** @deprecated Use {@link Members}. */
184
+ set members(value) {
185
+ this.Members = value;
186
+ }
187
+ NewMemberEmail = '';
188
+ /** @deprecated Use {@link NewMemberEmail}. */
189
+ get newMemberEmail() {
190
+ return this.NewMemberEmail;
191
+ }
192
+ /** @deprecated Use {@link NewMemberEmail}. */
193
+ set newMemberEmail(value) {
194
+ this.NewMemberEmail = value;
195
+ }
196
+ NewMemberRole = 'member';
197
+ /** @deprecated Use {@link NewMemberRole}. */
198
+ get newMemberRole() {
199
+ return this.NewMemberRole;
200
+ }
201
+ /** @deprecated Use {@link NewMemberRole}. */
202
+ set newMemberRole(value) {
203
+ this.NewMemberRole = value;
204
+ }
205
+ IsLoading = false;
206
+ /** @deprecated Use {@link IsLoading}. */
207
+ get isLoading() {
208
+ return this.IsLoading;
209
+ }
210
+ /** @deprecated Use {@link IsLoading}. */
211
+ set isLoading(value) {
212
+ this.IsLoading = value;
213
+ }
214
+ ErrorMessage = '';
215
+ /** @deprecated Use {@link ErrorMessage}. */
216
+ get errorMessage() {
217
+ return this.ErrorMessage;
218
+ }
219
+ /** @deprecated Use {@link ErrorMessage}. */
220
+ set errorMessage(value) {
221
+ this.ErrorMessage = value;
222
+ }
223
+ get ModalTitle() {
224
+ return `Manage Members: ${this.Conversation?.Name || 'Conversation'}`;
225
+ }
226
+ /** @deprecated Use {@link ModalTitle}. */
143
227
  get modalTitle() {
144
- return `Manage Members: ${this.conversation?.Name || 'Conversation'}`;
228
+ return this.ModalTitle;
145
229
  }
146
- roleOptions = [
230
+ RoleOptions = [
147
231
  { value: 'member', label: 'Member' },
148
232
  { value: 'owner', label: 'Owner' }
149
233
  ];
234
+ /** @deprecated Use {@link RoleOptions}. */
235
+ get roleOptions() {
236
+ return this.RoleOptions;
237
+ }
238
+ /** @deprecated Use {@link RoleOptions}. */
239
+ set roleOptions(value) {
240
+ this.RoleOptions = value;
241
+ }
150
242
  constructor(dialogService) {
151
243
  this.dialogService = dialogService;
152
244
  }
153
245
  ngOnChanges() {
154
- if (this.isVisible && this.conversation) {
246
+ if (this.IsVisible && this.Conversation) {
155
247
  this.loadMembers();
156
248
  }
157
249
  }
158
250
  async loadMembers() {
159
- if (!this.conversation)
251
+ if (!this.Conversation)
160
252
  return;
161
- this.isLoading = true;
162
- this.errorMessage = '';
253
+ this.IsLoading = true;
254
+ this.ErrorMessage = '';
163
255
  try {
164
256
  // TODO: Load from ConversationMembers entity when available
165
257
  // For now, show the owner
166
- this.members = [
258
+ this.Members = [
167
259
  {
168
- id: 'owner-' + this.conversation.ID,
169
- userId: this.conversation.UserID || '',
260
+ id: 'owner-' + this.Conversation.ID,
261
+ userId: this.Conversation.UserID || '',
170
262
  userName: 'Owner',
171
- userEmail: this.currentUser.Email,
263
+ userEmail: this.CurrentUser.Email,
172
264
  role: 'owner',
173
- addedAt: this.conversation.__mj_CreatedAt
265
+ addedAt: this.Conversation.__mj_CreatedAt
174
266
  }
175
267
  ];
176
268
  }
177
269
  catch (error) {
178
270
  console.error('Error loading members:', error);
179
- this.errorMessage = 'Failed to load members';
271
+ this.ErrorMessage = 'Failed to load members';
180
272
  }
181
273
  finally {
182
- this.isLoading = false;
274
+ this.IsLoading = false;
183
275
  }
184
276
  }
185
- async onAddMember() {
186
- const email = this.newMemberEmail.trim();
277
+ async OnAddMember() {
278
+ const email = this.NewMemberEmail.trim();
187
279
  if (!email)
188
280
  return;
189
281
  // Simple email validation
@@ -192,12 +284,12 @@ export class MembersModalComponent {
192
284
  return;
193
285
  }
194
286
  // Check if already a member
195
- if (this.members.some(m => m.userEmail === email)) {
287
+ if (this.Members.some(m => m.userEmail === email)) {
196
288
  await this.dialogService.alert('Already a Member', 'This user is already a member');
197
289
  return;
198
290
  }
199
- this.isLoading = true;
200
- this.errorMessage = '';
291
+ this.IsLoading = true;
292
+ this.ErrorMessage = '';
201
293
  try {
202
294
  // TODO: Create ConversationMember entity when available
203
295
  const newMember = {
@@ -205,23 +297,27 @@ export class MembersModalComponent {
205
297
  userId: 'unknown',
206
298
  userName: email.split('@')[0],
207
299
  userEmail: email,
208
- role: this.newMemberRole,
300
+ role: this.NewMemberRole,
209
301
  addedAt: new Date()
210
302
  };
211
- this.members.push(newMember);
212
- this.newMemberEmail = '';
213
- this.newMemberRole = 'member';
214
- this.membersChanged.emit();
303
+ this.Members.push(newMember);
304
+ this.NewMemberEmail = '';
305
+ this.NewMemberRole = 'member';
306
+ this.MembersChanged.emit();
215
307
  }
216
308
  catch (error) {
217
309
  console.error('Error adding member:', error);
218
- this.errorMessage = 'Failed to add member';
310
+ this.ErrorMessage = 'Failed to add member';
219
311
  }
220
312
  finally {
221
- this.isLoading = false;
313
+ this.IsLoading = false;
222
314
  }
223
315
  }
224
- async onRemoveMember(member) {
316
+ /** @deprecated Use {@link OnAddMember}. */
317
+ async onAddMember() {
318
+ return this.OnAddMember();
319
+ }
320
+ async OnRemoveMember(member) {
225
321
  const confirmed = await this.dialogService.confirm({
226
322
  title: 'Remove Member',
227
323
  message: `Remove ${member.userEmail} from this conversation?`,
@@ -230,33 +326,41 @@ export class MembersModalComponent {
230
326
  });
231
327
  if (!confirmed)
232
328
  return;
233
- this.isLoading = true;
234
- this.errorMessage = '';
329
+ this.IsLoading = true;
330
+ this.ErrorMessage = '';
235
331
  try {
236
332
  // TODO: Delete ConversationMember entity when available
237
- this.members = this.members.filter(m => m.id !== member.id);
238
- this.membersChanged.emit();
333
+ this.Members = this.Members.filter(m => m.id !== member.id);
334
+ this.MembersChanged.emit();
239
335
  }
240
336
  catch (error) {
241
337
  console.error('Error removing member:', error);
242
- this.errorMessage = 'Failed to remove member';
338
+ this.ErrorMessage = 'Failed to remove member';
243
339
  }
244
340
  finally {
245
- this.isLoading = false;
341
+ this.IsLoading = false;
246
342
  }
247
343
  }
248
- onCancel() {
249
- this.cancelled.emit();
344
+ /** @deprecated Use {@link OnRemoveMember}. */
345
+ async onRemoveMember(member) {
346
+ return this.OnRemoveMember(member);
347
+ }
348
+ OnCancel() {
349
+ this.Cancelled.emit();
250
350
  this.resetForm();
251
351
  }
352
+ /** @deprecated Use {@link OnCancel}. */
353
+ onCancel() {
354
+ return this.OnCancel();
355
+ }
252
356
  resetForm() {
253
- this.newMemberEmail = '';
254
- this.newMemberRole = 'member';
255
- this.errorMessage = '';
256
- this.isVisible = false;
357
+ this.NewMemberEmail = '';
358
+ this.NewMemberRole = 'member';
359
+ this.ErrorMessage = '';
360
+ this.IsVisible = false;
257
361
  }
258
362
  static ɵfac = function MembersModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MembersModalComponent)(i0.ɵɵdirectiveInject(i1.DialogService)); };
259
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MembersModalComponent, selectors: [["mj-members-modal"]], inputs: { isVisible: "isVisible", conversation: "conversation", currentUser: "currentUser" }, outputs: { cancelled: "cancelled", membersChanged: "membersChanged" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[3, "Title", "Width", "Height", "Visible"], [3, "Close", "Title", "Width", "Height", "Visible"], [1, "members-modal-content"], [1, "add-member-section"], [1, "add-member-form"], ["type", "text", "placeholder", "Enter email address", 1, "mj-textbox", 2, "flex", "1", 3, "ngModelChange", "ngModel"], [1, "mj-select", 2, "width", "120px", 3, "ngModelChange", "ngModel"], [3, "value"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "members-section"], [1, "members-list"], [1, "loading-indicator"], [1, "error-message"], ["mjButton", "", 3, "click"], ["Icon", "fa-solid fa-user-group", "Title", "No additional members yet", "Size", "compact"], [1, "member-item"], [1, "member-info"], [1, "fas", "fa-user-circle"], [1, "member-details"], [1, "member-name"], [1, "member-email"], [1, "member-controls"], [1, "member-role"], ["title", "Remove member", 1, "btn-remove"], ["title", "Remove member", 1, "btn-remove", 3, "click"], [1, "fas", "fa-times"], ["text", "Loading members...", "size", "medium"]], template: function MembersModalComponent_Template(rf, ctx) { if (rf & 1) {
363
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MembersModalComponent, selectors: [["mj-members-modal"]], inputs: { IsVisible: "IsVisible", isVisible: "isVisible", Conversation: "Conversation", conversation: "conversation", CurrentUser: "CurrentUser", currentUser: "currentUser" }, outputs: { Cancelled: "Cancelled", cancelled: "cancelled", MembersChanged: "MembersChanged", membersChanged: "membersChanged" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[3, "Title", "Width", "Height", "Visible"], [3, "Close", "Title", "Width", "Height", "Visible"], [1, "members-modal-content"], [1, "add-member-section"], [1, "add-member-form"], ["type", "text", "placeholder", "Enter email address", 1, "mj-textbox", 2, "flex", "1", 3, "ngModelChange", "ngModel"], [1, "mj-select", 2, "width", "120px", 3, "ngModelChange", "ngModel"], [3, "value"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "members-section"], [1, "members-list"], [1, "loading-indicator"], [1, "error-message"], ["mjButton", "", 3, "click"], ["Icon", "fa-solid fa-user-group", "Title", "No additional members yet", "Size", "compact"], [1, "member-item"], [1, "member-info"], [1, "fas", "fa-user-circle"], [1, "member-details"], [1, "member-name"], [1, "member-email"], [1, "member-controls"], [1, "member-role"], ["title", "Remove member", 1, "btn-remove"], ["title", "Remove member", 1, "btn-remove", 3, "click"], [1, "fas", "fa-times"], ["text", "Loading members...", "size", "medium"]], template: function MembersModalComponent_Template(rf, ctx) { if (rf & 1) {
260
364
  i0.ɵɵconditionalCreate(0, MembersModalComponent_Conditional_0_Template, 21, 11, "mj-dialog", 0);
261
365
  } if (rf & 2) {
262
366
  i0.ɵɵconditional(ctx.isVisible ? 0 : -1);
@@ -349,14 +453,24 @@ export class MembersModalComponent {
349
453
  </mj-dialog>
350
454
  }
351
455
  `, styles: ["\n .members-modal-content {\n padding: 20px;\n }\n\n h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n }\n\n .add-member-section {\n margin-bottom: 24px;\n }\n\n .add-member-form {\n display: flex;\n gap: 8px;\n }\n\n .members-list {\n border: 1px solid #d9d9d9;\n border-radius: 4px;\n max-height: 300px;\n overflow-y: auto;\n }\n\n .member-item {\n padding: 12px;\n border-bottom: 1px solid #e8e8e8;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .member-item:last-child {\n border-bottom: none;\n }\n\n .member-info {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n }\n\n .member-info i {\n font-size: 32px;\n color: #999;\n }\n\n .member-details {\n display: flex;\n flex-direction: column;\n }\n\n .member-name {\n font-size: 14px;\n font-weight: 500;\n }\n\n .member-email {\n font-size: 12px;\n color: #666;\n }\n\n .member-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .member-role {\n padding: 4px 8px;\n border-radius: 3px;\n font-size: 12px;\n font-weight: 500;\n background: #e3f2fd;\n color: #1976d2;\n }\n\n .member-role.owner {\n background: #fff3e0;\n color: #f57c00;\n }\n\n .btn-remove {\n padding: 6px 8px;\n background: transparent;\n border: none;\n cursor: pointer;\n border-radius: 3px;\n color: #999;\n }\n\n .btn-remove:hover {\n background: #ffebee;\n color: #d32f2f;\n }\n\n .loading-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n padding: 24px;\n color: #666;\n }\n\n .error-message {\n display: block;\n color: #d32f2f;\n font-size: 13px;\n margin-top: 12px;\n padding: 8px 12px;\n background: #ffebee;\n border-radius: 4px;\n }\n\n mj-dialog-actions {\n display: flex;\n justify-content: flex-end;\n padding: 15px 20px;\n border-top: 1px solid #e0e0e0;\n }\n "] }]
352
- }], () => [{ type: i1.DialogService }], { isVisible: [{
456
+ }], () => [{ type: i1.DialogService }], { IsVisible: [{
457
+ type: Input
458
+ }], isVisible: [{
459
+ type: Input
460
+ }], Conversation: [{
353
461
  type: Input
354
462
  }], conversation: [{
355
463
  type: Input
464
+ }], CurrentUser: [{
465
+ type: Input
356
466
  }], currentUser: [{
357
467
  type: Input
468
+ }], Cancelled: [{
469
+ type: Output
358
470
  }], cancelled: [{
359
471
  type: Output
472
+ }], MembersChanged: [{
473
+ type: Output
360
474
  }], membersChanged: [{
361
475
  type: Output
362
476
  }] }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"members-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/members/members-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;;;;;;;;IAwCrD,iCAA+B;IAAA,YAAkB;IAAA,iBAAS;;;IAAlD,uCAAsB;IAAC,cAAkB;IAAlB,qCAAkB;;;IAajD,qCAGmB;;;;IAgBb,kCAGwB;IADtB,8QAAS,gCAAsB,KAAC;IAEhC,wBAA4B;IAC9B,iBAAS;;;IAjBb,AADF,+BAAyB,cACE;IACvB,wBAAkC;IAEhC,AADF,+BAA4B,cACD;IAAA,YAAqB;IAAA,iBAAM;IACpD,+BAA0B;IAAA,YAAsB;IAEpD,AADE,AADkD,iBAAM,EAClD,EACF;IAEJ,AADF,+BAA6B,eACuC;IAChE,aACF;IAAA,iBAAO;IACP,gIAA+B;IASnC,AADE,iBAAM,EACF;;;IAjByB,eAAqB;IAArB,wCAAqB;IACpB,eAAsB;IAAtB,yCAAsB;IAIxB,eAAuC;IAAvC,mDAAuC;IAC/D,cACF;IADE,gFACF;IACA,cAOC;IAPD,sDAOC;;;IA3BT,+BAA0B;IACxB,gIAA4B;IAM5B,yIAuBC;IACH,iBAAM;;;IA9BJ,cAKC;IALD,sDAKC;IACD,cAuBC;IAvBD,6BAuBC;;;IAIH,+BAA+B;IAC7B,iCAAiE;IACnE,iBAAM;;;IAIR,+BAA2B;IACzB,YACF;IAAA,iBAAM;;;IADJ,cACF;IADE,oDACF;;;;IA1EN,oCAKuB;IAArB,4LAAS,iBAAU,KAAC;IAGhB,AADF,AADF,8BAAmC,aACD,SAC1B;IAAA,0BAAU;IAAA,iBAAK;IAEjB,AADF,8BAA6B,eAMR;IAHjB,yTAA4B;IAF9B,iBAKmB;IACnB,iCAGwB;IAFtB,wTAA2B;IAG3B,yGAEC;IACH,iBAAS;IACT,kCAAkF;IAAxB,0LAAS,oBAAa,KAAC;IAC/E,sBACF;IAEJ,AADE,AADE,iBAAS,EACL,EACF;IAEJ,AADF,+BAA6B,UACvB;IAAA,aAAsC;IAAA,iBAAK;IAC/C,wGAAkB;IAkClB,wGAAiB;IAKnB,iBAAM;IACN,wGAAoB;IAKtB,iBAAM;IAEJ,AADF,0CAAmB,kBACqB;IAArB,0LAAS,iBAAU,KAAC;IAAC,sBAAK;IAE/C,AADE,AAD6C,iBAAS,EAClC,EACV;;;IA5EV,AADA,AADA,AADA,yCAAoB,cACP,eACC,iBACE;IAQR,eAA4B;IAA5B,qDAA4B;IAK5B,cAA2B;IAA3B,oDAA2B;IAG3B,cAEC;IAFD,iCAEC;IAEgC,eAAsB;IAAtB,2CAAsB;IAMvD,eAAsC;IAAtC,sEAAsC;IAC1C,cAiCC;IAjCD,6CAiCC;IACD,cAIC;IAJD,4CAIC;IAEH,cAIC;IAJD,+CAIC;;AAuIX,MAAM,OAAO,qBAAqB;IAsBZ;IArBX,SAAS,GAAG,KAAK,CAAC;IAClB,YAAY,CAAwB;IACpC,WAAW,CAAY;IACtB,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;IACrC,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;IAEpD,OAAO,GAAyB,EAAE,CAAC;IACnC,cAAc,GAAG,EAAE,CAAC;IACpB,aAAa,GAAuB,QAAQ,CAAC;IAC7C,SAAS,GAAG,KAAK,CAAC;IAClB,YAAY,GAAG,EAAE,CAAC;IAElB,IAAI,UAAU;QACZ,OAAO,mBAAmB,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,cAAc,EAAE,CAAC;IACxE,CAAC;IAED,WAAW,GAAG;QACZ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;QACpC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;KACnC,CAAC;IAEF,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEpD,WAAW;QACT,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACxC,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAE/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC;YACH,4DAA4D;YAC5D,0BAA0B;YAC1B,IAAI,CAAC,OAAO,GAAG;gBACb;oBACE,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE;oBACnC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,EAAE;oBACtC,QAAQ,EAAE,OAAO;oBACjB,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;oBACjC,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc;iBAC1C;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC;QAC/C,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,0BAA0B;QAC1B,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,EAAE,oCAAoC,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,kBAAkB,EAAE,+BAA+B,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC;YACH,wDAAwD;YACxD,MAAM,SAAS,GAAuB;gBACpC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE;gBACxB,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7B,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,IAAI,CAAC,aAAa;gBACxB,OAAO,EAAE,IAAI,IAAI,EAAE;aACpB,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC;QAC7C,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAA0B;QAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YACjD,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,UAAU,MAAM,CAAC,SAAS,0BAA0B;YAC7D,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC;YACH,wDAAwD;YACxD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC;QAChD,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;+GAtIU,qBAAqB;6DAArB,qBAAqB;YAnN9B,+FAAiB;;YAAjB,wCAkFC;;;iFAiIQ,qBAAqB;cAvNjC,SAAS;6BACI,KAAK,YACP,kBAAkB,YAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoFP;;kBAiIF,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,MAAM;;kBACN,MAAM;;kFALI,qBAAqB","sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MJConversationEntity } from '@memberjunction/core-entities';\nimport { UserInfo, RunView, Metadata } from '@memberjunction/core';\nimport { DialogService } from '../../services/dialog.service';\n\ninterface ConversationMember {\n id: string;\n userId: string;\n userName: string;\n userEmail: string;\n role: 'owner' | 'member';\n addedAt: Date;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-members-modal',\n template: `\n @if (isVisible) {\n <mj-dialog\n [Title]=\"modalTitle\"\n [Width]=\"600\"\n [Height]=\"500\"\n [Visible]=\"true\"\n (Close)=\"onCancel()\">\n <div class=\"members-modal-content\">\n <div class=\"add-member-section\">\n <h4>Add Member</h4>\n <div class=\"add-member-form\">\n <input\n type=\"text\"\n [(ngModel)]=\"newMemberEmail\"\n placeholder=\"Enter email address\"\n class=\"mj-textbox\"\n style=\"flex: 1;\">\n <select\n [(ngModel)]=\"newMemberRole\"\n class=\"mj-select\"\n style=\"width: 120px;\">\n @for (option of roleOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n <button mjButton variant=\"primary\" [disabled]=\"isLoading\" (click)=\"onAddMember()\">\n Add\n </button>\n </div>\n </div>\n <div class=\"members-section\">\n <h4>Current Members ({{ members.length }})</h4>\n @if (!isLoading) {\n <div class=\"members-list\">\n @if (members.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-user-group\"\n Title=\"No additional members yet\"\n Size=\"compact\" />\n }\n @for (member of members; track member) {\n <div class=\"member-item\">\n <div class=\"member-info\">\n <i class=\"fas fa-user-circle\"></i>\n <div class=\"member-details\">\n <div class=\"member-name\">{{ member.userName }}</div>\n <div class=\"member-email\">{{ member.userEmail }}</div>\n </div>\n </div>\n <div class=\"member-controls\">\n <span class=\"member-role\" [class.owner]=\"member.role === 'owner'\">\n {{ member.role === 'owner' ? 'Owner' : 'Member' }}\n </span>\n @if (member.role !== 'owner') {\n <button\n class=\"btn-remove\"\n (click)=\"onRemoveMember(member)\"\n title=\"Remove member\">\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n @if (isLoading) {\n <div class=\"loading-indicator\">\n <mj-loading text=\"Loading members...\" size=\"medium\"></mj-loading>\n </div>\n }\n </div>\n @if (errorMessage) {\n <div class=\"error-message\">\n {{ errorMessage }}\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"onCancel()\">Close</button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .members-modal-content {\n padding: 20px;\n }\n\n h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n }\n\n .add-member-section {\n margin-bottom: 24px;\n }\n\n .add-member-form {\n display: flex;\n gap: 8px;\n }\n\n .members-list {\n border: 1px solid #d9d9d9;\n border-radius: 4px;\n max-height: 300px;\n overflow-y: auto;\n }\n\n .member-item {\n padding: 12px;\n border-bottom: 1px solid #e8e8e8;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .member-item:last-child {\n border-bottom: none;\n }\n\n .member-info {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n }\n\n .member-info i {\n font-size: 32px;\n color: #999;\n }\n\n .member-details {\n display: flex;\n flex-direction: column;\n }\n\n .member-name {\n font-size: 14px;\n font-weight: 500;\n }\n\n .member-email {\n font-size: 12px;\n color: #666;\n }\n\n .member-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .member-role {\n padding: 4px 8px;\n border-radius: 3px;\n font-size: 12px;\n font-weight: 500;\n background: #e3f2fd;\n color: #1976d2;\n }\n\n .member-role.owner {\n background: #fff3e0;\n color: #f57c00;\n }\n\n .btn-remove {\n padding: 6px 8px;\n background: transparent;\n border: none;\n cursor: pointer;\n border-radius: 3px;\n color: #999;\n }\n\n .btn-remove:hover {\n background: #ffebee;\n color: #d32f2f;\n }\n\n .loading-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n padding: 24px;\n color: #666;\n }\n\n .error-message {\n display: block;\n color: #d32f2f;\n font-size: 13px;\n margin-top: 12px;\n padding: 8px 12px;\n background: #ffebee;\n border-radius: 4px;\n }\n\n mj-dialog-actions {\n display: flex;\n justify-content: flex-end;\n padding: 15px 20px;\n border-top: 1px solid #e0e0e0;\n }\n `]\n})\nexport class MembersModalComponent {\n @Input() isVisible = false;\n @Input() conversation?: MJConversationEntity;\n @Input() currentUser!: UserInfo;\n @Output() cancelled = new EventEmitter<void>();\n @Output() membersChanged = new EventEmitter<void>();\n\n members: ConversationMember[] = [];\n newMemberEmail = '';\n newMemberRole: 'member' | 'owner' = 'member';\n isLoading = false;\n errorMessage = '';\n\n get modalTitle(): string {\n return `Manage Members: ${this.conversation?.Name || 'Conversation'}`;\n }\n\n roleOptions = [\n { value: 'member', label: 'Member' },\n { value: 'owner', label: 'Owner' }\n ];\n\n constructor(private dialogService: DialogService) {}\n\n ngOnChanges(): void {\n if (this.isVisible && this.conversation) {\n this.loadMembers();\n }\n }\n\n private async loadMembers(): Promise<void> {\n if (!this.conversation) return;\n\n this.isLoading = true;\n this.errorMessage = '';\n\n try {\n // TODO: Load from ConversationMembers entity when available\n // For now, show the owner\n this.members = [\n {\n id: 'owner-' + this.conversation.ID,\n userId: this.conversation.UserID || '',\n userName: 'Owner',\n userEmail: this.currentUser.Email,\n role: 'owner',\n addedAt: this.conversation.__mj_CreatedAt\n }\n ];\n } catch (error) {\n console.error('Error loading members:', error);\n this.errorMessage = 'Failed to load members';\n } finally {\n this.isLoading = false;\n }\n }\n\n async onAddMember(): Promise<void> {\n const email = this.newMemberEmail.trim();\n if (!email) return;\n\n // Simple email validation\n if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)) {\n await this.dialogService.alert('Invalid Email', 'Please enter a valid email address');\n return;\n }\n\n // Check if already a member\n if (this.members.some(m => m.userEmail === email)) {\n await this.dialogService.alert('Already a Member', 'This user is already a member');\n return;\n }\n\n this.isLoading = true;\n this.errorMessage = '';\n\n try {\n // TODO: Create ConversationMember entity when available\n const newMember: ConversationMember = {\n id: 'temp-' + Date.now(),\n userId: 'unknown',\n userName: email.split('@')[0],\n userEmail: email,\n role: this.newMemberRole,\n addedAt: new Date()\n };\n\n this.members.push(newMember);\n this.newMemberEmail = '';\n this.newMemberRole = 'member';\n this.membersChanged.emit();\n } catch (error) {\n console.error('Error adding member:', error);\n this.errorMessage = 'Failed to add member';\n } finally {\n this.isLoading = false;\n }\n }\n\n async onRemoveMember(member: ConversationMember): Promise<void> {\n const confirmed = await this.dialogService.confirm({\n title: 'Remove Member',\n message: `Remove ${member.userEmail} from this conversation?`,\n okText: 'Remove',\n cancelText: 'Cancel'\n });\n\n if (!confirmed) return;\n\n this.isLoading = true;\n this.errorMessage = '';\n\n try {\n // TODO: Delete ConversationMember entity when available\n this.members = this.members.filter(m => m.id !== member.id);\n this.membersChanged.emit();\n } catch (error) {\n console.error('Error removing member:', error);\n this.errorMessage = 'Failed to remove member';\n } finally {\n this.isLoading = false;\n }\n }\n\n onCancel(): void {\n this.cancelled.emit();\n this.resetForm();\n }\n\n private resetForm(): void {\n this.newMemberEmail = '';\n this.newMemberRole = 'member';\n this.errorMessage = '';\n this.isVisible = false;\n }\n}\n"]}
1
+ {"version":3,"file":"members-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/members/members-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MJConversationEntity } from '@memberjunction/core-entities';\nimport { UserInfo, RunView, Metadata } from '@memberjunction/core';\nimport { DialogService } from '../../services/dialog.service';\n\ninterface ConversationMember {\n id: string;\n userId: string;\n userName: string;\n userEmail: string;\n role: 'owner' | 'member';\n addedAt: Date;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-members-modal',\n template: `\n @if (isVisible) {\n <mj-dialog\n [Title]=\"modalTitle\"\n [Width]=\"600\"\n [Height]=\"500\"\n [Visible]=\"true\"\n (Close)=\"onCancel()\">\n <div class=\"members-modal-content\">\n <div class=\"add-member-section\">\n <h4>Add Member</h4>\n <div class=\"add-member-form\">\n <input\n type=\"text\"\n [(ngModel)]=\"newMemberEmail\"\n placeholder=\"Enter email address\"\n class=\"mj-textbox\"\n style=\"flex: 1;\">\n <select\n [(ngModel)]=\"newMemberRole\"\n class=\"mj-select\"\n style=\"width: 120px;\">\n @for (option of roleOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n <button mjButton variant=\"primary\" [disabled]=\"isLoading\" (click)=\"onAddMember()\">\n Add\n </button>\n </div>\n </div>\n <div class=\"members-section\">\n <h4>Current Members ({{ members.length }})</h4>\n @if (!isLoading) {\n <div class=\"members-list\">\n @if (members.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-user-group\"\n Title=\"No additional members yet\"\n Size=\"compact\" />\n }\n @for (member of members; track member) {\n <div class=\"member-item\">\n <div class=\"member-info\">\n <i class=\"fas fa-user-circle\"></i>\n <div class=\"member-details\">\n <div class=\"member-name\">{{ member.userName }}</div>\n <div class=\"member-email\">{{ member.userEmail }}</div>\n </div>\n </div>\n <div class=\"member-controls\">\n <span class=\"member-role\" [class.owner]=\"member.role === 'owner'\">\n {{ member.role === 'owner' ? 'Owner' : 'Member' }}\n </span>\n @if (member.role !== 'owner') {\n <button\n class=\"btn-remove\"\n (click)=\"onRemoveMember(member)\"\n title=\"Remove member\">\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n @if (isLoading) {\n <div class=\"loading-indicator\">\n <mj-loading text=\"Loading members...\" size=\"medium\"></mj-loading>\n </div>\n }\n </div>\n @if (errorMessage) {\n <div class=\"error-message\">\n {{ errorMessage }}\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"onCancel()\">Close</button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .members-modal-content {\n padding: 20px;\n }\n\n h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n }\n\n .add-member-section {\n margin-bottom: 24px;\n }\n\n .add-member-form {\n display: flex;\n gap: 8px;\n }\n\n .members-list {\n border: 1px solid #d9d9d9;\n border-radius: 4px;\n max-height: 300px;\n overflow-y: auto;\n }\n\n .member-item {\n padding: 12px;\n border-bottom: 1px solid #e8e8e8;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .member-item:last-child {\n border-bottom: none;\n }\n\n .member-info {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n }\n\n .member-info i {\n font-size: 32px;\n color: #999;\n }\n\n .member-details {\n display: flex;\n flex-direction: column;\n }\n\n .member-name {\n font-size: 14px;\n font-weight: 500;\n }\n\n .member-email {\n font-size: 12px;\n color: #666;\n }\n\n .member-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .member-role {\n padding: 4px 8px;\n border-radius: 3px;\n font-size: 12px;\n font-weight: 500;\n background: #e3f2fd;\n color: #1976d2;\n }\n\n .member-role.owner {\n background: #fff3e0;\n color: #f57c00;\n }\n\n .btn-remove {\n padding: 6px 8px;\n background: transparent;\n border: none;\n cursor: pointer;\n border-radius: 3px;\n color: #999;\n }\n\n .btn-remove:hover {\n background: #ffebee;\n color: #d32f2f;\n }\n\n .loading-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n padding: 24px;\n color: #666;\n }\n\n .error-message {\n display: block;\n color: #d32f2f;\n font-size: 13px;\n margin-top: 12px;\n padding: 8px 12px;\n background: #ffebee;\n border-radius: 4px;\n }\n\n mj-dialog-actions {\n display: flex;\n justify-content: flex-end;\n padding: 15px 20px;\n border-top: 1px solid #e0e0e0;\n }\n `]\n})\nexport class MembersModalComponent {\n @Input() IsVisible = false;\n\n /** @deprecated Use {@link IsVisible}. */\n @Input() set isVisible(value: MembersModalComponent['IsVisible']) {\n this.IsVisible = value;\n }\n /** @deprecated Use {@link IsVisible}. */\n get isVisible(): MembersModalComponent['IsVisible'] {\n return this.IsVisible;\n }\n @Input() Conversation?: MJConversationEntity;\n\n /** @deprecated Use {@link Conversation}. */\n @Input() set conversation(value: MJConversationEntity | undefined) {\n this.Conversation = value;\n }\n /** @deprecated Use {@link Conversation}. */\n get conversation(): MJConversationEntity | undefined {\n return this.Conversation;\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 @Output() Cancelled = new EventEmitter<void>();\n\n /**\n * @deprecated Use {@link Cancelled}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (cancelled) keeps working. Must stay AFTER Cancelled: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() cancelled = this.Cancelled;\n @Output() MembersChanged = new EventEmitter<void>();\n\n /**\n * @deprecated Use {@link MembersChanged}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (membersChanged) keeps working. Must stay AFTER MembersChanged: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() membersChanged = this.MembersChanged;\n\n Members: ConversationMember[] = [];\n\n /** @deprecated Use {@link Members}. */\n get members(): ConversationMember[] {\n return this.Members;\n }\n /** @deprecated Use {@link Members}. */\n set members(value: ConversationMember[]) {\n this.Members = value;\n }\n NewMemberEmail = '';\n\n /** @deprecated Use {@link NewMemberEmail}. */\n get newMemberEmail() {\n return this.NewMemberEmail;\n }\n /** @deprecated Use {@link NewMemberEmail}. */\n set newMemberEmail(value) {\n this.NewMemberEmail = value;\n }\n NewMemberRole: 'member' | 'owner' = 'member';\n\n /** @deprecated Use {@link NewMemberRole}. */\n get newMemberRole(): 'member' | 'owner' {\n return this.NewMemberRole;\n }\n /** @deprecated Use {@link NewMemberRole}. */\n set newMemberRole(value: 'member' | 'owner') {\n this.NewMemberRole = value;\n }\n IsLoading = false;\n\n /** @deprecated Use {@link IsLoading}. */\n get isLoading() {\n return this.IsLoading;\n }\n /** @deprecated Use {@link IsLoading}. */\n set isLoading(value) {\n this.IsLoading = value;\n }\n ErrorMessage = '';\n\n /** @deprecated Use {@link ErrorMessage}. */\n get errorMessage() {\n return this.ErrorMessage;\n }\n /** @deprecated Use {@link ErrorMessage}. */\n set errorMessage(value) {\n this.ErrorMessage = value;\n }\n\n get ModalTitle(): string {\n return `Manage Members: ${this.Conversation?.Name || 'Conversation'}`;\n }\n\n /** @deprecated Use {@link ModalTitle}. */\n get modalTitle(): string {\n return this.ModalTitle;\n }\n\n RoleOptions = [\n { value: 'member', label: 'Member' },\n { value: 'owner', label: 'Owner' }\n ];\n\n /** @deprecated Use {@link RoleOptions}. */\n get roleOptions() {\n return this.RoleOptions;\n }\n /** @deprecated Use {@link RoleOptions}. */\n set roleOptions(value) {\n this.RoleOptions = value;\n }\n\n constructor(private dialogService: DialogService) {}\n\n ngOnChanges(): void {\n if (this.IsVisible && this.Conversation) {\n this.loadMembers();\n }\n }\n\n private async loadMembers(): Promise<void> {\n if (!this.Conversation) return;\n\n this.IsLoading = true;\n this.ErrorMessage = '';\n\n try {\n // TODO: Load from ConversationMembers entity when available\n // For now, show the owner\n this.Members = [\n {\n id: 'owner-' + this.Conversation.ID,\n userId: this.Conversation.UserID || '',\n userName: 'Owner',\n userEmail: this.CurrentUser.Email,\n role: 'owner',\n addedAt: this.Conversation.__mj_CreatedAt\n }\n ];\n } catch (error) {\n console.error('Error loading members:', error);\n this.ErrorMessage = 'Failed to load members';\n } finally {\n this.IsLoading = false;\n }\n }\n\n async OnAddMember(): Promise<void> {\n const email = this.NewMemberEmail.trim();\n if (!email) return;\n\n // Simple email validation\n if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)) {\n await this.dialogService.alert('Invalid Email', 'Please enter a valid email address');\n return;\n }\n\n // Check if already a member\n if (this.Members.some(m => m.userEmail === email)) {\n await this.dialogService.alert('Already a Member', 'This user is already a member');\n return;\n }\n\n this.IsLoading = true;\n this.ErrorMessage = '';\n\n try {\n // TODO: Create ConversationMember entity when available\n const newMember: ConversationMember = {\n id: 'temp-' + Date.now(),\n userId: 'unknown',\n userName: email.split('@')[0],\n userEmail: email,\n role: this.NewMemberRole,\n addedAt: new Date()\n };\n\n this.Members.push(newMember);\n this.NewMemberEmail = '';\n this.NewMemberRole = 'member';\n this.MembersChanged.emit();\n } catch (error) {\n console.error('Error adding member:', error);\n this.ErrorMessage = 'Failed to add member';\n } finally {\n this.IsLoading = false;\n }\n }\n\n /** @deprecated Use {@link OnAddMember}. */\n async onAddMember(): Promise<void> {\n return this.OnAddMember();\n }\n\n async OnRemoveMember(member: ConversationMember): Promise<void> {\n const confirmed = await this.dialogService.confirm({\n title: 'Remove Member',\n message: `Remove ${member.userEmail} from this conversation?`,\n okText: 'Remove',\n cancelText: 'Cancel'\n });\n\n if (!confirmed) return;\n\n this.IsLoading = true;\n this.ErrorMessage = '';\n\n try {\n // TODO: Delete ConversationMember entity when available\n this.Members = this.Members.filter(m => m.id !== member.id);\n this.MembersChanged.emit();\n } catch (error) {\n console.error('Error removing member:', error);\n this.ErrorMessage = 'Failed to remove member';\n } finally {\n this.IsLoading = false;\n }\n }\n\n /** @deprecated Use {@link OnRemoveMember}. */\n async onRemoveMember(member: ConversationMember): Promise<void> {\n return this.OnRemoveMember(member);\n }\n\n OnCancel(): void {\n this.Cancelled.emit();\n this.resetForm();\n }\n\n /** @deprecated Use {@link OnCancel}. */\n onCancel(): void {\n return this.OnCancel();\n }\n\n private resetForm(): void {\n this.NewMemberEmail = '';\n this.NewMemberRole = 'member';\n this.ErrorMessage = '';\n this.IsVisible = false;\n }\n}\n"]}
@@ -6,28 +6,72 @@ import * as i0 from "@angular/core";
6
6
  * These are actions the user can trigger after an agent completes a task
7
7
  */
8
8
  export declare class ActionableCommandsComponent {
9
- commands: ActionableCommand[];
10
- disabled: boolean;
11
- isLastMessage: boolean;
12
- isConversationOwner: boolean;
9
+ Commands: ActionableCommand[];
10
+ /** @deprecated Use {@link Commands}. */
11
+ set commands(value: ActionableCommand[]);
12
+ /** @deprecated Use {@link Commands}. */
13
+ get commands(): ActionableCommand[];
14
+ Disabled: boolean;
15
+ /** @deprecated Use {@link Disabled}. */
16
+ set disabled(value: boolean);
17
+ /** @deprecated Use {@link Disabled}. */
18
+ get disabled(): boolean;
19
+ IsLastMessage: boolean;
20
+ /** @deprecated Use {@link IsLastMessage}. */
21
+ set isLastMessage(value: boolean);
22
+ /** @deprecated Use {@link IsLastMessage}. */
23
+ get isLastMessage(): boolean;
24
+ IsConversationOwner: boolean;
25
+ /** @deprecated Use {@link IsConversationOwner}. */
26
+ set isConversationOwner(value: boolean);
27
+ /** @deprecated Use {@link IsConversationOwner}. */
28
+ get isConversationOwner(): boolean;
29
+ CommandExecuted: EventEmitter<ActionableCommand>;
30
+ /**
31
+ * @deprecated Use {@link CommandExecuted}.
32
+ *
33
+ * The same emitter under the old binding name, so a template still binding
34
+ * (commandExecuted) keeps working. Must stay AFTER CommandExecuted: class fields
35
+ * initialise in order, and the other way round this captures undefined.
36
+ */
13
37
  commandExecuted: EventEmitter<ActionableCommand>;
14
38
  /**
15
39
  * Check if component should be visible
16
40
  */
41
+ get IsVisible(): boolean;
42
+ /** @deprecated Use {@link IsVisible}. */
17
43
  get isVisible(): boolean;
18
44
  /**
19
45
  * Handle command button click
20
46
  */
47
+ OnCommandClick(command: ActionableCommand): void;
48
+ /** @deprecated Use {@link OnCommandClick}. */
21
49
  onCommandClick(command: ActionableCommand): void;
50
+ /**
51
+ * Recipients to show BESIDE a compose:email button, or null for any other command.
52
+ *
53
+ * SECURITY, not decoration. The button renders only the agent-authored `label`, so without this
54
+ * the user cannot see who a draft is addressed to until their mail client is already open and
55
+ * populated. An agent influenced by injected content in retrieved material could pair a benign
56
+ * label ("Open draft in Mail") with an attacker's address and the conversation's context as the
57
+ * body; showing the address is what lets the user notice before they send from their real
58
+ * mailbox. Empty recipients read as "no recipient" rather than rendering nothing, so an address
59
+ * the agent never supplied cannot be mistaken for one it did.
60
+ */
61
+ ComposeEmailRecipients(command: ActionableCommand): string | null;
22
62
  /**
23
63
  * Get button variant based on command type
24
64
  */
65
+ GetButtonVariant(command: ActionableCommand): 'primary' | 'secondary' | 'outline' | 'flat';
66
+ /** @deprecated Use {@link GetButtonVariant}. */
25
67
  getButtonVariant(command: ActionableCommand): 'primary' | 'secondary' | 'outline' | 'flat';
26
68
  /**
27
69
  * Track by function for commands list
28
70
  */
71
+ TrackByCommand(index: number, command: ActionableCommand): string;
72
+ /** @deprecated Use {@link TrackByCommand}. */
29
73
  trackByCommand(index: number, command: ActionableCommand): string;
30
74
  static ɵfac: i0.ɵɵFactoryDeclaration<ActionableCommandsComponent, never>;
31
- static ɵcmp: i0.ɵɵComponentDeclaration<ActionableCommandsComponent, "mj-actionable-commands", never, { "commands": { "alias": "commands"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "isLastMessage": { "alias": "isLastMessage"; "required": false; }; "isConversationOwner": { "alias": "isConversationOwner"; "required": false; }; }, { "commandExecuted": "commandExecuted"; }, never, never, false, never>;
75
+ static ɵcmp: i0.ɵɵComponentDeclaration<ActionableCommandsComponent, "mj-actionable-commands", never, { "Commands": { "alias": "Commands"; "required": false; }; "commands": { "alias": "commands"; "required": false; }; "Disabled": { "alias": "Disabled"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "IsLastMessage": { "alias": "IsLastMessage"; "required": false; }; "isLastMessage": { "alias": "isLastMessage"; "required": false; }; "IsConversationOwner": { "alias": "IsConversationOwner"; "required": false; }; "isConversationOwner": { "alias": "isConversationOwner"; "required": false; }; }, { "CommandExecuted": "CommandExecuted"; "commandExecuted": "commandExecuted"; }, never, never, false, never>;
32
76
  }
33
77
  //# sourceMappingURL=actionable-commands.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"actionable-commands.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/message/actionable-commands.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;;AAEjE;;;GAGG;AACH,qBAMa,2BAA2B;IAC7B,QAAQ,EAAE,iBAAiB,EAAE,CAAM;IACnC,QAAQ,EAAE,OAAO,CAAS;IAC1B,aAAa,EAAE,OAAO,CAAS;IAC/B,mBAAmB,EAAE,OAAO,CAAS;IAEpC,eAAe,kCAAyC;IAElE;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAO9B;IAED;;OAEG;IACI,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAMvD;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM;IASjG;;OAEG;IACI,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;yCA5C7D,2BAA2B;2CAA3B,2BAA2B;CA+CvC"}
1
+ {"version":3,"file":"actionable-commands.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/message/actionable-commands.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;;AAEjE;;;GAGG;AACH,qBAMa,2BAA2B;IAC7B,QAAQ,EAAE,iBAAiB,EAAE,CAAM;IAE5C,wCAAwC;IACxC,IAAa,QAAQ,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAE/C;IACD,wCAAwC;IACxC,IAAI,QAAQ,IAAI,iBAAiB,EAAE,CAElC;IACQ,QAAQ,EAAE,OAAO,CAAS;IAEnC,wCAAwC;IACxC,IAAa,QAAQ,CAAC,KAAK,EAAE,OAAO,EAEnC;IACD,wCAAwC;IACxC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACQ,aAAa,EAAE,OAAO,CAAS;IAExC,6CAA6C;IAC7C,IAAa,aAAa,CAAC,KAAK,EAAE,OAAO,EAExC;IACD,6CAA6C;IAC7C,IAAI,aAAa,IAAI,OAAO,CAE3B;IACQ,mBAAmB,EAAE,OAAO,CAAS;IAE9C,mDAAmD;IACnD,IAAa,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAE9C;IACD,mDAAmD;IACnD,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAES,eAAe,kCAAyC;IAElE;;;;;;OAMG;IACO,eAAe,kCAAwB;IAEjD;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAO9B;IAED,yCAAyC;IACzC,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;OAEG;IACI,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAMvD,8CAA8C;IACvC,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAIvD;;;;;;;;;;OAUG;IACI,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI;IAiBxE;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM;IAUjG,gDAAgD;IACzC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM;IAIjG;;OAEG;IACI,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;IAIxE,8CAA8C;IACvC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;yCA1I7D,2BAA2B;2CAA3B,2BAA2B;CA6IvC"}