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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/README.md +43 -2
  2. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +19 -3
  3. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -1
  4. package/dist/lib/components/active-tasks/active-tasks-panel.component.js +39 -7
  5. package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
  6. package/dist/lib/components/agent/active-agent-indicator.component.d.ts +74 -6
  7. package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -1
  8. package/dist/lib/components/agent/active-agent-indicator.component.js +111 -21
  9. package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -1
  10. package/dist/lib/components/agent/agent-process-panel.component.d.ts +31 -5
  11. package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -1
  12. package/dist/lib/components/agent/agent-process-panel.component.js +71 -15
  13. package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -1
  14. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts +65 -9
  15. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -1
  16. package/dist/lib/components/artifact/artifact-share-modal.component.js +169 -57
  17. package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
  18. package/dist/lib/components/attachment/image-viewer.component.d.ts +77 -11
  19. package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -1
  20. package/dist/lib/components/attachment/image-viewer.component.js +181 -47
  21. package/dist/lib/components/attachment/image-viewer.component.js.map +1 -1
  22. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +129 -19
  23. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
  24. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +350 -116
  25. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
  26. package/dist/lib/components/collection/artifact-create-modal.component.d.ts +60 -8
  27. package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -1
  28. package/dist/lib/components/collection/artifact-create-modal.component.js +130 -46
  29. package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -1
  30. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +63 -3
  31. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
  32. package/dist/lib/components/collection/collection-artifact-card.component.js +113 -19
  33. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
  34. package/dist/lib/components/collection/collection-form-modal.component.d.ts +54 -8
  35. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
  36. package/dist/lib/components/collection/collection-form-modal.component.js +130 -46
  37. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
  38. package/dist/lib/components/collection/collection-share-modal.component.d.ts +70 -10
  39. package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -1
  40. package/dist/lib/components/collection/collection-share-modal.component.js +175 -53
  41. package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
  42. package/dist/lib/components/collection/collection-tree.component.d.ts +89 -9
  43. package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
  44. package/dist/lib/components/collection/collection-tree.component.js +220 -70
  45. package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
  46. package/dist/lib/components/collection/collection-view.component.d.ts +89 -11
  47. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
  48. package/dist/lib/components/collection/collection-view.component.js +154 -40
  49. package/dist/lib/components/collection/collection-view.component.js.map +1 -1
  50. package/dist/lib/components/collection/collections-full-view.component.d.ts +390 -38
  51. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
  52. package/dist/lib/components/collection/collections-full-view.component.js +951 -367
  53. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
  54. package/dist/lib/components/composer/ai-composer.component.d.ts +213 -18
  55. package/dist/lib/components/composer/ai-composer.component.d.ts.map +1 -1
  56. package/dist/lib/components/composer/ai-composer.component.js +388 -44
  57. package/dist/lib/components/composer/ai-composer.component.js.map +1 -1
  58. package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts +12 -1
  59. package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts.map +1 -1
  60. package/dist/lib/components/conversation/conversation-agent-picker.component.js +26 -4
  61. package/dist/lib/components/conversation/conversation-agent-picker.component.js.map +1 -1
  62. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +1191 -124
  63. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  64. package/dist/lib/components/conversation/conversation-chat-area.component.js +2816 -785
  65. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  66. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +139 -19
  67. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
  68. package/dist/lib/components/conversation/conversation-empty-state.component.js +296 -59
  69. package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
  70. package/dist/lib/components/conversation/conversation-list.component.d.ts +579 -78
  71. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  72. package/dist/lib/components/conversation/conversation-list.component.js +2322 -823
  73. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  74. package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts +42 -4
  75. package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts.map +1 -1
  76. package/dist/lib/components/conversation/pinned-messages-panel.component.js +93 -21
  77. package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
  78. package/dist/lib/components/dialogs/input-dialog.component.d.ts +57 -11
  79. package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -1
  80. package/dist/lib/components/dialogs/input-dialog.component.js +128 -16
  81. package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -1
  82. package/dist/lib/components/dialogs/rating-dialog.component.d.ts +68 -10
  83. package/dist/lib/components/dialogs/rating-dialog.component.d.ts.map +1 -1
  84. package/dist/lib/components/dialogs/rating-dialog.component.js +151 -27
  85. package/dist/lib/components/dialogs/rating-dialog.component.js.map +1 -1
  86. package/dist/lib/components/export/export-modal.component.d.ts +84 -10
  87. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
  88. package/dist/lib/components/export/export-modal.component.js +173 -49
  89. package/dist/lib/components/export/export-modal.component.js.map +1 -1
  90. package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts +29 -3
  91. package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts.map +1 -1
  92. package/dist/lib/components/global-tasks/global-tasks-panel.component.js +58 -12
  93. package/dist/lib/components/global-tasks/global-tasks-panel.component.js.map +1 -1
  94. package/dist/lib/components/library/library-full-view.component.d.ts +57 -8
  95. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
  96. package/dist/lib/components/library/library-full-view.component.js +119 -35
  97. package/dist/lib/components/library/library-full-view.component.js.map +1 -1
  98. package/dist/lib/components/members/members-modal.component.d.ts +76 -10
  99. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
  100. package/dist/lib/components/members/members-modal.component.js +164 -50
  101. package/dist/lib/components/members/members-modal.component.js.map +1 -1
  102. package/dist/lib/components/message/actionable-commands.component.d.ts +49 -5
  103. package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -1
  104. package/dist/lib/components/message/actionable-commands.component.js +140 -26
  105. package/dist/lib/components/message/actionable-commands.component.js.map +1 -1
  106. package/dist/lib/components/message/conversation-message-rating.component.d.ts +46 -10
  107. package/dist/lib/components/message/conversation-message-rating.component.d.ts.map +1 -1
  108. package/dist/lib/components/message/conversation-message-rating.component.js +120 -36
  109. package/dist/lib/components/message/conversation-message-rating.component.js.map +1 -1
  110. package/dist/lib/components/message/message-input.component.d.ts +613 -74
  111. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  112. package/dist/lib/components/message/message-input.component.js +1390 -422
  113. package/dist/lib/components/message/message-input.component.js.map +1 -1
  114. package/dist/lib/components/message/message-item.component.d.ts +490 -29
  115. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  116. package/dist/lib/components/message/message-item.component.js +1088 -244
  117. package/dist/lib/components/message/message-item.component.js.map +1 -1
  118. package/dist/lib/components/message/message-list.component.d.ts +297 -29
  119. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  120. package/dist/lib/components/message/message-list.component.js +598 -123
  121. package/dist/lib/components/message/message-list.component.js.map +1 -1
  122. package/dist/lib/components/navigation/conversation-navigation.component.d.ts +64 -5
  123. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
  124. package/dist/lib/components/navigation/conversation-navigation.component.js +101 -11
  125. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
  126. package/dist/lib/components/notification/activity-indicator.component.d.ts +6 -2
  127. package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -1
  128. package/dist/lib/components/notification/activity-indicator.component.js +13 -3
  129. package/dist/lib/components/notification/activity-indicator.component.js.map +1 -1
  130. package/dist/lib/components/notification/notification-badge.component.d.ts +15 -3
  131. package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -1
  132. package/dist/lib/components/notification/notification-badge.component.js +36 -8
  133. package/dist/lib/components/notification/notification-badge.component.js.map +1 -1
  134. package/dist/lib/components/overlay/chat-overlay.component.d.ts +1 -1
  135. package/dist/lib/components/overlay/chat-overlay.component.js +4 -4
  136. package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
  137. package/dist/lib/components/project/project-form-modal.component.d.ts +93 -11
  138. package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -1
  139. package/dist/lib/components/project/project-form-modal.component.js +348 -87
  140. package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
  141. package/dist/lib/components/project/project-selector.component.d.ts +78 -8
  142. package/dist/lib/components/project/project-selector.component.d.ts.map +1 -1
  143. package/dist/lib/components/project/project-selector.component.js +177 -46
  144. package/dist/lib/components/project/project-selector.component.js.map +1 -1
  145. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +1 -1
  146. package/dist/lib/components/realtime/realtime-activity-rail.component.js +2 -2
  147. package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
  148. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +1 -1
  149. package/dist/lib/components/realtime/realtime-delegation-card.component.js +2 -2
  150. package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
  151. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +2 -2
  152. package/dist/lib/components/realtime/realtime-session-overlay.component.js +18 -18
  153. package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
  154. package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts +47 -23
  155. package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts.map +1 -1
  156. package/dist/lib/components/realtime/realtime-session-timeline-card.component.js +136 -92
  157. package/dist/lib/components/realtime/realtime-session-timeline-card.component.js.map +1 -1
  158. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +2 -2
  159. package/dist/lib/components/realtime/realtime-surface-tabs.component.js +4 -4
  160. package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
  161. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +1 -1
  162. package/dist/lib/components/realtime/realtime-surface-tabs.model.js +3 -3
  163. package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
  164. package/dist/lib/components/realtime/realtime-ui-config.d.ts +13 -11
  165. package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -1
  166. package/dist/lib/components/realtime/realtime-ui-config.js +29 -25
  167. package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -1
  168. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +3 -1
  169. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
  170. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +6 -2
  171. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -1
  172. package/dist/lib/components/search/search-panel.component.d.ts +133 -22
  173. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
  174. package/dist/lib/components/search/search-panel.component.js +312 -83
  175. package/dist/lib/components/search/search-panel.component.js.map +1 -1
  176. package/dist/lib/components/share/share-modal.component.d.ts +69 -9
  177. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
  178. package/dist/lib/components/share/share-modal.component.js +139 -31
  179. package/dist/lib/components/share/share-modal.component.js.map +1 -1
  180. package/dist/lib/components/shared/user-picker.component.d.ts +48 -8
  181. package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
  182. package/dist/lib/components/shared/user-picker.component.js +110 -30
  183. package/dist/lib/components/shared/user-picker.component.js.map +1 -1
  184. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +114 -11
  185. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
  186. package/dist/lib/components/sidebar/conversation-sidebar.component.js +199 -21
  187. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
  188. package/dist/lib/components/sidebar/routines-section.component.d.ts +20 -1
  189. package/dist/lib/components/sidebar/routines-section.component.d.ts.map +1 -1
  190. package/dist/lib/components/sidebar/routines-section.component.js +25 -5
  191. package/dist/lib/components/sidebar/routines-section.component.js.map +1 -1
  192. package/dist/lib/components/slots/slot-interfaces.d.ts +19 -0
  193. package/dist/lib/components/slots/slot-interfaces.d.ts.map +1 -1
  194. package/dist/lib/components/slots/slot-interfaces.js.map +1 -1
  195. package/dist/lib/components/task/tasks-full-view.component.d.ts +95 -13
  196. package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -1
  197. package/dist/lib/components/task/tasks-full-view.component.js +223 -75
  198. package/dist/lib/components/task/tasks-full-view.component.js.map +1 -1
  199. package/dist/lib/components/tasks/task-widget.component.d.ts +46 -6
  200. package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -1
  201. package/dist/lib/components/tasks/task-widget.component.js +100 -16
  202. package/dist/lib/components/tasks/task-widget.component.js.map +1 -1
  203. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +64 -7
  204. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
  205. package/dist/lib/components/tasks/tasks-dropdown.component.js +127 -27
  206. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
  207. package/dist/lib/components/thread/thread-panel.component.d.ts +66 -8
  208. package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
  209. package/dist/lib/components/thread/thread-panel.component.js +146 -36
  210. package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
  211. package/dist/lib/components/toast/toast.component.d.ts +11 -1
  212. package/dist/lib/components/toast/toast.component.d.ts.map +1 -1
  213. package/dist/lib/components/toast/toast.component.js +25 -5
  214. package/dist/lib/components/toast/toast.component.js.map +1 -1
  215. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +385 -42
  216. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  217. package/dist/lib/components/workspace/conversation-workspace.component.js +891 -292
  218. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  219. package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts +8 -0
  220. package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts.map +1 -1
  221. package/dist/lib/composer-plugins/base-conversation-mention.provider.js +8 -1
  222. package/dist/lib/composer-plugins/base-conversation-mention.provider.js.map +1 -1
  223. package/dist/lib/directives/chat-slot.directive.d.ts +5 -1
  224. package/dist/lib/directives/chat-slot.directive.d.ts.map +1 -1
  225. package/dist/lib/directives/chat-slot.directive.js.map +1 -1
  226. package/dist/lib/directives/search-shortcut.directive.d.ts +9 -1
  227. package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -1
  228. package/dist/lib/directives/search-shortcut.directive.js +14 -4
  229. package/dist/lib/directives/search-shortcut.directive.js.map +1 -1
  230. package/dist/lib/events/chat-events.d.ts +34 -7
  231. package/dist/lib/events/chat-events.d.ts.map +1 -1
  232. package/dist/lib/events/chat-events.js +37 -7
  233. package/dist/lib/events/chat-events.js.map +1 -1
  234. package/dist/lib/models/agent-turn.model.d.ts +113 -0
  235. package/dist/lib/models/agent-turn.model.d.ts.map +1 -0
  236. package/dist/lib/models/agent-turn.model.js +12 -0
  237. package/dist/lib/models/agent-turn.model.js.map +1 -0
  238. package/dist/lib/models/collection-view.model.js.map +1 -1
  239. package/dist/lib/models/conversation-state.model.d.ts +8 -0
  240. package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
  241. package/dist/lib/models/conversation-state.model.js.map +1 -1
  242. package/dist/lib/models/lazy-artifact-info.d.ts +44 -12
  243. package/dist/lib/models/lazy-artifact-info.d.ts.map +1 -1
  244. package/dist/lib/models/lazy-artifact-info.js +98 -34
  245. package/dist/lib/models/lazy-artifact-info.js.map +1 -1
  246. package/dist/lib/services/active-tasks.service.d.ts +30 -4
  247. package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
  248. package/dist/lib/services/active-tasks.service.js +71 -19
  249. package/dist/lib/services/active-tasks.service.js.map +1 -1
  250. package/dist/lib/services/agent-state.service.d.ts +17 -1
  251. package/dist/lib/services/agent-state.service.d.ts.map +1 -1
  252. package/dist/lib/services/agent-state.service.js +48 -16
  253. package/dist/lib/services/agent-state.service.js.map +1 -1
  254. package/dist/lib/services/artifact-permission.service.d.ts +39 -0
  255. package/dist/lib/services/artifact-permission.service.d.ts.map +1 -1
  256. package/dist/lib/services/artifact-permission.service.js +152 -17
  257. package/dist/lib/services/artifact-permission.service.js.map +1 -1
  258. package/dist/lib/services/artifact-state.service.d.ts +58 -5
  259. package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
  260. package/dist/lib/services/artifact-state.service.js +135 -35
  261. package/dist/lib/services/artifact-state.service.js.map +1 -1
  262. package/dist/lib/services/collection-permission.service.d.ts +28 -0
  263. package/dist/lib/services/collection-permission.service.d.ts.map +1 -1
  264. package/dist/lib/services/collection-permission.service.js +88 -32
  265. package/dist/lib/services/collection-permission.service.js.map +1 -1
  266. package/dist/lib/services/collection-state.service.d.ts +11 -1
  267. package/dist/lib/services/collection-state.service.d.ts.map +1 -1
  268. package/dist/lib/services/collection-state.service.js +25 -5
  269. package/dist/lib/services/collection-state.service.js.map +1 -1
  270. package/dist/lib/services/conversation-agent.service.d.ts +47 -4
  271. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  272. package/dist/lib/services/conversation-agent.service.js +85 -20
  273. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  274. package/dist/lib/services/conversation-attachment.service.d.ts +17 -0
  275. package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -1
  276. package/dist/lib/services/conversation-attachment.service.js +38 -10
  277. package/dist/lib/services/conversation-attachment.service.js.map +1 -1
  278. package/dist/lib/services/conversation-liveness-dom.service.d.ts +42 -0
  279. package/dist/lib/services/conversation-liveness-dom.service.d.ts.map +1 -0
  280. package/dist/lib/services/conversation-liveness-dom.service.js +74 -0
  281. package/dist/lib/services/conversation-liveness-dom.service.js.map +1 -0
  282. package/dist/lib/services/conversation-streaming.service.d.ts +22 -0
  283. package/dist/lib/services/conversation-streaming.service.d.ts.map +1 -1
  284. package/dist/lib/services/conversation-streaming.service.js +50 -10
  285. package/dist/lib/services/conversation-streaming.service.js.map +1 -1
  286. package/dist/lib/services/data-cache.service.d.ts +31 -0
  287. package/dist/lib/services/data-cache.service.d.ts.map +1 -1
  288. package/dist/lib/services/data-cache.service.js +71 -15
  289. package/dist/lib/services/data-cache.service.js.map +1 -1
  290. package/dist/lib/services/dialog.service.d.ts +13 -0
  291. package/dist/lib/services/dialog.service.d.ts.map +1 -1
  292. package/dist/lib/services/dialog.service.js +25 -5
  293. package/dist/lib/services/dialog.service.js.map +1 -1
  294. package/dist/lib/services/export.service.d.ts +2 -0
  295. package/dist/lib/services/export.service.d.ts.map +1 -1
  296. package/dist/lib/services/export.service.js +5 -1
  297. package/dist/lib/services/export.service.js.map +1 -1
  298. package/dist/lib/services/mention-parser.service.d.ts +10 -0
  299. package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
  300. package/dist/lib/services/mention-parser.service.js +25 -5
  301. package/dist/lib/services/mention-parser.service.js.map +1 -1
  302. package/dist/lib/services/notification.service.d.ts +54 -6
  303. package/dist/lib/services/notification.service.d.ts.map +1 -1
  304. package/dist/lib/services/notification.service.js +123 -27
  305. package/dist/lib/services/notification.service.js.map +1 -1
  306. package/dist/lib/services/realtime-audio-recorder.d.ts +4 -4
  307. package/dist/lib/services/realtime-audio-recorder.js +12 -12
  308. package/dist/lib/services/realtime-audio-recorder.js.map +1 -1
  309. package/dist/lib/services/realtime-pcm-wav.d.ts +4 -0
  310. package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -1
  311. package/dist/lib/services/realtime-pcm-wav.js +10 -2
  312. package/dist/lib/services/realtime-pcm-wav.js.map +1 -1
  313. package/dist/lib/services/search.service.d.ts +42 -9
  314. package/dist/lib/services/search.service.d.ts.map +1 -1
  315. package/dist/lib/services/search.service.js +103 -23
  316. package/dist/lib/services/search.service.js.map +1 -1
  317. package/dist/lib/services/toast.service.d.ts +19 -1
  318. package/dist/lib/services/toast.service.d.ts.map +1 -1
  319. package/dist/lib/services/toast.service.js +45 -9
  320. package/dist/lib/services/toast.service.js.map +1 -1
  321. package/dist/lib/services/ui-command-handler.service.d.ts +56 -5
  322. package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
  323. package/dist/lib/services/ui-command-handler.service.js +113 -16
  324. package/dist/lib/services/ui-command-handler.service.js.map +1 -1
  325. package/dist/lib/utils/agent-artifact-summary.d.ts +2 -2
  326. package/dist/lib/utils/agent-artifact-summary.js +3 -3
  327. package/dist/lib/utils/agent-artifact-summary.js.map +1 -1
  328. package/dist/lib/utils/agent-turn-routing.d.ts +70 -0
  329. package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -0
  330. package/dist/lib/utils/agent-turn-routing.js +84 -0
  331. package/dist/lib/utils/agent-turn-routing.js.map +1 -0
  332. package/dist/lib/utils/artifact-panel-action.d.ts +15 -4
  333. package/dist/lib/utils/artifact-panel-action.d.ts.map +1 -1
  334. package/dist/lib/utils/artifact-panel-action.js +10 -2
  335. package/dist/lib/utils/artifact-panel-action.js.map +1 -1
  336. package/dist/lib/utils/decision-routing.d.ts +68 -0
  337. package/dist/lib/utils/decision-routing.d.ts.map +1 -0
  338. package/dist/lib/utils/decision-routing.js +101 -0
  339. package/dist/lib/utils/decision-routing.js.map +1 -0
  340. package/dist/lib/utils/distinct-artifacts.d.ts +2 -0
  341. package/dist/lib/utils/distinct-artifacts.d.ts.map +1 -1
  342. package/dist/lib/utils/distinct-artifacts.js +5 -1
  343. package/dist/lib/utils/distinct-artifacts.js.map +1 -1
  344. package/dist/lib/utils/plan-mode-preference.d.ts +2 -2
  345. package/dist/lib/utils/plan-mode-preference.js +6 -6
  346. package/dist/lib/utils/plan-mode-preference.js.map +1 -1
  347. package/dist/public-api.d.ts +5 -0
  348. package/dist/public-api.d.ts.map +1 -1
  349. package/dist/public-api.js +8 -0
  350. package/dist/public-api.js.map +1 -1
  351. package/package.json +32 -32
