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

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 (343) hide show
  1. package/README.md +35 -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 +1090 -123
  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 +2399 -706
  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 +40 -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 +72 -14
  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 +37 -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 +82 -16
  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 +549 -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 +1250 -421
  113. package/dist/lib/components/message/message-input.component.js.map +1 -1
  114. package/dist/lib/components/message/message-item.component.d.ts +411 -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 +896 -222
  117. package/dist/lib/components/message/message-item.component.js.map +1 -1
  118. package/dist/lib/components/message/message-list.component.d.ts +288 -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 +561 -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 +887 -291
  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 +103 -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 +26 -4
  271. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  272. package/dist/lib/services/conversation-agent.service.js +57 -18
  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-streaming.service.d.ts +22 -0
  279. package/dist/lib/services/conversation-streaming.service.d.ts.map +1 -1
  280. package/dist/lib/services/conversation-streaming.service.js +50 -10
  281. package/dist/lib/services/conversation-streaming.service.js.map +1 -1
  282. package/dist/lib/services/data-cache.service.d.ts +31 -0
  283. package/dist/lib/services/data-cache.service.d.ts.map +1 -1
  284. package/dist/lib/services/data-cache.service.js +71 -15
  285. package/dist/lib/services/data-cache.service.js.map +1 -1
  286. package/dist/lib/services/dialog.service.d.ts +13 -0
  287. package/dist/lib/services/dialog.service.d.ts.map +1 -1
  288. package/dist/lib/services/dialog.service.js +25 -5
  289. package/dist/lib/services/dialog.service.js.map +1 -1
  290. package/dist/lib/services/export.service.d.ts +2 -0
  291. package/dist/lib/services/export.service.d.ts.map +1 -1
  292. package/dist/lib/services/export.service.js +5 -1
  293. package/dist/lib/services/export.service.js.map +1 -1
  294. package/dist/lib/services/mention-parser.service.d.ts +10 -0
  295. package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
  296. package/dist/lib/services/mention-parser.service.js +25 -5
  297. package/dist/lib/services/mention-parser.service.js.map +1 -1
  298. package/dist/lib/services/notification.service.d.ts +54 -6
  299. package/dist/lib/services/notification.service.d.ts.map +1 -1
  300. package/dist/lib/services/notification.service.js +123 -27
  301. package/dist/lib/services/notification.service.js.map +1 -1
  302. package/dist/lib/services/realtime-audio-recorder.d.ts +4 -4
  303. package/dist/lib/services/realtime-audio-recorder.js +12 -12
  304. package/dist/lib/services/realtime-audio-recorder.js.map +1 -1
  305. package/dist/lib/services/realtime-pcm-wav.d.ts +4 -0
  306. package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -1
  307. package/dist/lib/services/realtime-pcm-wav.js +10 -2
  308. package/dist/lib/services/realtime-pcm-wav.js.map +1 -1
  309. package/dist/lib/services/search.service.d.ts +42 -9
  310. package/dist/lib/services/search.service.d.ts.map +1 -1
  311. package/dist/lib/services/search.service.js +103 -23
  312. package/dist/lib/services/search.service.js.map +1 -1
  313. package/dist/lib/services/toast.service.d.ts +19 -1
  314. package/dist/lib/services/toast.service.d.ts.map +1 -1
  315. package/dist/lib/services/toast.service.js +45 -9
  316. package/dist/lib/services/toast.service.js.map +1 -1
  317. package/dist/lib/services/ui-command-handler.service.d.ts +16 -2
  318. package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
  319. package/dist/lib/services/ui-command-handler.service.js +36 -8
  320. package/dist/lib/services/ui-command-handler.service.js.map +1 -1
  321. package/dist/lib/utils/agent-artifact-summary.d.ts +2 -2
  322. package/dist/lib/utils/agent-artifact-summary.js +3 -3
  323. package/dist/lib/utils/agent-artifact-summary.js.map +1 -1
  324. package/dist/lib/utils/agent-turn-routing.d.ts +69 -0
  325. package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -0
  326. package/dist/lib/utils/agent-turn-routing.js +96 -0
  327. package/dist/lib/utils/agent-turn-routing.js.map +1 -0
  328. package/dist/lib/utils/artifact-panel-action.d.ts +15 -4
  329. package/dist/lib/utils/artifact-panel-action.d.ts.map +1 -1
  330. package/dist/lib/utils/artifact-panel-action.js +10 -2
  331. package/dist/lib/utils/artifact-panel-action.js.map +1 -1
  332. package/dist/lib/utils/distinct-artifacts.d.ts +2 -0
  333. package/dist/lib/utils/distinct-artifacts.d.ts.map +1 -1
  334. package/dist/lib/utils/distinct-artifacts.js +5 -1
  335. package/dist/lib/utils/distinct-artifacts.js.map +1 -1
  336. package/dist/lib/utils/plan-mode-preference.d.ts +2 -2
  337. package/dist/lib/utils/plan-mode-preference.js +6 -6
  338. package/dist/lib/utils/plan-mode-preference.js.map +1 -1
  339. package/dist/public-api.d.ts +3 -0
  340. package/dist/public-api.d.ts.map +1 -1
  341. package/dist/public-api.js +3 -0
  342. package/dist/public-api.js.map +1 -1
  343. package/package.json +32 -32