@@ -1 +1 @@
1
- {"version":3,"file":"collection-form-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-form-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { UserInfo, Metadata } from '@memberjunction/core';\nimport { MJCollectionEntity } from '@memberjunction/core-entities';\nimport { DialogService } from '../../services/dialog.service';\nimport { ToastService } from '../../services/toast.service';\nimport { CollectionPermissionService } from '../../services/collection-permission.service';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/**\n * Modal for creating and editing collections\n */\n@Component({\n standalone: false,\n selector: 'mj-collection-form-modal',\n template: `\n @if (isOpen) {\n <mj-dialog\n [Title]=\"collection?.ID ? 'Edit Collection' : 'New Collection'\"\n (Close)=\"onCancel()\"\n [Width]=\"500\"\n [MinWidth]=\"300\"\n [Visible]=\"true\">\n <div class=\"collection-form\">\n <div class=\"form-group\">\n <label class=\"form-label\">\n Name <span class=\"required\">*</span>\n </label>\n <input\n type=\"text\"\n class=\"k-textbox form-control\"\n [(ngModel)]=\"formData.name\"\n placeholder=\"Collection name\"\n #nameInput\n (keydown.enter)=\"onSave()\">\n </div>\n <div class=\"form-group\">\n <label class=\"form-label\">Description</label>\n <textarea\n class=\"k-textarea form-control\"\n [(ngModel)]=\"formData.description\"\n placeholder=\"Optional description\"\n rows=\"3\">\n </textarea>\n </div>\n @if (parentCollection) {\n <div class=\"form-group\">\n <label class=\"form-label\">Parent Collection</label>\n <div class=\"parent-info\">\n <i class=\"fas fa-folder\"></i>\n <span>{{ parentCollection.Name }}</span>\n </div>\n </div>\n }\n @if (errorMessage) {\n <mj-alert Variant=\"error\">{{ errorMessage }}</mj-alert>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"onCancel()\" [disabled]=\"isSaving\">\n Cancel\n </button>\n <button mjButton\n variant=\"primary\"\n (click)=\"onSave()\"\n [disabled]=\"!canSave || isSaving\">\n {{ isSaving ? 'Saving...' : 'Save' }}\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .collection-form {\n padding: 20px 0;\n }\n\n .form-group {\n margin-bottom: 20px;\n }\n\n .form-label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .required {\n color: var(--mj-status-error);\n }\n\n .form-control {\n width: 100%;\n }\n\n .parent-info {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n }\n\n .parent-info i {\n color: var(--mj-brand-primary);\n }\n `]\n})\nexport class CollectionFormModalComponent extends BaseAngularComponent implements OnChanges {\n @Input() isOpen: boolean = false;\n @Input() collection?: MJCollectionEntity;\n @Input() parentCollection?: MJCollectionEntity;\n @Input() environmentId!: string;\n @Input() currentUser!: UserInfo;\n\n @Output() saved = new EventEmitter<MJCollectionEntity>();\n @Output() cancelled = new EventEmitter<void>();\n\n public formData = {\n name: '',\n description: ''\n };\n\n public isSaving: boolean = false;\n public errorMessage: string = '';\n\n constructor(\n private toastService: ToastService,\n private permissionService: CollectionPermissionService\n ) {\n super();}\n\n ngOnChanges(changes: SimpleChanges) {\n // Bind provider-aware service to this component's provider on every input change pass.\n this.permissionService.Provider = this.ProviderToUse;\n\n if (changes['collection'] || changes['isOpen']) {\n if (this.isOpen && this.collection) {\n this.formData.name = this.collection.Name || '';\n this.formData.description = this.collection.Description || '';\n } else if (this.isOpen && !this.collection) {\n this.formData = { name: '', description: '' };\n }\n }\n }\n\n get canSave(): boolean {\n return this.formData.name.trim().length > 0;\n }\n\n async onSave(): Promise<void> {\n if (!this.canSave) return;\n\n this.isSaving = true;\n this.errorMessage = '';\n\n try {\n // Validate permissions before saving\n if (this.collection) {\n // Editing existing collection - need Edit permission\n if (this.collection.OwnerID && !UUIDsEqual(this.collection.OwnerID, this.currentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n this.collection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n\n if (!permission?.canEdit) {\n this.errorMessage = 'You do not have Edit permission for this collection.';\n this.isSaving = false;\n return;\n }\n }\n } else if (this.parentCollection) {\n // Creating child collection - need Edit permission on parent\n if (this.parentCollection.OwnerID && !UUIDsEqual(this.parentCollection.OwnerID, this.currentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n this.parentCollection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n\n if (!permission?.canEdit) {\n this.errorMessage = 'You do not have Edit permission for the parent collection.';\n this.isSaving = false;\n return;\n }\n }\n }\n\n const md = this.ProviderToUse;\n const collection = this.collection ||\n await md.GetEntityObject<MJCollectionEntity>('MJ: Collections', this.currentUser);\n\n collection.Name = this.formData.name.trim();\n collection.Description = this.formData.description.trim() || null;\n collection.EnvironmentID = this.environmentId;\n\n // Set owner and parent relationship if creating new collection\n if (!this.collection) {\n if (this.parentCollection) {\n // Child collection inherits parent's owner to maintain permission hierarchy\n collection.ParentID = this.parentCollection.ID;\n collection.OwnerID = this.parentCollection.OwnerID || this.currentUser.ID;\n } else {\n // Root collection - current user becomes owner\n collection.OwnerID = this.currentUser.ID;\n }\n } else if (this.parentCollection) {\n // Updating existing collection's parent\n collection.ParentID = this.parentCollection.ID;\n }\n\n const saved = await collection.Save();\n if (saved) {\n // If creating new collection, set up permissions\n if (!this.collection) {\n if (this.parentCollection) {\n // Child collection - copy non-owner permissions from parent.\n // (The owner gets implicit full access via OwnerID; no self-share row is written.)\n await this.permissionService.copyParentPermissions(\n this.parentCollection.ID,\n collection.ID,\n this.currentUser\n );\n }\n // Root collection: nothing to do. CollectionPermissionProvider treats OwnerID as\n // an implicit full-access grant — writing a self-share row was redundant and was\n // failing server-side auth on freshly-created collections.\n }\n\n this.toastService.success(\n this.collection ? 'Collection updated successfully' : 'Collection created successfully'\n );\n this.saved.emit(collection);\n this.resetForm();\n } else {\n this.errorMessage = collection.LatestResult?.Message || 'Failed to save collection';\n this.toastService.error(this.errorMessage);\n }\n } catch (error) {\n console.error('Error saving collection:', error);\n this.errorMessage = 'An unexpected error occurred';\n this.toastService.error(this.errorMessage);\n } finally {\n this.isSaving = false;\n }\n }\n\n onCancel(): void {\n this.resetForm();\n this.cancelled.emit();\n }\n\n private resetForm(): void {\n this.formData = {\n name: '',\n description: ''\n };\n this.errorMessage = '';\n }\n}\n"]}
1
+ {"version":3,"file":"collection-form-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-form-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { UserInfo, Metadata } from '@memberjunction/core';\nimport { MJCollectionEntity } from '@memberjunction/core-entities';\nimport { DialogService } from '../../services/dialog.service';\nimport { ToastService } from '../../services/toast.service';\nimport { CollectionPermissionService } from '../../services/collection-permission.service';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/**\n * Modal for creating and editing collections\n */\n@Component({\n standalone: false,\n selector: 'mj-collection-form-modal',\n template: `\n @if (isOpen) {\n <mj-dialog\n [Title]=\"collection?.ID ? 'Edit Collection' : 'New Collection'\"\n (Close)=\"onCancel()\"\n [Width]=\"500\"\n [MinWidth]=\"300\"\n [Visible]=\"true\">\n <div class=\"collection-form\">\n <div class=\"form-group\">\n <label class=\"form-label\">\n Name <span class=\"required\">*</span>\n </label>\n <input\n type=\"text\"\n class=\"k-textbox form-control\"\n [(ngModel)]=\"formData.name\"\n placeholder=\"Collection name\"\n #nameInput\n (keydown.enter)=\"onSave()\">\n </div>\n <div class=\"form-group\">\n <label class=\"form-label\">Description</label>\n <textarea\n class=\"k-textarea form-control\"\n [(ngModel)]=\"formData.description\"\n placeholder=\"Optional description\"\n rows=\"3\">\n </textarea>\n </div>\n @if (parentCollection) {\n <div class=\"form-group\">\n <label class=\"form-label\">Parent Collection</label>\n <div class=\"parent-info\">\n <i class=\"fas fa-folder\"></i>\n <span>{{ parentCollection.Name }}</span>\n </div>\n </div>\n }\n @if (errorMessage) {\n <mj-alert Variant=\"error\">{{ errorMessage }}</mj-alert>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"onCancel()\" [disabled]=\"isSaving\">\n Cancel\n </button>\n <button mjButton\n variant=\"primary\"\n (click)=\"onSave()\"\n [disabled]=\"!canSave || isSaving\">\n {{ isSaving ? 'Saving...' : 'Save' }}\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .collection-form {\n padding: 20px 0;\n }\n\n .form-group {\n margin-bottom: 20px;\n }\n\n .form-label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .required {\n color: var(--mj-status-error);\n }\n\n .form-control {\n width: 100%;\n }\n\n .parent-info {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n }\n\n .parent-info i {\n color: var(--mj-brand-primary);\n }\n `]\n})\nexport class CollectionFormModalComponent extends BaseAngularComponent implements 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() Collection?: MJCollectionEntity;\n\n /** @deprecated Use {@link Collection}. */\n @Input() set collection(value: MJCollectionEntity | undefined) {\n this.Collection = value;\n }\n /** @deprecated Use {@link Collection}. */\n get collection(): MJCollectionEntity | undefined {\n return this.Collection;\n }\n @Input() ParentCollection?: MJCollectionEntity;\n\n /** @deprecated Use {@link ParentCollection}. */\n @Input() set parentCollection(value: MJCollectionEntity | undefined) {\n this.ParentCollection = value;\n }\n /** @deprecated Use {@link ParentCollection}. */\n get parentCollection(): MJCollectionEntity | undefined {\n return this.ParentCollection;\n }\n @Input() EnvironmentId!: string;\n\n /** @deprecated Use {@link EnvironmentId}. */\n @Input() set environmentId(value: string) {\n this.EnvironmentId = value;\n }\n /** @deprecated Use {@link EnvironmentId}. */\n get environmentId(): string {\n return this.EnvironmentId;\n }\n @Input() CurrentUser!: UserInfo;\n\n /** @deprecated Use {@link CurrentUser}. */\n @Input() set currentUser(value: UserInfo) {\n this.CurrentUser = value;\n }\n /** @deprecated Use {@link CurrentUser}. */\n get currentUser(): UserInfo {\n return this.CurrentUser;\n }\n\n @Output() Saved = new EventEmitter<MJCollectionEntity>();\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 public FormData = {\n name: '',\n description: ''\n };\n\n /** @deprecated Use {@link FormData}. */\n public get formData() {\n return this.FormData;\n }\n /** @deprecated Use {@link FormData}. */\n public set formData(value) {\n this.FormData = value;\n }\n\n public IsSaving: boolean = false;\n\n /** @deprecated Use {@link IsSaving}. */\n public get isSaving(): boolean {\n return this.IsSaving;\n }\n /** @deprecated Use {@link IsSaving}. */\n public set isSaving(value: boolean) {\n this.IsSaving = value;\n }\n public errorMessage: string = '';\n\n constructor(\n private toastService: ToastService,\n private permissionService: CollectionPermissionService\n ) {\n super();}\n\n ngOnChanges(changes: SimpleChanges) {\n // Bind provider-aware service to this component's provider on every input change pass.\n this.permissionService.Provider = this.ProviderToUse;\n\n if (changes['collection'] || changes['isOpen']) {\n if (this.IsOpen && this.Collection) {\n this.FormData.name = this.Collection.Name || '';\n this.FormData.description = this.Collection.Description || '';\n } else if (this.IsOpen && !this.Collection) {\n this.FormData = { name: '', description: '' };\n }\n }\n }\n\n get CanSave(): boolean {\n return this.FormData.name.trim().length > 0;\n }\n\n /** @deprecated Use {@link CanSave}. */\n get canSave(): boolean {\n return this.CanSave;\n }\n\n async OnSave(): Promise<void> {\n if (!this.CanSave) return;\n\n this.IsSaving = true;\n this.errorMessage = '';\n\n try {\n // Validate permissions before saving\n if (this.Collection) {\n // Editing existing collection - need Edit permission\n if (this.Collection.OwnerID && !UUIDsEqual(this.Collection.OwnerID, this.CurrentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n this.Collection.ID,\n this.CurrentUser.ID,\n this.CurrentUser\n );\n\n if (!permission?.canEdit) {\n this.errorMessage = 'You do not have Edit permission for this collection.';\n this.IsSaving = false;\n return;\n }\n }\n } else if (this.ParentCollection) {\n // Creating child collection - need Edit permission on parent\n if (this.ParentCollection.OwnerID && !UUIDsEqual(this.ParentCollection.OwnerID, this.CurrentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n this.ParentCollection.ID,\n this.CurrentUser.ID,\n this.CurrentUser\n );\n\n if (!permission?.canEdit) {\n this.errorMessage = 'You do not have Edit permission for the parent collection.';\n this.IsSaving = false;\n return;\n }\n }\n }\n\n const md = this.ProviderToUse;\n const collection = this.Collection ||\n await md.GetEntityObject<MJCollectionEntity>('MJ: Collections', this.CurrentUser);\n\n collection.Name = this.FormData.name.trim();\n collection.Description = this.FormData.description.trim() || null;\n collection.EnvironmentID = this.EnvironmentId;\n\n // Set owner and parent relationship if creating new collection\n if (!this.Collection) {\n if (this.ParentCollection) {\n // Child collection inherits parent's owner to maintain permission hierarchy\n collection.ParentID = this.ParentCollection.ID;\n collection.OwnerID = this.ParentCollection.OwnerID || this.CurrentUser.ID;\n } else {\n // Root collection - current user becomes owner\n collection.OwnerID = this.CurrentUser.ID;\n }\n } else if (this.ParentCollection) {\n // Updating existing collection's parent\n collection.ParentID = this.ParentCollection.ID;\n }\n\n const saved = await collection.Save();\n if (saved) {\n // If creating new collection, set up permissions\n if (!this.Collection) {\n if (this.ParentCollection) {\n // Child collection - copy non-owner permissions from parent.\n // (The owner gets implicit full access via OwnerID; no self-share row is written.)\n await this.permissionService.copyParentPermissions(\n this.ParentCollection.ID,\n collection.ID,\n this.CurrentUser\n );\n }\n // Root collection: nothing to do. CollectionPermissionProvider treats OwnerID as\n // an implicit full-access grant — writing a self-share row was redundant and was\n // failing server-side auth on freshly-created collections.\n }\n\n this.toastService.success(\n this.Collection ? 'Collection updated successfully' : 'Collection created successfully'\n );\n this.Saved.emit(collection);\n this.resetForm();\n } else {\n this.errorMessage = collection.LatestResult?.Message || 'Failed to save collection';\n this.toastService.error(this.errorMessage);\n }\n } catch (error) {\n console.error('Error saving collection:', error);\n this.errorMessage = 'An unexpected error occurred';\n this.toastService.error(this.errorMessage);\n } finally {\n this.IsSaving = false;\n }\n }\n\n /** @deprecated Use {@link OnSave}. */\n async onSave(): Promise<void> {\n return this.OnSave();\n }\n\n onCancel(): void {\n this.resetForm();\n this.cancelled.emit();\n }\n\n private resetForm(): void {\n this.FormData = {\n name: '',\n description: ''\n };\n this.errorMessage = '';\n }\n}\n"]}
@@ -13,33 +13,93 @@ export declare class CollectionShareModalComponent implements OnInit, OnChanges
13
13
  private permissionService;
14
14
  private cdr;
15
15
  private confirmService;
16
- isOpen: boolean;
17
- collection: MJCollectionEntity | null;
18
- currentUser: UserInfo;
19
- currentUserPermissions: CollectionPermission | null;
16
+ IsOpen: boolean;
17
+ /** @deprecated Use {@link IsOpen}. */
18
+ set isOpen(value: boolean);
19
+ /** @deprecated Use {@link IsOpen}. */
20
+ get isOpen(): boolean;
21
+ Collection: MJCollectionEntity | null;
22
+ /** @deprecated Use {@link Collection}. */
23
+ set collection(value: MJCollectionEntity | null);
24
+ /** @deprecated Use {@link Collection}. */
25
+ get collection(): MJCollectionEntity | null;
26
+ CurrentUser: UserInfo;
27
+ /** @deprecated Use {@link CurrentUser}. */
28
+ set currentUser(value: UserInfo);
29
+ /** @deprecated Use {@link CurrentUser}. */
30
+ get currentUser(): UserInfo;
31
+ CurrentUserPermissions: CollectionPermission | null;
32
+ /** @deprecated Use {@link CurrentUserPermissions}. */
33
+ set currentUserPermissions(value: CollectionPermission | null);
34
+ /** @deprecated Use {@link CurrentUserPermissions}. */
35
+ get currentUserPermissions(): CollectionPermission | null;
36
+ Saved: EventEmitter<void>;
37
+ /**
38
+ * @deprecated Use {@link Saved}.
39
+ *
40
+ * The same emitter under the old binding name, so a template still binding
41
+ * (saved) keeps working. Must stay AFTER Saved: class fields
42
+ * initialise in order, and the other way round this captures undefined.
43
+ */
20
44
  saved: EventEmitter<void>;