@@ -276,27 +276,99 @@ export class ArtifactShareModalComponent {
276
276
  permissionService;
277
277
  cdr;
278
278
  confirmService;
279
- isOpen = false;
280
- artifact = null;
281
- currentUser;
282
- saved = new EventEmitter();
279
+ IsOpen = false;
280
+ /** @deprecated Use {@link IsOpen}. */
281
+ set isOpen(value) {
282
+ this.IsOpen = value;
283
+ }
284
+ /** @deprecated Use {@link IsOpen}. */
285
+ get isOpen() {
286
+ return this.IsOpen;
287
+ }
288
+ Artifact = null;
289
+ /** @deprecated Use {@link Artifact}. */
290
+ set artifact(value) {
291
+ this.Artifact = value;
292
+ }
293
+ /** @deprecated Use {@link Artifact}. */
294
+ get artifact() {
295
+ return this.Artifact;
296
+ }
297
+ CurrentUser;
298
+ /** @deprecated Use {@link CurrentUser}. */
299
+ set currentUser(value) {
300
+ this.CurrentUser = value;
301
+ }
302
+ /** @deprecated Use {@link CurrentUser}. */
303
+ get currentUser() {
304
+ return this.CurrentUser;
305
+ }
306
+ Saved = new EventEmitter();
307
+ /**
308
+ * @deprecated Use {@link Saved}.
309
+ *
310
+ * The same emitter under the old binding name, so a template still binding
311
+ * (saved) keeps working. Must stay AFTER Saved: class fields
312
+ * initialise in order, and the other way round this captures undefined.
313
+ */
314
+ saved = this.Saved;
283
315
  cancelled = new EventEmitter();
284
- permissions = [];
285
- selectedUser = null;
286
- availablePermissions = [];
287
- canModifyPermissions = false;
288
- newPermissions = {
316
+ Permissions = [];
317
+ /** @deprecated Use {@link Permissions}. */
318
+ get permissions() {
319
+ return this.Permissions;
320
+ }
321
+ /** @deprecated Use {@link Permissions}. */
322
+ set permissions(value) {
323
+ this.Permissions = value;
324
+ }
325
+ SelectedUser = null;
326
+ /** @deprecated Use {@link SelectedUser}. */
327
+ get selectedUser() {
328
+ return this.SelectedUser;
329
+ }
330
+ /** @deprecated Use {@link SelectedUser}. */
331
+ set selectedUser(value) {
332
+ this.SelectedUser = value;
333
+ }
334
+ AvailablePermissions = [];
335
+ /** @deprecated Use {@link AvailablePermissions}. */
336
+ get availablePermissions() {
337
+ return this.AvailablePermissions;
338
+ }
339
+ /** @deprecated Use {@link AvailablePermissions}. */
340
+ set availablePermissions(value) {
341
+ this.AvailablePermissions = value;
342
+ }
343
+ CanModifyPermissions = false;
344
+ /** @deprecated Use {@link CanModifyPermissions}. */
345
+ get canModifyPermissions() {
346
+ return this.CanModifyPermissions;
347
+ }
348
+ /** @deprecated Use {@link CanModifyPermissions}. */
349
+ set canModifyPermissions(value) {
350
+ this.CanModifyPermissions = value;
351
+ }
352
+ NewPermissions = {
289
353
  canRead: true,
290
354
  canShare: false,
291
355
  canEdit: false
292
356
  };
357
+ /** @deprecated Use {@link NewPermissions}. */
358
+ get newPermissions() {
359
+ return this.NewPermissions;
360
+ }
361
+ /** @deprecated Use {@link NewPermissions}. */
362
+ set newPermissions(value) {
363
+ this.NewPermissions = value;
364
+ }
293
365
  constructor(permissionService, cdr, confirmService) {
294
366
  this.permissionService = permissionService;
295
367
  this.cdr = cdr;
296
368
  this.confirmService = confirmService;
297
369
  }
298
370
  async ngOnInit() {
299
- if (this.artifact) {
371
+ if (this.Artifact) {
300
372
  await this.loadPermissions();
301
373
  await this.updateAvailablePermissions();
302
374
  }
@@ -305,16 +377,16 @@ export class ArtifactShareModalComponent {
305
377
  // Reload permissions when modal opens or artifact changes
306
378
  const modalOpened = changes['isOpen']?.currentValue === true && changes['isOpen']?.previousValue === false;
307
379
  const artifactChanged = changes['artifact'] && !changes['artifact'].isFirstChange();
308
- if ((modalOpened || artifactChanged) && this.artifact) {
380
+ if ((modalOpened || artifactChanged) && this.Artifact) {
309
381
  await this.loadPermissions();
310
382
  await this.updateAvailablePermissions();
311
383
  }
312
384
  }
313
385
  async loadPermissions() {
314
- if (!this.artifact)
386
+ if (!this.Artifact)
315
387
  return;
316
- const perms = await this.permissionService.loadPermissions(this.artifact.ID, this.currentUser);
317
- this.permissions = perms.map(p => ({
388
+ const perms = await this.permissionService.loadPermissions(this.Artifact.ID, this.CurrentUser);
389
+ this.Permissions = perms.map(p => ({
318
390
  ...p,
319
391
  isEditing: false,
320
392
  editingPermissions: {
@@ -326,84 +398,104 @@ export class ArtifactShareModalComponent {
326
398
  this.cdr.detectChanges();
327
399
  }
328
400
  async updateAvailablePermissions() {
329
- if (!this.artifact)
401
+ if (!this.Artifact)
330
402
  return;
331
403
  // Check if current user is owner
332
- const isOwner = await this.permissionService.isOwner(this.artifact.ID, this.currentUser.ID, this.currentUser);
404
+ const isOwner = await this.permissionService.isOwner(this.Artifact.ID, this.CurrentUser.ID, this.CurrentUser);
333
405
  // Check if user has share permission
334
- const hasSharePermission = await this.permissionService.checkPermission(this.artifact.ID, this.currentUser.ID, 'share', this.currentUser);
406
+ const hasSharePermission = await this.permissionService.checkPermission(this.Artifact.ID, this.CurrentUser.ID, 'share', this.CurrentUser);
335
407
  // Allow modification if user is owner OR has Share permission
336
- this.canModifyPermissions = isOwner || hasSharePermission;
408
+ this.CanModifyPermissions = isOwner || hasSharePermission;
337
409
  // Get user's current permissions
338
410
  const userPerms = {
339
411
  canRead: true,
340
412
  canShare: hasSharePermission,
341
- canEdit: await this.permissionService.checkPermission(this.artifact.ID, this.currentUser.ID, 'edit', this.currentUser)
413
+ canEdit: await this.permissionService.checkPermission(this.Artifact.ID, this.CurrentUser.ID, 'edit', this.CurrentUser)
342
414
  };
343
- this.availablePermissions = this.permissionService.getAvailablePermissions(userPerms, isOwner);
415
+ this.AvailablePermissions = this.permissionService.getAvailablePermissions(userPerms, isOwner);
344
416
  console.log('Share modal permissions:', {
345
- artifactId: this.artifact?.ID,
346
- userId: this.artifact?.UserID,
347
- currentUserId: this.currentUser.ID,
417
+ artifactId: this.Artifact?.ID,
418
+ userId: this.Artifact?.UserID,
419
+ currentUserId: this.CurrentUser.ID,
348
420
  isOwner,
349
- availablePermissions: this.availablePermissions
421
+ availablePermissions: this.AvailablePermissions
350
422
  });
351
423
  this.cdr.detectChanges(); // zone.js 0.15: async permission checks don't trigger CD
352
424
  }
353
- getExcludedUserIds() {
354
- const ids = this.permissions.map(p => p.userId);
355
- ids.push(this.currentUser.ID); // Can't share with yourself
356
- if (this.artifact?.UserID) {
357
- ids.push(this.artifact.UserID); // Owner already has all permissions
425
+ GetExcludedUserIds() {
426
+ const ids = this.Permissions.map(p => p.userId);
427
+ ids.push(this.CurrentUser.ID); // Can't share with yourself
428
+ if (this.Artifact?.UserID) {
429
+ ids.push(this.Artifact.UserID); // Owner already has all permissions
358
430
  }
359
431
  return ids;
360
432
  }
361
- onUserSelected(user) {
362
- this.selectedUser = user;
433
+ /** @deprecated Use {@link GetExcludedUserIds}. */
434
+ getExcludedUserIds() {
435
+ return this.GetExcludedUserIds();
436
+ }
437
+ OnUserSelected(user) {
438
+ this.SelectedUser = user;
363
439
  this.cdr.detectChanges();
364
440
  }
365
- onClearSelection() {
366
- this.selectedUser = null;
367
- this.newPermissions = {
441
+ /** @deprecated Use {@link OnUserSelected}. */
442
+ onUserSelected(user) {
443
+ return this.OnUserSelected(user);
444
+ }
445
+ OnClearSelection() {
446
+ this.SelectedUser = null;
447
+ this.NewPermissions = {
368
448
  canRead: true,
369
449
  canShare: false,
370
450
  canEdit: false
371
451
  };
372
452
  this.cdr.detectChanges();
373
453
  }
374
- async onAddUser() {
375
- if (!this.selectedUser || !this.artifact)
454
+ /** @deprecated Use {@link OnClearSelection}. */
455
+ onClearSelection() {
456
+ return this.OnClearSelection();
457
+ }
458
+ async OnAddUser() {
459
+ if (!this.SelectedUser || !this.Artifact)
376
460
  return;
377
461
  try {
378
462
  // Check if user is owner
379
- const isOwner = await this.permissionService.isOwner(this.artifact.ID, this.currentUser.ID, this.currentUser);
463
+ const isOwner = await this.permissionService.isOwner(this.Artifact.ID, this.CurrentUser.ID, this.CurrentUser);
380
464
  // Get current user's permissions
381
465
  const userPerms = {
382
466
  canRead: true,
383
- canShare: await this.permissionService.checkPermission(this.artifact.ID, this.currentUser.ID, 'share', this.currentUser),
384
- canEdit: await this.permissionService.checkPermission(this.artifact.ID, this.currentUser.ID, 'edit', this.currentUser)
467
+ canShare: await this.permissionService.checkPermission(this.Artifact.ID, this.CurrentUser.ID, 'share', this.CurrentUser),
468
+ canEdit: await this.permissionService.checkPermission(this.Artifact.ID, this.CurrentUser.ID, 'edit', this.CurrentUser)
385
469
  };
386
470
  // Validate permissions
387
- if (!this.permissionService.validatePermissions(this.newPermissions, userPerms, isOwner)) {
471
+ if (!this.permissionService.validatePermissions(this.NewPermissions, userPerms, isOwner)) {
388
472
  MJNotificationService.Instance.CreateSimpleNotification('You cannot grant permissions you do not have', 'warning', 4000);
389
473
  return;
390
474
  }
391
475
  // Grant permission
392
- await this.permissionService.grantPermission(this.artifact.ID, this.selectedUser.id, this.newPermissions, this.currentUser.ID, this.currentUser);
476
+ await this.permissionService.grantPermission(this.Artifact.ID, this.SelectedUser.id, this.NewPermissions, this.CurrentUser.ID, this.CurrentUser);
393
477
  await this.loadPermissions();
394
- this.onClearSelection();
395
- this.saved.emit();
478
+ this.OnClearSelection();
479
+ this.Saved.emit();
396
480
  }
397
481
  catch (error) {
398
482
  console.error('Error adding user:', error);
399
483
  MJNotificationService.Instance.CreateSimpleNotification('Failed to add user. Please try again.', 'error', 5000);
400
484
  }
401
485
  }
402
- onEditPermission(permission) {
486
+ /** @deprecated Use {@link OnAddUser}. */
487
+ async onAddUser() {
488
+ return this.OnAddUser();
489
+ }
490
+ OnEditPermission(permission) {
403
491
  permission.isEditing = true;
404
492
  this.cdr.detectChanges();
405
493
  }
406
- onCancelEdit(permission) {
494
+ /** @deprecated Use {@link OnEditPermission}. */
495
+ onEditPermission(permission) {
496
+ return this.OnEditPermission(permission);
497
+ }
498
+ OnCancelEdit(permission) {
407
499
  permission.isEditing = false;
408
500
  permission.editingPermissions = {
409
501
  canRead: permission.canRead,
@@ -412,17 +504,21 @@ export class ArtifactShareModalComponent {
412
504
  };
413
505
  this.cdr.detectChanges();
414
506
  }
415
- async onSavePermission(permission) {
416
- if (!this.artifact)
507
+ /** @deprecated Use {@link OnCancelEdit}. */
508
+ onCancelEdit(permission) {
509
+ return this.OnCancelEdit(permission);
510
+ }
511
+ async OnSavePermission(permission) {
512
+ if (!this.Artifact)
417
513
  return;
418
514
  try {
419
515
  // Check if user is owner
420
- const isOwner = await this.permissionService.isOwner(this.artifact.ID, this.currentUser.ID, this.currentUser);
516
+ const isOwner = await this.permissionService.isOwner(this.Artifact.ID, this.CurrentUser.ID, this.CurrentUser);
421
517
  // Get current user's permissions
422
518
  const userPerms = {
423
519
  canRead: true,
424
- canShare: await this.permissionService.checkPermission(this.artifact.ID, this.currentUser.ID, 'share', this.currentUser),
425
- canEdit: await this.permissionService.checkPermission(this.artifact.ID, this.currentUser.ID, 'edit', this.currentUser)
520
+ canShare: await this.permissionService.checkPermission(this.Artifact.ID, this.CurrentUser.ID, 'share', this.CurrentUser),
521
+ canEdit: await this.permissionService.checkPermission(this.Artifact.ID, this.CurrentUser.ID, 'edit', this.CurrentUser)
426
522
  };
427
523
  // Validate permissions
428
524
  if (!this.permissionService.validatePermissions(permission.editingPermissions, userPerms, isOwner)) {
@@ -430,34 +526,42 @@ export class ArtifactShareModalComponent {
430
526
  return;
431
527
  }
432
528
  // Update permission
433
- await this.permissionService.updatePermission(permission.id, permission.editingPermissions, this.currentUser);
529
+ await this.permissionService.updatePermission(permission.id, permission.editingPermissions, this.CurrentUser);
434
530
  await this.loadPermissions();
435
- this.saved.emit();
531
+ this.Saved.emit();
436
532
  }
437
533
  catch (error) {
438
534
  console.error('Error updating permission:', error);
439
535
  MJNotificationService.Instance.CreateSimpleNotification('Failed to update permissions. Please try again.', 'error', 5000);
440
536
  }
441
537
  }
442
- async onRevokePermission(permission) {
538
+ /** @deprecated Use {@link OnSavePermission}. */
539
+ async onSavePermission(permission) {
540
+ return this.OnSavePermission(permission);
541
+ }
542
+ async OnRevokePermission(permission) {
443
543
  if (!(await this.confirmService.ConfirmDelete({ title: 'Remove Access', message: `Remove ${permission.userName}'s access to this artifact?`, confirmText: 'Remove' }))) {
444
544
  return;
445
545
  }
446
546
  try {
447
- await this.permissionService.revokePermission(permission.id, this.currentUser);
547
+ await this.permissionService.revokePermission(permission.id, this.CurrentUser);
448
548
  await this.loadPermissions();
449
- this.saved.emit();
549
+ this.Saved.emit();
450
550
  }
451
551
  catch (error) {
452
552
  console.error('Error revoking permission:', error);
453
553
  MJNotificationService.Instance.CreateSimpleNotification('Failed to revoke permission. Please try again.', 'error', 5000);
454
554
  }
455
555
  }
556
+ /** @deprecated Use {@link OnRevokePermission}. */
557
+ async onRevokePermission(permission) {
558
+ return this.OnRevokePermission(permission);
559
+ }
456
560
  onCancel() {
457
561
  this.cancelled.emit();
458
562
  }
459
563
  static ɵfac = function ArtifactShareModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ArtifactShareModalComponent)(i0.ɵɵdirectiveInject(i1.ArtifactPermissionService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2.MJConfirmService)); };
460
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactShareModalComponent, selectors: [["mj-artifact-share-modal"]], inputs: { isOpen: "isOpen", artifact: "artifact", currentUser: "currentUser" }, outputs: { saved: "saved", cancelled: "cancelled" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[3, "Title", "Width", "Height", "MinWidth", "MinHeight", "Visible"], [3, "Close", "Title", "Width", "Height", "MinWidth", "MinHeight", "Visible"], [1, "share-modal-content"], [1, "add-user-section"], [1, "section-title"], [1, "fa-solid", "fa-user-plus"], [3, "userSelected", "currentUser", "excludeUserIds"], [1, "permissions-form"], [1, "permissions-list-section"], [1, "fa-solid", "fa-users"], ["Icon", "fa-solid fa-user-slash", "Title", "Not shared with anyone yet", "Size", "compact"], [1, "permissions-list"], [1, "modal-actions"], ["mjButton", "", 3, "click"], [1, "selected-user-info"], [1, "user-avatar"], [1, "fa-solid", "fa-user"], [1, "user-details"], [1, "user-name"], [1, "user-email"], [1, "permissions-grid"], [1, "permission-checkbox", "disabled"], ["type", "checkbox", "disabled", "", 3, "checked"], [1, "permission-label"], [1, "fa-solid", "fa-eye"], [1, "permission-desc"], [1, "permission-checkbox"], [1, "form-actions"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-plus"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-share-nodes"], [1, "fa-solid", "fa-pen-to-square"], [1, "permission-item"], [1, "permission-details"], [1, "permission-user"], [1, "shared-by"], [1, "permission-badges"], [1, "permissions-edit-grid"], [1, "permission-actions"], [1, "permission-badge"], [1, "permission-checkbox-small", "disabled"], [1, "permission-checkbox-small"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit", 3, "click"], [1, "fa-solid", "fa-pen"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Remove", 3, "click"], [1, "fa-solid", "fa-xmark"], ["mjButton", "", "variant", "success", "size", "sm", "title", "Save", 3, "click"], [1, "fa-solid", "fa-check"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Cancel", 3, "click"]], template: function ArtifactShareModalComponent_Template(rf, ctx) { if (rf & 1) {
564
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactShareModalComponent, selectors: [["mj-artifact-share-modal"]], inputs: { IsOpen: "IsOpen", isOpen: "isOpen", Artifact: "Artifact", artifact: "artifact", CurrentUser: "CurrentUser", currentUser: "currentUser" }, outputs: { Saved: "Saved", saved: "saved", cancelled: "cancelled" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[3, "Title", "Width", "Height", "MinWidth", "MinHeight", "Visible"], [3, "Close", "Title", "Width", "Height", "MinWidth", "MinHeight", "Visible"], [1, "share-modal-content"], [1, "add-user-section"], [1, "section-title"], [1, "fa-solid", "fa-user-plus"], [3, "userSelected", "currentUser", "excludeUserIds"], [1, "permissions-form"], [1, "permissions-list-section"], [1, "fa-solid", "fa-users"], ["Icon", "fa-solid fa-user-slash", "Title", "Not shared with anyone yet", "Size", "compact"], [1, "permissions-list"], [1, "modal-actions"], ["mjButton", "", 3, "click"], [1, "selected-user-info"], [1, "user-avatar"], [1, "fa-solid", "fa-user"], [1, "user-details"], [1, "user-name"], [1, "user-email"], [1, "permissions-grid"], [1, "permission-checkbox", "disabled"], ["type", "checkbox", "disabled", "", 3, "checked"], [1, "permission-label"], [1, "fa-solid", "fa-eye"], [1, "permission-desc"], [1, "permission-checkbox"], [1, "form-actions"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-plus"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-share-nodes"], [1, "fa-solid", "fa-pen-to-square"], [1, "permission-item"], [1, "permission-details"], [1, "permission-user"], [1, "shared-by"], [1, "permission-badges"], [1, "permissions-edit-grid"], [1, "permission-actions"], [1, "permission-badge"], [1, "permission-checkbox-small", "disabled"], [1, "permission-checkbox-small"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit", 3, "click"], [1, "fa-solid", "fa-pen"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Remove", 3, "click"], [1, "fa-solid", "fa-xmark"], ["mjButton", "", "variant", "success", "size", "sm", "title", "Save", 3, "click"], [1, "fa-solid", "fa-check"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Cancel", 3, "click"]], template: function ArtifactShareModalComponent_Template(rf, ctx) { if (rf & 1) {
461
565
  i0.ɵɵconditionalCreate(0, ArtifactShareModalComponent_Conditional_0_Template, 17, 11, "mj-window", 0);
462
566
  } if (rf & 2) {
463
567
  i0.ɵɵconditional(ctx.isOpen && ctx.artifact ? 0 : -1);
@@ -645,12 +749,20 @@ export class ArtifactShareModalComponent {
645
749
  </mj-window>
646
750
  }
647
751
  `, styles: [".share-modal-content {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 20px;\n height: 100%;\n overflow-y: auto;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n}\n.section-title i {\n color: var(--mj-brand-primary);\n}\n\n.add-user-section {\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 24px;\n}\n\n.selected-user-info {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 16px 0;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n}\n\n.user-avatar {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 16px;\n flex-shrink: 0;\n}\n\n.user-details {\n flex: 1;\n min-width: 0;\n}\n.user-details .user-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n.user-details .user-email {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n.permissions-form {\n margin-top: 16px;\n}\n\n.permissions-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 12px;\n margin: 16px 0;\n}\n\n.permission-checkbox {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.permission-checkbox:hover:not(.disabled) {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n.permission-checkbox.disabled {\n opacity: 0.6;\n cursor: not-allowed;\n background: var(--mj-bg-surface-sunken);\n}\n.permission-checkbox input[type=checkbox] {\n margin-right: 8px;\n}\n.permission-checkbox .permission-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n.permission-checkbox .permission-label i {\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n.permission-checkbox .permission-desc {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-left: 28px;\n}\n\n.form-actions {\n display: flex;\n gap: 8px;\n margin-top: 16px;\n}\n\n.permissions-list-section {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.permissions-list {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.permission-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: background 0.2s;\n}\n.permission-item:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.permission-details {\n flex: 1;\n min-width: 0;\n}\n\n.permission-user {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n.permission-user .user-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n.permission-user .shared-by {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.permission-badges {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n}\n.permission-badge i {\n font-size: 10px;\n}\n\n.permissions-edit-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.permission-checkbox-small {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n cursor: pointer;\n}\n.permission-checkbox-small.disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n.permission-checkbox-small input[type=checkbox] {\n margin: 0;\n}\n.permission-checkbox-small span {\n color: var(--mj-text-primary);\n}\n\n.permission-actions {\n display: flex;\n gap: 4px;\n}\n\n.btn-primary {\n background: var(--mj-brand-primary) !important;\n color: var(--mj-text-inverse) !important;\n border: none !important;\n padding: 8px 16px;\n border-radius: 6px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.btn-primary:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover) !important;\n}\n.btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.btn-primary i {\n font-size: 12px;\n}\n\n.btn-secondary {\n background: var(--mj-bg-surface) !important;\n color: var(--mj-text-secondary) !important;\n border: 1px solid var(--mj-border-default) !important;\n padding: 8px 16px;\n border-radius: 6px;\n font-weight: 500;\n cursor: pointer;\n}\n.btn-secondary:hover {\n background: var(--mj-bg-surface-sunken) !important;\n border-color: var(--mj-border-strong) !important;\n}\n\n.btn-icon {\n width: 32px;\n height: 32px;\n padding: 0;\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n}\n.btn-icon:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n.btn-icon.btn-success {\n color: var(--mj-status-success);\n border-color: var(--mj-status-success);\n}\n.btn-icon.btn-success:hover {\n background: var(--mj-status-success-bg);\n}\n.btn-icon.btn-danger {\n color: var(--mj-status-error);\n border-color: var(--mj-status-error);\n}\n.btn-icon.btn-danger:hover {\n background: var(--mj-status-error-bg);\n}\n.btn-icon i {\n font-size: 14px;\n}\n\n.modal-actions {\n display: flex;\n justify-content: flex-end;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n}\n"] }]
648
- }], () => [{ type: i1.ArtifactPermissionService }, { type: i0.ChangeDetectorRef }, { type: i2.MJConfirmService }], { isOpen: [{
752
+ }], () => [{ type: i1.ArtifactPermissionService }, { type: i0.ChangeDetectorRef }, { type: i2.MJConfirmService }], { IsOpen: [{
753
+ type: Input
754
+ }], isOpen: [{
755
+ type: Input
756
+ }], Artifact: [{
649
757
  type: Input
650
758
  }], artifact: [{
651
759
  type: Input
760
+ }], CurrentUser: [{
761
+ type: Input
652
762
  }], currentUser: [{
653
763
  type: Input
764
+ }], Saved: [{
765
+ type: Output
654
766
  }], saved: [{
655
767
  type: Output
656
768
  }], cancelled: [{
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-share-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/artifact/artifact-share-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { MJWindowComponent, MJButtonDirective, MJEmptyStateComponent, MJConfirmService } from '@memberjunction/ng-ui-components';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { UserInfo } from '@memberjunction/core';\nimport { MJArtifactEntity } from '@memberjunction/core-entities';\nimport { ArtifactPermissionService, ArtifactPermission, ArtifactPermissionSet } from '../../services/artifact-permission.service';\nimport { UserPickerComponent, UserSearchResult } from '../shared/user-picker.component';\n\ninterface PermissionDisplay extends ArtifactPermission {\n isEditing: boolean;\n editingPermissions: ArtifactPermissionSet;\n}\n\n@Component({\n selector: 'mj-artifact-share-modal',\n standalone: true,\n imports: [FormsModule, MJWindowComponent, MJButtonDirective, MJEmptyStateComponent, UserPickerComponent],\n template: `\n @if (isOpen && artifact) {\n <mj-window\n [Title]=\"'Share: ' + artifact.Name\"\n [Width]=\"600\"\n [Height]=\"500\"\n [MinWidth]=\"400\"\n [MinHeight]=\"400\"\n [Visible]=\"true\"\n (Close)=\"onCancel()\"\n >\n <div class=\"share-modal-content\">\n <!-- Add User Section -->\n <div class=\"add-user-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-user-plus\"></i>\n Share with User\n </h3>\n\n <mj-user-picker\n [currentUser]=\"currentUser\"\n [excludeUserIds]=\"getExcludedUserIds()\"\n (userSelected)=\"onUserSelected($event)\"\n ></mj-user-picker>\n\n @if (selectedUser) {\n <div class=\"permissions-form\">\n <div class=\"selected-user-info\">\n <div class=\"user-avatar\">\n <i class=\"fa-solid fa-user\"></i>\n </div>\n <div class=\"user-details\">\n <div class=\"user-name\">{{ selectedUser.name }}</div>\n <div class=\"user-email\">{{ selectedUser.email }}</div>\n </div>\n </div>\n\n <div class=\"permissions-grid\">\n <label class=\"permission-checkbox disabled\">\n <input type=\"checkbox\" [checked]=\"true\" disabled>\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-eye\"></i>\n Read\n </span>\n <span class=\"permission-desc\">View artifact content</span>\n </label>\n\n @if (availablePermissions.includes('Share')) {\n <label class=\"permission-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"newPermissions.canShare\">\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n Share\n </span>\n <span class=\"permission-desc\">Share with others</span>\n </label>\n }\n\n @if (availablePermissions.includes('Edit')) {\n <label class=\"permission-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"newPermissions.canEdit\">\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n Edit\n </span>\n <span class=\"permission-desc\">Edit and delete artifact</span>\n </label>\n }\n </div>\n\n <div class=\"form-actions\">\n <button mjButton variant=\"primary\" (click)=\"onAddUser()\" [disabled]=\"!selectedUser\">\n <i class=\"fa-solid fa-plus\"></i>\n Add User\n </button>\n <button mjButton (click)=\"onClearSelection()\">\n Cancel\n </button>\n </div>\n </div>\n }\n </div>\n\n <!-- Current Permissions Section -->\n <div class=\"permissions-list-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-users\"></i>\n Shared With ({{ permissions.length }})\n </h3>\n\n @if (permissions.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-user-slash\"\n Title=\"Not shared with anyone yet\"\n Size=\"compact\" />\n } @else {\n <div class=\"permissions-list\">\n @for (permission of permissions; track permission.id) {\n <div class=\"permission-item\">\n <div class=\"user-avatar\">\n <i class=\"fa-solid fa-user\"></i>\n </div>\n <div class=\"permission-details\">\n <div class=\"permission-user\">\n <span class=\"user-name\">{{ permission.userName }}</span>\n @if (permission.sharedByUserName) {\n <span class=\"shared-by\">shared by {{ permission.sharedByUserName }}</span>\n }\n </div>\n\n @if (!permission.isEditing) {\n <div class=\"permission-badges\">\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-eye\"></i> Read\n </span>\n @if (permission.canShare) {\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-share-nodes\"></i> Share\n </span>\n }\n @if (permission.canEdit) {\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-pen-to-square\"></i> Edit\n </span>\n }\n </div>\n } @else {\n <div class=\"permissions-edit-grid\">\n <label class=\"permission-checkbox-small disabled\">\n <input type=\"checkbox\" [checked]=\"true\" disabled>\n <span>Read</span>\n </label>\n @if (availablePermissions.includes('Share')) {\n <label class=\"permission-checkbox-small\">\n <input type=\"checkbox\" [(ngModel)]=\"permission.editingPermissions.canShare\">\n <span>Share</span>\n </label>\n }\n @if (availablePermissions.includes('Edit')) {\n <label class=\"permission-checkbox-small\">\n <input type=\"checkbox\" [(ngModel)]=\"permission.editingPermissions.canEdit\">\n <span>Edit</span>\n </label>\n }\n </div>\n }\n </div>\n\n @if (canModifyPermissions) {\n <div class=\"permission-actions\">\n @if (!permission.isEditing) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"onEditPermission(permission)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button mjButton variant=\"danger\" size=\"sm\" (click)=\"onRevokePermission(permission)\" title=\"Remove\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n } @else {\n <button mjButton variant=\"success\" size=\"sm\" (click)=\"onSavePermission(permission)\" title=\"Save\">\n <i class=\"fa-solid fa-check\"></i>\n </button>\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"onCancelEdit(permission)\" title=\"Cancel\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <div class=\"modal-actions\">\n <button mjButton (click)=\"onCancel()\">Close</button>\n </div>\n </mj-window>\n }\n `,\n styleUrls: ['./artifact-share-modal.component.css']\n})\nexport class ArtifactShareModalComponent implements OnInit, OnChanges {\n @Input() isOpen: boolean = false;\n @Input() artifact: MJArtifactEntity | null = null;\n @Input() currentUser!: UserInfo;\n\n @Output() saved = new EventEmitter<void>();\n @Output() cancelled = new EventEmitter<void>();\n\n permissions: PermissionDisplay[] = [];\n selectedUser: UserSearchResult | null = null;\n availablePermissions: string[] = [];\n canModifyPermissions: boolean = false;\n\n newPermissions: ArtifactPermissionSet = {\n canRead: true,\n canShare: false,\n canEdit: false\n };\n\n constructor(\n private permissionService: ArtifactPermissionService,\n private cdr: ChangeDetectorRef,\n private confirmService: MJConfirmService\n ) {}\n\n async ngOnInit(): Promise<void> {\n if (this.artifact) {\n await this.loadPermissions();\n await this.updateAvailablePermissions();\n }\n }\n\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\n // Reload permissions when modal opens or artifact changes\n const modalOpened = changes['isOpen']?.currentValue === true && changes['isOpen']?.previousValue === false;\n const artifactChanged = changes['artifact'] && !changes['artifact'].isFirstChange();\n\n if ((modalOpened || artifactChanged) && this.artifact) {\n await this.loadPermissions();\n await this.updateAvailablePermissions();\n }\n }\n\n private async loadPermissions(): Promise<void> {\n if (!this.artifact) return;\n\n const perms = await this.permissionService.loadPermissions(this.artifact.ID, this.currentUser);\n this.permissions = perms.map(p => ({\n ...p,\n isEditing: false,\n editingPermissions: {\n canRead: p.canRead,\n canShare: p.canShare,\n canEdit: p.canEdit\n }\n }));\n this.cdr.detectChanges();\n }\n\n private async updateAvailablePermissions(): Promise<void> {\n if (!this.artifact) return;\n\n // Check if current user is owner\n const isOwner = await this.permissionService.isOwner(this.artifact.ID, this.currentUser.ID, this.currentUser);\n\n // Check if user has share permission\n const hasSharePermission = await this.permissionService.checkPermission(\n this.artifact.ID,\n this.currentUser.ID,\n 'share',\n this.currentUser\n );\n\n // Allow modification if user is owner OR has Share permission\n this.canModifyPermissions = isOwner || hasSharePermission;\n\n // Get user's current permissions\n const userPerms: ArtifactPermissionSet = {\n canRead: true,\n canShare: hasSharePermission,\n canEdit: await this.permissionService.checkPermission(\n this.artifact.ID,\n this.currentUser.ID,\n 'edit',\n this.currentUser\n )\n };\n\n this.availablePermissions = this.permissionService.getAvailablePermissions(userPerms, isOwner);\n\n console.log('Share modal permissions:', {\n artifactId: this.artifact?.ID,\n userId: this.artifact?.UserID,\n currentUserId: this.currentUser.ID,\n isOwner,\n availablePermissions: this.availablePermissions\n });\n\n this.cdr.detectChanges(); // zone.js 0.15: async permission checks don't trigger CD\n }\n\n getExcludedUserIds(): string[] {\n const ids = this.permissions.map(p => p.userId);\n ids.push(this.currentUser.ID); // Can't share with yourself\n if (this.artifact?.UserID) {\n ids.push(this.artifact.UserID); // Owner already has all permissions\n }\n return ids;\n }\n\n onUserSelected(user: UserSearchResult): void {\n this.selectedUser = user;\n this.cdr.detectChanges();\n }\n\n onClearSelection(): void {\n this.selectedUser = null;\n this.newPermissions = {\n canRead: true,\n canShare: false,\n canEdit: false\n };\n this.cdr.detectChanges();\n }\n\n async onAddUser(): Promise<void> {\n if (!this.selectedUser || !this.artifact) return;\n\n try {\n // Check if user is owner\n const isOwner = await this.permissionService.isOwner(this.artifact.ID, this.currentUser.ID, this.currentUser);\n\n // Get current user's permissions\n const userPerms: ArtifactPermissionSet = {\n canRead: true,\n canShare: await this.permissionService.checkPermission(\n this.artifact.ID,\n this.currentUser.ID,\n 'share',\n this.currentUser\n ),\n canEdit: await this.permissionService.checkPermission(\n this.artifact.ID,\n this.currentUser.ID,\n 'edit',\n this.currentUser\n )\n };\n\n // Validate permissions\n if (!this.permissionService.validatePermissions(this.newPermissions, userPerms, isOwner)) {\n MJNotificationService.Instance.CreateSimpleNotification('You cannot grant permissions you do not have', 'warning', 4000);\n return;\n }\n\n // Grant permission\n await this.permissionService.grantPermission(\n this.artifact.ID,\n this.selectedUser.id,\n this.newPermissions,\n this.currentUser.ID,\n this.currentUser\n );\n\n await this.loadPermissions();\n this.onClearSelection();\n this.saved.emit();\n } catch (error) {\n console.error('Error adding user:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Failed to add user. Please try again.', 'error', 5000);\n }\n }\n\n onEditPermission(permission: PermissionDisplay): void {\n permission.isEditing = true;\n this.cdr.detectChanges();\n }\n\n onCancelEdit(permission: PermissionDisplay): void {\n permission.isEditing = false;\n permission.editingPermissions = {\n canRead: permission.canRead,\n canShare: permission.canShare,\n canEdit: permission.canEdit\n };\n this.cdr.detectChanges();\n }\n\n async onSavePermission(permission: PermissionDisplay): Promise<void> {\n if (!this.artifact) return;\n\n try {\n // Check if user is owner\n const isOwner = await this.permissionService.isOwner(this.artifact.ID, this.currentUser.ID, this.currentUser);\n\n // Get current user's permissions\n const userPerms: ArtifactPermissionSet = {\n canRead: true,\n canShare: await this.permissionService.checkPermission(\n this.artifact.ID,\n this.currentUser.ID,\n 'share',\n this.currentUser\n ),\n canEdit: await this.permissionService.checkPermission(\n this.artifact.ID,\n this.currentUser.ID,\n 'edit',\n this.currentUser\n )\n };\n\n // Validate permissions\n if (!this.permissionService.validatePermissions(permission.editingPermissions, userPerms, isOwner)) {\n MJNotificationService.Instance.CreateSimpleNotification('You cannot grant permissions you do not have', 'warning', 4000);\n return;\n }\n\n // Update permission\n await this.permissionService.updatePermission(\n permission.id,\n permission.editingPermissions,\n this.currentUser\n );\n\n await this.loadPermissions();\n this.saved.emit();\n } catch (error) {\n console.error('Error updating permission:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Failed to update permissions. Please try again.', 'error', 5000);\n }\n }\n\n async onRevokePermission(permission: PermissionDisplay): Promise<void> {\n if (!(await this.confirmService.ConfirmDelete({ title: 'Remove Access', message: `Remove ${permission.userName}'s access to this artifact?`, confirmText: 'Remove' }))) {\n return;\n }\n\n try {\n await this.permissionService.revokePermission(permission.id, this.currentUser);\n await this.loadPermissions();\n this.saved.emit();\n } catch (error) {\n console.error('Error revoking permission:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Failed to revoke permission. Please try again.', 'error', 5000);\n }\n }\n\n onCancel(): void {\n this.cancelled.emit();\n }\n}\n"]}
1
+ {"version":3,"file":"artifact-share-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/artifact/artifact-share-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { MJWindowComponent, MJButtonDirective, MJEmptyStateComponent, MJConfirmService } from '@memberjunction/ng-ui-components';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { UserInfo } from '@memberjunction/core';\nimport { MJArtifactEntity } from '@memberjunction/core-entities';\nimport { ArtifactPermissionService, ArtifactPermission, ArtifactPermissionSet } from '../../services/artifact-permission.service';\nimport { UserPickerComponent, UserSearchResult } from '../shared/user-picker.component';\n\ninterface PermissionDisplay extends ArtifactPermission {\n isEditing: boolean;\n editingPermissions: ArtifactPermissionSet;\n}\n\n@Component({\n selector: 'mj-artifact-share-modal',\n standalone: true,\n imports: [FormsModule, MJWindowComponent, MJButtonDirective, MJEmptyStateComponent, UserPickerComponent],\n template: `\n @if (isOpen && artifact) {\n <mj-window\n [Title]=\"'Share: ' + artifact.Name\"\n [Width]=\"600\"\n [Height]=\"500\"\n [MinWidth]=\"400\"\n [MinHeight]=\"400\"\n [Visible]=\"true\"\n (Close)=\"onCancel()\"\n >\n <div class=\"share-modal-content\">\n <!-- Add User Section -->\n <div class=\"add-user-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-user-plus\"></i>\n Share with User\n </h3>\n\n <mj-user-picker\n [currentUser]=\"currentUser\"\n [excludeUserIds]=\"getExcludedUserIds()\"\n (userSelected)=\"onUserSelected($event)\"\n ></mj-user-picker>\n\n @if (selectedUser) {\n <div class=\"permissions-form\">\n <div class=\"selected-user-info\">\n <div class=\"user-avatar\">\n <i class=\"fa-solid fa-user\"></i>\n </div>\n <div class=\"user-details\">\n <div class=\"user-name\">{{ selectedUser.name }}</div>\n <div class=\"user-email\">{{ selectedUser.email }}</div>\n </div>\n </div>\n\n <div class=\"permissions-grid\">\n <label class=\"permission-checkbox disabled\">\n <input type=\"checkbox\" [checked]=\"true\" disabled>\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-eye\"></i>\n Read\n </span>\n <span class=\"permission-desc\">View artifact content</span>\n </label>\n\n @if (availablePermissions.includes('Share')) {\n <label class=\"permission-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"newPermissions.canShare\">\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n Share\n </span>\n <span class=\"permission-desc\">Share with others</span>\n </label>\n }\n\n @if (availablePermissions.includes('Edit')) {\n <label class=\"permission-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"newPermissions.canEdit\">\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n Edit\n </span>\n <span class=\"permission-desc\">Edit and delete artifact</span>\n </label>\n }\n </div>\n\n <div class=\"form-actions\">\n <button mjButton variant=\"primary\" (click)=\"onAddUser()\" [disabled]=\"!selectedUser\">\n <i class=\"fa-solid fa-plus\"></i>\n Add User\n </button>\n <button mjButton (click)=\"onClearSelection()\">\n Cancel\n </button>\n </div>\n </div>\n }\n </div>\n\n <!-- Current Permissions Section -->\n <div class=\"permissions-list-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-users\"></i>\n Shared With ({{ permissions.length }})\n </h3>\n\n @if (permissions.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-user-slash\"\n Title=\"Not shared with anyone yet\"\n Size=\"compact\" />\n } @else {\n <div class=\"permissions-list\">\n @for (permission of permissions; track permission.id) {\n <div class=\"permission-item\">\n <div class=\"user-avatar\">\n <i class=\"fa-solid fa-user\"></i>\n </div>\n <div class=\"permission-details\">\n <div class=\"permission-user\">\n <span class=\"user-name\">{{ permission.userName }}</span>\n @if (permission.sharedByUserName) {\n <span class=\"shared-by\">shared by {{ permission.sharedByUserName }}</span>\n }\n </div>\n\n @if (!permission.isEditing) {\n <div class=\"permission-badges\">\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-eye\"></i> Read\n </span>\n @if (permission.canShare) {\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-share-nodes\"></i> Share\n </span>\n }\n @if (permission.canEdit) {\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-pen-to-square\"></i> Edit\n </span>\n }\n </div>\n } @else {\n <div class=\"permissions-edit-grid\">\n <label class=\"permission-checkbox-small disabled\">\n <input type=\"checkbox\" [checked]=\"true\" disabled>\n <span>Read</span>\n </label>\n @if (availablePermissions.includes('Share')) {\n <label class=\"permission-checkbox-small\">\n <input type=\"checkbox\" [(ngModel)]=\"permission.editingPermissions.canShare\">\n <span>Share</span>\n </label>\n }\n @if (availablePermissions.includes('Edit')) {\n <label class=\"permission-checkbox-small\">\n <input type=\"checkbox\" [(ngModel)]=\"permission.editingPermissions.canEdit\">\n <span>Edit</span>\n </label>\n }\n </div>\n }\n </div>\n\n @if (canModifyPermissions) {\n <div class=\"permission-actions\">\n @if (!permission.isEditing) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"onEditPermission(permission)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button mjButton variant=\"danger\" size=\"sm\" (click)=\"onRevokePermission(permission)\" title=\"Remove\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n } @else {\n <button mjButton variant=\"success\" size=\"sm\" (click)=\"onSavePermission(permission)\" title=\"Save\">\n <i class=\"fa-solid fa-check\"></i>\n </button>\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"onCancelEdit(permission)\" title=\"Cancel\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <div class=\"modal-actions\">\n <button mjButton (click)=\"onCancel()\">Close</button>\n </div>\n </mj-window>\n }\n `,\n styleUrls: ['./artifact-share-modal.component.css']\n})\nexport class ArtifactShareModalComponent implements OnInit, OnChanges {\n @Input() IsOpen: boolean = false;\n\n /** @deprecated Use {@link IsOpen}. */\n @Input() set isOpen(value: boolean) {\n this.IsOpen = value;\n }\n /** @deprecated Use {@link IsOpen}. */\n get isOpen(): boolean {\n return this.IsOpen;\n }\n @Input() Artifact: MJArtifactEntity | null = null;\n\n /** @deprecated Use {@link Artifact}. */\n @Input() set artifact(value: MJArtifactEntity | null) {\n this.Artifact = value;\n }\n /** @deprecated Use {@link Artifact}. */\n get artifact(): MJArtifactEntity | null {\n return this.Artifact;\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\n @Output() Saved = new EventEmitter<void>();\n\n /**\n * @deprecated Use {@link Saved}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (saved) keeps working. Must stay AFTER Saved: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() saved = this.Saved;\n @Output() cancelled = new EventEmitter<void>();\n\n Permissions: PermissionDisplay[] = [];\n\n /** @deprecated Use {@link Permissions}. */\n get permissions(): PermissionDisplay[] {\n return this.Permissions;\n }\n /** @deprecated Use {@link Permissions}. */\n set permissions(value: PermissionDisplay[]) {\n this.Permissions = value;\n }\n SelectedUser: UserSearchResult | null = null;\n\n /** @deprecated Use {@link SelectedUser}. */\n get selectedUser(): UserSearchResult | null {\n return this.SelectedUser;\n }\n /** @deprecated Use {@link SelectedUser}. */\n set selectedUser(value: UserSearchResult | null) {\n this.SelectedUser = value;\n }\n AvailablePermissions: string[] = [];\n\n /** @deprecated Use {@link AvailablePermissions}. */\n get availablePermissions(): string[] {\n return this.AvailablePermissions;\n }\n /** @deprecated Use {@link AvailablePermissions}. */\n set availablePermissions(value: string[]) {\n this.AvailablePermissions = value;\n }\n CanModifyPermissions: boolean = false;\n\n /** @deprecated Use {@link CanModifyPermissions}. */\n get canModifyPermissions(): boolean {\n return this.CanModifyPermissions;\n }\n /** @deprecated Use {@link CanModifyPermissions}. */\n set canModifyPermissions(value: boolean) {\n this.CanModifyPermissions = value;\n }\n\n NewPermissions: ArtifactPermissionSet = {\n canRead: true,\n canShare: false,\n canEdit: false\n };\n\n /** @deprecated Use {@link NewPermissions}. */\n get newPermissions(): ArtifactPermissionSet {\n return this.NewPermissions;\n }\n /** @deprecated Use {@link NewPermissions}. */\n set newPermissions(value: ArtifactPermissionSet) {\n this.NewPermissions = value;\n }\n\n constructor(\n private permissionService: ArtifactPermissionService,\n private cdr: ChangeDetectorRef,\n private confirmService: MJConfirmService\n ) {}\n\n async ngOnInit(): Promise<void> {\n if (this.Artifact) {\n await this.loadPermissions();\n await this.updateAvailablePermissions();\n }\n }\n\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\n // Reload permissions when modal opens or artifact changes\n const modalOpened = changes['isOpen']?.currentValue === true && changes['isOpen']?.previousValue === false;\n const artifactChanged = changes['artifact'] && !changes['artifact'].isFirstChange();\n\n if ((modalOpened || artifactChanged) && this.Artifact) {\n await this.loadPermissions();\n await this.updateAvailablePermissions();\n }\n }\n\n private async loadPermissions(): Promise<void> {\n if (!this.Artifact) return;\n\n const perms = await this.permissionService.loadPermissions(this.Artifact.ID, this.CurrentUser);\n this.Permissions = perms.map(p => ({\n ...p,\n isEditing: false,\n editingPermissions: {\n canRead: p.canRead,\n canShare: p.canShare,\n canEdit: p.canEdit\n }\n }));\n this.cdr.detectChanges();\n }\n\n private async updateAvailablePermissions(): Promise<void> {\n if (!this.Artifact) return;\n\n // Check if current user is owner\n const isOwner = await this.permissionService.isOwner(this.Artifact.ID, this.CurrentUser.ID, this.CurrentUser);\n\n // Check if user has share permission\n const hasSharePermission = await this.permissionService.checkPermission(\n this.Artifact.ID,\n this.CurrentUser.ID,\n 'share',\n this.CurrentUser\n );\n\n // Allow modification if user is owner OR has Share permission\n this.CanModifyPermissions = isOwner || hasSharePermission;\n\n // Get user's current permissions\n const userPerms: ArtifactPermissionSet = {\n canRead: true,\n canShare: hasSharePermission,\n canEdit: await this.permissionService.checkPermission(\n this.Artifact.ID,\n this.CurrentUser.ID,\n 'edit',\n this.CurrentUser\n )\n };\n\n this.AvailablePermissions = this.permissionService.getAvailablePermissions(userPerms, isOwner);\n\n console.log('Share modal permissions:', {\n artifactId: this.Artifact?.ID,\n userId: this.Artifact?.UserID,\n currentUserId: this.CurrentUser.ID,\n isOwner,\n availablePermissions: this.AvailablePermissions\n });\n\n this.cdr.detectChanges(); // zone.js 0.15: async permission checks don't trigger CD\n }\n\n GetExcludedUserIds(): string[] {\n const ids = this.Permissions.map(p => p.userId);\n ids.push(this.CurrentUser.ID); // Can't share with yourself\n if (this.Artifact?.UserID) {\n ids.push(this.Artifact.UserID); // Owner already has all permissions\n }\n return ids;\n }\n\n /** @deprecated Use {@link GetExcludedUserIds}. */\n getExcludedUserIds(): string[] {\n return this.GetExcludedUserIds();\n }\n\n OnUserSelected(user: UserSearchResult): void {\n this.SelectedUser = user;\n this.cdr.detectChanges();\n }\n\n /** @deprecated Use {@link OnUserSelected}. */\n onUserSelected(user: UserSearchResult): void {\n return this.OnUserSelected(user);\n }\n\n OnClearSelection(): void {\n this.SelectedUser = null;\n this.NewPermissions = {\n canRead: true,\n canShare: false,\n canEdit: false\n };\n this.cdr.detectChanges();\n }\n\n /** @deprecated Use {@link OnClearSelection}. */\n onClearSelection(): void {\n return this.OnClearSelection();\n }\n\n async OnAddUser(): Promise<void> {\n if (!this.SelectedUser || !this.Artifact) return;\n\n try {\n // Check if user is owner\n const isOwner = await this.permissionService.isOwner(this.Artifact.ID, this.CurrentUser.ID, this.CurrentUser);\n\n // Get current user's permissions\n const userPerms: ArtifactPermissionSet = {\n canRead: true,\n canShare: await this.permissionService.checkPermission(\n this.Artifact.ID,\n this.CurrentUser.ID,\n 'share',\n this.CurrentUser\n ),\n canEdit: await this.permissionService.checkPermission(\n this.Artifact.ID,\n this.CurrentUser.ID,\n 'edit',\n this.CurrentUser\n )\n };\n\n // Validate permissions\n if (!this.permissionService.validatePermissions(this.NewPermissions, userPerms, isOwner)) {\n MJNotificationService.Instance.CreateSimpleNotification('You cannot grant permissions you do not have', 'warning', 4000);\n return;\n }\n\n // Grant permission\n await this.permissionService.grantPermission(\n this.Artifact.ID,\n this.SelectedUser.id,\n this.NewPermissions,\n this.CurrentUser.ID,\n this.CurrentUser\n );\n\n await this.loadPermissions();\n this.OnClearSelection();\n this.Saved.emit();\n } catch (error) {\n console.error('Error adding user:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Failed to add user. Please try again.', 'error', 5000);\n }\n }\n\n /** @deprecated Use {@link OnAddUser}. */\n async onAddUser(): Promise<void> {\n return this.OnAddUser();\n }\n\n OnEditPermission(permission: PermissionDisplay): void {\n permission.isEditing = true;\n this.cdr.detectChanges();\n }\n\n /** @deprecated Use {@link OnEditPermission}. */\n onEditPermission(permission: PermissionDisplay): void {\n return this.OnEditPermission(permission);\n }\n\n OnCancelEdit(permission: PermissionDisplay): void {\n permission.isEditing = false;\n permission.editingPermissions = {\n canRead: permission.canRead,\n canShare: permission.canShare,\n canEdit: permission.canEdit\n };\n this.cdr.detectChanges();\n }\n\n /** @deprecated Use {@link OnCancelEdit}. */\n onCancelEdit(permission: PermissionDisplay): void {\n return this.OnCancelEdit(permission);\n }\n\n async OnSavePermission(permission: PermissionDisplay): Promise<void> {\n if (!this.Artifact) return;\n\n try {\n // Check if user is owner\n const isOwner = await this.permissionService.isOwner(this.Artifact.ID, this.CurrentUser.ID, this.CurrentUser);\n\n // Get current user's permissions\n const userPerms: ArtifactPermissionSet = {\n canRead: true,\n canShare: await this.permissionService.checkPermission(\n this.Artifact.ID,\n this.CurrentUser.ID,\n 'share',\n this.CurrentUser\n ),\n canEdit: await this.permissionService.checkPermission(\n this.Artifact.ID,\n this.CurrentUser.ID,\n 'edit',\n this.CurrentUser\n )\n };\n\n // Validate permissions\n if (!this.permissionService.validatePermissions(permission.editingPermissions, userPerms, isOwner)) {\n MJNotificationService.Instance.CreateSimpleNotification('You cannot grant permissions you do not have', 'warning', 4000);\n return;\n }\n\n // Update permission\n await this.permissionService.updatePermission(\n permission.id,\n permission.editingPermissions,\n this.CurrentUser\n );\n\n await this.loadPermissions();\n this.Saved.emit();\n } catch (error) {\n console.error('Error updating permission:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Failed to update permissions. Please try again.', 'error', 5000);\n }\n }\n\n /** @deprecated Use {@link OnSavePermission}. */\n async onSavePermission(permission: PermissionDisplay): Promise<void> {\n return this.OnSavePermission(permission);\n }\n\n async OnRevokePermission(permission: PermissionDisplay): Promise<void> {\n if (!(await this.confirmService.ConfirmDelete({ title: 'Remove Access', message: `Remove ${permission.userName}'s access to this artifact?`, confirmText: 'Remove' }))) {\n return;\n }\n\n try {\n await this.permissionService.revokePermission(permission.id, this.CurrentUser);\n await this.loadPermissions();\n this.Saved.emit();\n } catch (error) {\n console.error('Error revoking permission:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Failed to revoke permission. Please try again.', 'error', 5000);\n }\n }\n\n /** @deprecated Use {@link OnRevokePermission}. */\n async onRevokePermission(permission: PermissionDisplay): Promise<void> {\n return this.OnRevokePermission(permission);\n }\n\n onCancel(): void {\n this.cancelled.emit();\n }\n}\n"]}