21
45
  cancelled: EventEmitter<void>;
22
- permissions: PermissionDisplay[];
23
- selectedUser: UserSearchResult | null;
24
- availablePermissions: string[];
25
- canModifyPermissions: boolean;
26
- newPermissions: PermissionSet;
46
+ Permissions: PermissionDisplay[];
47
+ /** @deprecated Use {@link Permissions}. */
48
+ get permissions(): PermissionDisplay[];
49
+ /** @deprecated Use {@link Permissions}. */
50
+ set permissions(value: PermissionDisplay[]);
51
+ SelectedUser: UserSearchResult | null;
52
+ /** @deprecated Use {@link SelectedUser}. */
53
+ get selectedUser(): UserSearchResult | null;
54
+ /** @deprecated Use {@link SelectedUser}. */
55
+ set selectedUser(value: UserSearchResult | null);
56
+ AvailablePermissions: string[];
57
+ /** @deprecated Use {@link AvailablePermissions}. */
58
+ get availablePermissions(): string[];
59
+ /** @deprecated Use {@link AvailablePermissions}. */
60
+ set availablePermissions(value: string[]);
61
+ CanModifyPermissions: boolean;
62
+ /** @deprecated Use {@link CanModifyPermissions}. */
63
+ get canModifyPermissions(): boolean;
64
+ /** @deprecated Use {@link CanModifyPermissions}. */
65
+ set canModifyPermissions(value: boolean);
66
+ NewPermissions: PermissionSet;
67
+ /** @deprecated Use {@link NewPermissions}. */
68
+ get newPermissions(): PermissionSet;
69
+ /** @deprecated Use {@link NewPermissions}. */
70
+ set newPermissions(value: PermissionSet);
27
71
  constructor(permissionService: CollectionPermissionService, cdr: ChangeDetectorRef, confirmService: MJConfirmService);
28
72
  ngOnInit(): Promise<void>;
29
73
  ngOnChanges(changes: SimpleChanges): Promise<void>;
30
74
  private loadPermissions;
31
75
  private updateAvailablePermissions;
76
+ GetExcludedUserIds(): string[];
77
+ /** @deprecated Use {@link GetExcludedUserIds}. */
32
78
  getExcludedUserIds(): string[];
79
+ OnUserSelected(user: UserSearchResult): void;
80
+ /** @deprecated Use {@link OnUserSelected}. */
33
81
  onUserSelected(user: UserSearchResult): void;
82
+ OnClearSelection(): void;
83
+ /** @deprecated Use {@link OnClearSelection}. */
34
84
  onClearSelection(): void;
85
+ OnAddUser(): Promise<void>;
86
+ /** @deprecated Use {@link OnAddUser}. */
35
87
  onAddUser(): Promise<void>;
88
+ OnEditPermission(permission: PermissionDisplay): void;
89
+ /** @deprecated Use {@link OnEditPermission}. */
36
90
  onEditPermission(permission: PermissionDisplay): void;
91
+ OnCancelEdit(permission: PermissionDisplay): void;
92
+ /** @deprecated Use {@link OnCancelEdit}. */
37
93
  onCancelEdit(permission: PermissionDisplay): void;
94
+ OnSavePermission(permission: PermissionDisplay): Promise<void>;
95
+ /** @deprecated Use {@link OnSavePermission}. */
38
96
  onSavePermission(permission: PermissionDisplay): Promise<void>;
97
+ OnRevokePermission(permission: PermissionDisplay): Promise<void>;
98
+ /** @deprecated Use {@link OnRevokePermission}. */
39
99
  onRevokePermission(permission: PermissionDisplay): Promise<void>;
40
100
  onCancel(): void;
41
101
  static ɵfac: i0.ɵɵFactoryDeclaration<CollectionShareModalComponent, never>;
42
- static ɵcmp: i0.ɵɵComponentDeclaration<CollectionShareModalComponent, "mj-collection-share-modal", never, { "isOpen": { "alias": "isOpen"; "required": false; }; "collection": { "alias": "collection"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "currentUserPermissions": { "alias": "currentUserPermissions"; "required": false; }; }, { "saved": "saved"; "cancelled": "cancelled"; }, never, never, true, never>;
102
+ static ɵcmp: i0.ɵɵComponentDeclaration<CollectionShareModalComponent, "mj-collection-share-modal", never, { "IsOpen": { "alias": "IsOpen"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "Collection": { "alias": "Collection"; "required": false; }; "collection": { "alias": "collection"; "required": false; }; "CurrentUser": { "alias": "CurrentUser"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "CurrentUserPermissions": { "alias": "CurrentUserPermissions"; "required": false; }; "currentUserPermissions": { "alias": "currentUserPermissions"; "required": false; }; }, { "Saved": "Saved"; "saved": "saved"; "cancelled": "cancelled"; }, never, never, true, never>;
43
103
  }
44
104
  export {};
45
105
  //# sourceMappingURL=collection-share-modal.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-share-modal.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-share-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG5H,OAAO,EAA+D,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEjI,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAChI,OAAO,EAAuB,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;;AAGxF,UAAU,iBAAkB,SAAQ,oBAAoB;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,aAAa,CAAC;CACrC;AAED,qBAgNa,6BAA8B,YAAW,MAAM,EAAE,SAAS;IAsB/D,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,cAAc;IAvBjB,MAAM,EAAE,OAAO,CAAS;IACxB,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAC7C,WAAW,EAAG,QAAQ,CAAC;IACvB,sBAAsB,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAE1D,KAAK,qBAA4B;IACjC,SAAS,qBAA4B;IAE/C,WAAW,EAAE,iBAAiB,EAAE,CAAM;IACtC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAC7C,oBAAoB,EAAE,MAAM,EAAE,CAAM;IACpC,oBAAoB,EAAE,OAAO,CAAS;IAEtC,cAAc,EAAE,aAAa,CAK3B;gBAGU,iBAAiB,EAAE,2BAA2B,EAC9C,GAAG,EAAE,iBAAiB,EACtB,cAAc,EAAE,gBAAgB;IAGtC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQzB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAa1C,eAAe;IAiB7B,OAAO,CAAC,0BAA0B;IA0BlC,kBAAkB,IAAI,MAAM,EAAE;IAS9B,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAK5C,gBAAgB,IAAI,IAAI;IAWlB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAqChC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAKrD,YAAY,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAW3C,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC9D,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBtE,QAAQ,IAAI,IAAI;yCA9NP,6BAA6B;2CAA7B,6BAA6B;CAiOzC"}
1
+ {"version":3,"file":"collection-share-modal.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-share-modal.component.ts"],"names":[],"mappings":"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"}
@@ -322,29 +322,109 @@ export class CollectionShareModalComponent {
322
322
  permissionService;
323
323
  cdr;
324
324
  confirmService;
325
- isOpen = false;
326
- collection = null;
327
- currentUser;
328
- currentUserPermissions = null;
329
- saved = new EventEmitter();
325
+ IsOpen = false;
326
+ /** @deprecated Use {@link IsOpen}. */
327
+ set isOpen(value) {
328
+ this.IsOpen = value;
329
+ }
330
+ /** @deprecated Use {@link IsOpen}. */
331
+ get isOpen() {
332
+ return this.IsOpen;
333
+ }
334
+ Collection = null;
335
+ /** @deprecated Use {@link Collection}. */
336
+ set collection(value) {
337
+ this.Collection = value;
338
+ }
339
+ /** @deprecated Use {@link Collection}. */
340
+ get collection() {
341
+ return this.Collection;
342
+ }
343
+ CurrentUser;
344
+ /** @deprecated Use {@link CurrentUser}. */
345
+ set currentUser(value) {
346
+ this.CurrentUser = value;
347
+ }
348
+ /** @deprecated Use {@link CurrentUser}. */
349
+ get currentUser() {
350
+ return this.CurrentUser;
351
+ }
352
+ CurrentUserPermissions = null;
353
+ /** @deprecated Use {@link CurrentUserPermissions}. */
354
+ set currentUserPermissions(value) {
355
+ this.CurrentUserPermissions = value;
356
+ }
357
+ /** @deprecated Use {@link CurrentUserPermissions}. */
358
+ get currentUserPermissions() {
359
+ return this.CurrentUserPermissions;
360
+ }
361
+ Saved = new EventEmitter();
362
+ /**
363
+ * @deprecated Use {@link Saved}.
364
+ *
365
+ * The same emitter under the old binding name, so a template still binding
366
+ * (saved) keeps working. Must stay AFTER Saved: class fields
367
+ * initialise in order, and the other way round this captures undefined.
368
+ */
369
+ saved = this.Saved;
330
370
  cancelled = new EventEmitter();
331
- permissions = [];
332
- selectedUser = null;
333
- availablePermissions = [];
334
- canModifyPermissions = false;
335
- newPermissions = {
371
+ Permissions = [];
372
+ /** @deprecated Use {@link Permissions}. */
373
+ get permissions() {
374
+ return this.Permissions;
375
+ }
376
+ /** @deprecated Use {@link Permissions}. */
377
+ set permissions(value) {
378
+ this.Permissions = value;
379
+ }
380
+ SelectedUser = null;
381
+ /** @deprecated Use {@link SelectedUser}. */
382
+ get selectedUser() {
383
+ return this.SelectedUser;
384
+ }
385
+ /** @deprecated Use {@link SelectedUser}. */
386
+ set selectedUser(value) {
387
+ this.SelectedUser = value;
388
+ }
389
+ AvailablePermissions = [];
390
+ /** @deprecated Use {@link AvailablePermissions}. */
391
+ get availablePermissions() {
392
+ return this.AvailablePermissions;
393
+ }
394
+ /** @deprecated Use {@link AvailablePermissions}. */
395
+ set availablePermissions(value) {
396
+ this.AvailablePermissions = value;
397
+ }
398
+ CanModifyPermissions = false;
399
+ /** @deprecated Use {@link CanModifyPermissions}. */
400
+ get canModifyPermissions() {
401
+ return this.CanModifyPermissions;
402
+ }
403
+ /** @deprecated Use {@link CanModifyPermissions}. */
404
+ set canModifyPermissions(value) {
405
+ this.CanModifyPermissions = value;
406
+ }
407
+ NewPermissions = {
336
408
  canRead: true,
337
409
  canShare: false,
338
410
  canEdit: false,
339
411
  canDelete: false
340
412
  };
413
+ /** @deprecated Use {@link NewPermissions}. */
414
+ get newPermissions() {
415
+ return this.NewPermissions;
416
+ }
417
+ /** @deprecated Use {@link NewPermissions}. */
418
+ set newPermissions(value) {
419
+ this.NewPermissions = value;
420
+ }
341
421
  constructor(permissionService, cdr, confirmService) {
342
422
  this.permissionService = permissionService;
343
423
  this.cdr = cdr;
344
424
  this.confirmService = confirmService;
345
425
  }
346
426
  async ngOnInit() {
347
- if (this.collection) {
427
+ if (this.Collection) {
348
428
  await this.loadPermissions();
349
429
  this.updateAvailablePermissions();
350
430
  this.cdr.detectChanges(); // zone.js 0.15: sync changes after async don't trigger CD
@@ -355,17 +435,17 @@ export class CollectionShareModalComponent {
355
435
  const modalOpened = changes['isOpen']?.currentValue === true && changes['isOpen']?.previousValue === false;
356
436
  const collectionChanged = changes['collection'] && !changes['collection'].isFirstChange();
357
437
  const permissionsChanged = changes['currentUserPermissions'] && !changes['currentUserPermissions'].isFirstChange();
358
- if ((modalOpened || collectionChanged || permissionsChanged) && this.collection) {
438
+ if ((modalOpened || collectionChanged || permissionsChanged) && this.Collection) {
359
439
  await this.loadPermissions();
360
440
  this.updateAvailablePermissions();
361
441
  this.cdr.detectChanges(); // zone.js 0.15: sync changes after async don't trigger CD
362
442
  }
363
443
  }
364
444
  async loadPermissions() {
365
- if (!this.collection)
445
+ if (!this.Collection)
366
446
  return;
367
- const perms = await this.permissionService.loadPermissions(this.collection.ID, this.currentUser);
368
- this.permissions = perms.map(p => ({
447
+ const perms = await this.permissionService.loadPermissions(this.Collection.ID, this.CurrentUser);
448
+ this.Permissions = perms.map(p => ({
369
449
  ...p,
370
450
  isEditing: false,
371
451
  editingPermissions: {
@@ -381,39 +461,47 @@ export class CollectionShareModalComponent {
381
461
  // User is owner if:
382
462
  // 1. OwnerID is null/undefined (backwards compatibility with old collections)
383
463
  // 2. OwnerID matches current user ID
384
- const isOwner = !this.collection?.OwnerID || UUIDsEqual(this.collection.OwnerID, this.currentUser.ID);
464
+ const isOwner = !this.Collection?.OwnerID || UUIDsEqual(this.Collection.OwnerID, this.CurrentUser.ID);
385
465
  // Allow modification if user is owner OR has Share permission
386
- this.canModifyPermissions = isOwner || (this.currentUserPermissions?.canShare || false);
387
- const userPerms = this.currentUserPermissions || {
466
+ this.CanModifyPermissions = isOwner || (this.CurrentUserPermissions?.canShare || false);
467
+ const userPerms = this.CurrentUserPermissions || {
388
468
  canRead: true,
389
469
  canShare: false,
390
470
  canEdit: false,
391
471
  canDelete: false
392
472
  };
393
- this.availablePermissions = this.permissionService.getAvailablePermissions(userPerms, isOwner);
473
+ this.AvailablePermissions = this.permissionService.getAvailablePermissions(userPerms, isOwner);
394
474
  console.log('Share modal permissions:', {
395
- collectionId: this.collection?.ID,
396
- ownerId: this.collection?.OwnerID,
397
- currentUserId: this.currentUser.ID,
475
+ collectionId: this.Collection?.ID,
476
+ ownerId: this.Collection?.OwnerID,
477
+ currentUserId: this.CurrentUser.ID,
398
478
  isOwner,
399
- availablePermissions: this.availablePermissions
479
+ availablePermissions: this.AvailablePermissions
400
480
  });
401
481
  }
402
- getExcludedUserIds() {
403
- const ids = this.permissions.map(p => p.userId);
404
- ids.push(this.currentUser.ID); // Can't share with yourself
405
- if (this.collection?.OwnerID) {
406
- ids.push(this.collection.OwnerID); // Owner already has all permissions
482
+ GetExcludedUserIds() {
483
+ const ids = this.Permissions.map(p => p.userId);
484
+ ids.push(this.CurrentUser.ID); // Can't share with yourself
485
+ if (this.Collection?.OwnerID) {
486
+ ids.push(this.Collection.OwnerID); // Owner already has all permissions
407
487
  }
408
488
  return ids;
409
489
  }
410
- onUserSelected(user) {
411
- this.selectedUser = user;
490
+ /** @deprecated Use {@link GetExcludedUserIds}. */
491
+ getExcludedUserIds() {
492
+ return this.GetExcludedUserIds();
493
+ }
494
+ OnUserSelected(user) {
495
+ this.SelectedUser = user;
412
496
  this.cdr.detectChanges();
413
497
  }
414
- onClearSelection() {
415
- this.selectedUser = null;
416
- this.newPermissions = {
498
+ /** @deprecated Use {@link OnUserSelected}. */
499
+ onUserSelected(user) {
500
+ return this.OnUserSelected(user);
501
+ }
502
+ OnClearSelection() {
503
+ this.SelectedUser = null;
504
+ this.NewPermissions = {
417
505
  canRead: true,
418
506
  canShare: false,
419
507
  canEdit: false,
@@ -421,39 +509,51 @@ export class CollectionShareModalComponent {
421
509
  };
422
510
  this.cdr.detectChanges();
423
511
  }
424
- async onAddUser() {
425
- if (!this.selectedUser || !this.collection)
512
+ /** @deprecated Use {@link OnClearSelection}. */
513
+ onClearSelection() {
514
+ return this.OnClearSelection();
515
+ }
516
+ async OnAddUser() {
517
+ if (!this.SelectedUser || !this.Collection)
426
518
  return;
427
519
  try {
428
520
  // User is owner if OwnerID is null (old collections) or matches current user
429
- const isOwner = !this.collection.OwnerID || UUIDsEqual(this.collection.OwnerID, this.currentUser.ID);
430
- const userPerms = this.currentUserPermissions || {
521
+ const isOwner = !this.Collection.OwnerID || UUIDsEqual(this.Collection.OwnerID, this.CurrentUser.ID);
522
+ const userPerms = this.CurrentUserPermissions || {
431
523
  canRead: true,
432
524
  canShare: false,
433
525
  canEdit: false,
434
526
  canDelete: false
435
527
  };
436
528
  // Validate permissions
437
- if (!this.permissionService.validatePermissions(this.newPermissions, userPerms, isOwner)) {
529
+ if (!this.permissionService.validatePermissions(this.NewPermissions, userPerms, isOwner)) {
438
530
  MJNotificationService.Instance.CreateSimpleNotification('You cannot grant permissions you do not have', 'warning', 4000);
439
531
  return;
440
532
  }
441
533
  // Use cascade grant to apply permissions to all child collections
442
- await this.permissionService.grantPermissionCascade(this.collection.ID, this.selectedUser.id, this.newPermissions, this.currentUser.ID, this.currentUser);
534
+ await this.permissionService.grantPermissionCascade(this.Collection.ID, this.SelectedUser.id, this.NewPermissions, this.CurrentUser.ID, this.CurrentUser);
443
535
  await this.loadPermissions();
444
- this.onClearSelection();
445
- this.saved.emit();
536
+ this.OnClearSelection();
537
+ this.Saved.emit();
446
538
  }
447
539
  catch (error) {
448
540
  console.error('Error adding user:', error);
449
541
  MJNotificationService.Instance.CreateSimpleNotification('Failed to add user. Please try again.', 'error', 5000);
450
542
  }
451
543
  }
452
- onEditPermission(permission) {
544
+ /** @deprecated Use {@link OnAddUser}. */
545
+ async onAddUser() {
546
+ return this.OnAddUser();
547
+ }
548
+ OnEditPermission(permission) {
453
549
  permission.isEditing = true;
454
550
  this.cdr.detectChanges();
455
551
  }
456
- onCancelEdit(permission) {
552
+ /** @deprecated Use {@link OnEditPermission}. */
553
+ onEditPermission(permission) {
554
+ return this.OnEditPermission(permission);
555
+ }
556
+ OnCancelEdit(permission) {
457
557
  permission.isEditing = false;
458
558
  permission.editingPermissions = {
459
559
  canRead: permission.canRead,
@@ -463,11 +563,15 @@ export class CollectionShareModalComponent {
463
563
  };
464
564
  this.cdr.detectChanges();
465
565
  }
466
- async onSavePermission(permission) {
566
+ /** @deprecated Use {@link OnCancelEdit}. */
567
+ onCancelEdit(permission) {
568
+ return this.OnCancelEdit(permission);
569
+ }
570
+ async OnSavePermission(permission) {
467
571
  try {
468
572
  // User is owner if OwnerID is null (old collections) or matches current user
469
- const isOwner = !this.collection?.OwnerID || UUIDsEqual(this.collection?.OwnerID, this.currentUser.ID);
470
- const userPerms = this.currentUserPermissions || {
573
+ const isOwner = !this.Collection?.OwnerID || UUIDsEqual(this.Collection?.OwnerID, this.CurrentUser.ID);
574
+ const userPerms = this.CurrentUserPermissions || {
471
575
  canRead: true,
472
576
  canShare: false,
473
577
  canEdit: false,
@@ -479,35 +583,43 @@ export class CollectionShareModalComponent {
479
583
  return;
480
584
  }
481
585
  // Use cascade update to apply changes to all child collections
482
- await this.permissionService.updatePermissionCascade(this.collection.ID, permission.userId, permission.editingPermissions, this.currentUser);
586
+ await this.permissionService.updatePermissionCascade(this.Collection.ID, permission.userId, permission.editingPermissions, this.CurrentUser);
483
587
  await this.loadPermissions();
484
- this.saved.emit();
588
+ this.Saved.emit();
485
589
  }
486
590
  catch (error) {
487
591
  console.error('Error updating permission:', error);
488
592
  MJNotificationService.Instance.CreateSimpleNotification('Failed to update permissions. Please try again.', 'error', 5000);
489
593
  }
490
594
  }
491
- async onRevokePermission(permission) {
595
+ /** @deprecated Use {@link OnSavePermission}. */
596
+ async onSavePermission(permission) {
597
+ return this.OnSavePermission(permission);
598
+ }
599
+ async OnRevokePermission(permission) {
492
600
  if (!(await this.confirmService.ConfirmDelete({ title: 'Remove Access', message: `Remove ${permission.userName}'s access to this collection and all its child collections?`, confirmText: 'Remove' }))) {
493
601
  return;
494
602
  }
495
603
  try {
496
604
  // Use cascade revoke to remove access from all child collections
497
- await this.permissionService.revokePermissionCascade(this.collection.ID, permission.userId, this.currentUser);
605
+ await this.permissionService.revokePermissionCascade(this.Collection.ID, permission.userId, this.CurrentUser);
498
606
  await this.loadPermissions();
499
- this.saved.emit();
607
+ this.Saved.emit();
500
608
  }
501
609
  catch (error) {
502
610
  console.error('Error revoking permission:', error);
503
611
  MJNotificationService.Instance.CreateSimpleNotification('Failed to revoke permission. Please try again.', 'error', 5000);
504
612
  }
505
613
  }
614
+ /** @deprecated Use {@link OnRevokePermission}. */
615
+ async onRevokePermission(permission) {
616
+ return this.OnRevokePermission(permission);
617
+ }
506
618
  onCancel() {
507
619
  this.cancelled.emit();
508
620
  }
509
621
  static ɵfac = function CollectionShareModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CollectionShareModalComponent)(i0.ɵɵdirectiveInject(i1.CollectionPermissionService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2.MJConfirmService)); };
510
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionShareModalComponent, selectors: [["mj-collection-share-modal"]], inputs: { isOpen: "isOpen", collection: "collection", currentUser: "currentUser", currentUserPermissions: "currentUserPermissions" }, 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, "fa-solid", "fa-trash"], [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 CollectionShareModalComponent_Template(rf, ctx) { if (rf & 1) {
622
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionShareModalComponent, selectors: [["mj-collection-share-modal"]], inputs: { IsOpen: "IsOpen", isOpen: "isOpen", Collection: "Collection", collection: "collection", CurrentUser: "CurrentUser", currentUser: "currentUser", CurrentUserPermissions: "CurrentUserPermissions", currentUserPermissions: "currentUserPermissions" }, 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, "fa-solid", "fa-trash"], [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 CollectionShareModalComponent_Template(rf, ctx) { if (rf & 1) {
511
623
  i0.ɵɵconditionalCreate(0, CollectionShareModalComponent_Conditional_0_Template, 17, 11, "mj-window", 0);
512
624
  } if (rf & 2) {
513
625
  i0.ɵɵconditional(ctx.isOpen && ctx.collection ? 0 : -1);
@@ -717,14 +829,24 @@ export class CollectionShareModalComponent {
717
829
  </mj-window>
718
830
  }
719
831
  `, 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"] }]
720
- }], () => [{ type: i1.CollectionPermissionService }, { type: i0.ChangeDetectorRef }, { type: i2.MJConfirmService }], { isOpen: [{
832
+ }], () => [{ type: i1.CollectionPermissionService }, { type: i0.ChangeDetectorRef }, { type: i2.MJConfirmService }], { IsOpen: [{
833
+ type: Input
834
+ }], isOpen: [{
835
+ type: Input
836
+ }], Collection: [{
721
837
  type: Input
722
838
  }], collection: [{
723
839
  type: Input
840
+ }], CurrentUser: [{
841
+ type: Input
724
842
  }], currentUser: [{
725
843
  type: Input
844
+ }], CurrentUserPermissions: [{
845
+ type: Input
726
846
  }], currentUserPermissions: [{
727
847
  type: Input
848
+ }], Saved: [{
849
+ type: Output
728
850
  }], saved: [{
729
851
  type: Output
730
852
  }], cancelled: [{