@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.
- package/README.md +43 -2
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +19 -3
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -1
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js +39 -7
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
- package/dist/lib/components/agent/active-agent-indicator.component.d.ts +74 -6
- package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -1
- package/dist/lib/components/agent/active-agent-indicator.component.js +111 -21
- package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -1
- package/dist/lib/components/agent/agent-process-panel.component.d.ts +31 -5
- package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -1
- package/dist/lib/components/agent/agent-process-panel.component.js +71 -15
- package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -1
- package/dist/lib/components/artifact/artifact-share-modal.component.d.ts +65 -9
- package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/artifact/artifact-share-modal.component.js +169 -57
- package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
- package/dist/lib/components/attachment/image-viewer.component.d.ts +77 -11
- package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/attachment/image-viewer.component.js +181 -47
- package/dist/lib/components/attachment/image-viewer.component.js.map +1 -1
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +129 -19
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +350 -116
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
- package/dist/lib/components/collection/artifact-create-modal.component.d.ts +60 -8
- package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/artifact-create-modal.component.js +130 -46
- package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts +63 -3
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-artifact-card.component.js +113 -19
- package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.d.ts +54 -8
- package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.js +130 -46
- package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.d.ts +70 -10
- package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.js +175 -53
- package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-tree.component.d.ts +89 -9
- package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-tree.component.js +220 -70
- package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
- package/dist/lib/components/collection/collection-view.component.d.ts +89 -11
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +154 -40
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts +390 -38
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +951 -367
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
- package/dist/lib/components/composer/ai-composer.component.d.ts +213 -18
- package/dist/lib/components/composer/ai-composer.component.d.ts.map +1 -1
- package/dist/lib/components/composer/ai-composer.component.js +388 -44
- package/dist/lib/components/composer/ai-composer.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts +12 -1
- package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-agent-picker.component.js +26 -4
- package/dist/lib/components/conversation/conversation-agent-picker.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +1191 -124
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +2816 -785
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +139 -19
- package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-empty-state.component.js +296 -59
- package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts +579 -78
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +2322 -823
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
- package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts +42 -4
- package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/pinned-messages-panel.component.js +93 -21
- package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
- package/dist/lib/components/dialogs/input-dialog.component.d.ts +57 -11
- package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -1
- package/dist/lib/components/dialogs/input-dialog.component.js +128 -16
- package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -1
- package/dist/lib/components/dialogs/rating-dialog.component.d.ts +68 -10
- package/dist/lib/components/dialogs/rating-dialog.component.d.ts.map +1 -1
- package/dist/lib/components/dialogs/rating-dialog.component.js +151 -27
- package/dist/lib/components/dialogs/rating-dialog.component.js.map +1 -1
- package/dist/lib/components/export/export-modal.component.d.ts +84 -10
- package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
- package/dist/lib/components/export/export-modal.component.js +173 -49
- package/dist/lib/components/export/export-modal.component.js.map +1 -1
- package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts +29 -3
- package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts.map +1 -1
- package/dist/lib/components/global-tasks/global-tasks-panel.component.js +58 -12
- package/dist/lib/components/global-tasks/global-tasks-panel.component.js.map +1 -1
- package/dist/lib/components/library/library-full-view.component.d.ts +57 -8
- package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/library/library-full-view.component.js +119 -35
- package/dist/lib/components/library/library-full-view.component.js.map +1 -1
- package/dist/lib/components/members/members-modal.component.d.ts +76 -10
- package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
- package/dist/lib/components/members/members-modal.component.js +164 -50
- package/dist/lib/components/members/members-modal.component.js.map +1 -1
- package/dist/lib/components/message/actionable-commands.component.d.ts +49 -5
- package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -1
- package/dist/lib/components/message/actionable-commands.component.js +140 -26
- package/dist/lib/components/message/actionable-commands.component.js.map +1 -1
- package/dist/lib/components/message/conversation-message-rating.component.d.ts +46 -10
- package/dist/lib/components/message/conversation-message-rating.component.d.ts.map +1 -1
- package/dist/lib/components/message/conversation-message-rating.component.js +120 -36
- package/dist/lib/components/message/conversation-message-rating.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +613 -74
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +1390 -422
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +490 -29
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +1088 -244
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +297 -29
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +598 -123
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts +64 -5
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.js +101 -11
- package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
- package/dist/lib/components/notification/activity-indicator.component.d.ts +6 -2
- package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -1
- package/dist/lib/components/notification/activity-indicator.component.js +13 -3
- package/dist/lib/components/notification/activity-indicator.component.js.map +1 -1
- package/dist/lib/components/notification/notification-badge.component.d.ts +15 -3
- package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -1
- package/dist/lib/components/notification/notification-badge.component.js +36 -8
- package/dist/lib/components/notification/notification-badge.component.js.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.d.ts +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.js +4 -4
- package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
- package/dist/lib/components/project/project-form-modal.component.d.ts +93 -11
- package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/project/project-form-modal.component.js +348 -87
- package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
- package/dist/lib/components/project/project-selector.component.d.ts +78 -8
- package/dist/lib/components/project/project-selector.component.d.ts.map +1 -1
- package/dist/lib/components/project/project-selector.component.js +177 -46
- package/dist/lib/components/project/project-selector.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +1 -1
- package/dist/lib/components/realtime/realtime-activity-rail.component.js +2 -2
- package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.js +2 -2
- package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +2 -2
- package/dist/lib/components/realtime/realtime-session-overlay.component.js +18 -18
- package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts +47 -23
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.js +136 -92
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +2 -2
- package/dist/lib/components/realtime/realtime-surface-tabs.component.js +4 -4
- package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.model.js +3 -3
- package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.d.ts +13 -11
- package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.js +29 -25
- package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +3 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +6 -2
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -1
- package/dist/lib/components/search/search-panel.component.d.ts +133 -22
- package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
- package/dist/lib/components/search/search-panel.component.js +312 -83
- package/dist/lib/components/search/search-panel.component.js.map +1 -1
- package/dist/lib/components/share/share-modal.component.d.ts +69 -9
- package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/share/share-modal.component.js +139 -31
- package/dist/lib/components/share/share-modal.component.js.map +1 -1
- package/dist/lib/components/shared/user-picker.component.d.ts +48 -8
- package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
- package/dist/lib/components/shared/user-picker.component.js +110 -30
- package/dist/lib/components/shared/user-picker.component.js.map +1 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +114 -11
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.js +199 -21
- package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
- package/dist/lib/components/sidebar/routines-section.component.d.ts +20 -1
- package/dist/lib/components/sidebar/routines-section.component.d.ts.map +1 -1
- package/dist/lib/components/sidebar/routines-section.component.js +25 -5
- package/dist/lib/components/sidebar/routines-section.component.js.map +1 -1
- package/dist/lib/components/slots/slot-interfaces.d.ts +19 -0
- package/dist/lib/components/slots/slot-interfaces.d.ts.map +1 -1
- package/dist/lib/components/slots/slot-interfaces.js.map +1 -1
- package/dist/lib/components/task/tasks-full-view.component.d.ts +95 -13
- package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/task/tasks-full-view.component.js +223 -75
- package/dist/lib/components/task/tasks-full-view.component.js.map +1 -1
- package/dist/lib/components/tasks/task-widget.component.d.ts +46 -6
- package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/task-widget.component.js +100 -16
- package/dist/lib/components/tasks/task-widget.component.js.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +64 -7
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +127 -27
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.d.ts +66 -8
- package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.js +146 -36
- package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
- package/dist/lib/components/toast/toast.component.d.ts +11 -1
- package/dist/lib/components/toast/toast.component.d.ts.map +1 -1
- package/dist/lib/components/toast/toast.component.js +25 -5
- package/dist/lib/components/toast/toast.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +385 -42
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +891 -292
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts +8 -0
- package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts.map +1 -1
- package/dist/lib/composer-plugins/base-conversation-mention.provider.js +8 -1
- package/dist/lib/composer-plugins/base-conversation-mention.provider.js.map +1 -1
- package/dist/lib/directives/chat-slot.directive.d.ts +5 -1
- package/dist/lib/directives/chat-slot.directive.d.ts.map +1 -1
- package/dist/lib/directives/chat-slot.directive.js.map +1 -1
- package/dist/lib/directives/search-shortcut.directive.d.ts +9 -1
- package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -1
- package/dist/lib/directives/search-shortcut.directive.js +14 -4
- package/dist/lib/directives/search-shortcut.directive.js.map +1 -1
- package/dist/lib/events/chat-events.d.ts +34 -7
- package/dist/lib/events/chat-events.d.ts.map +1 -1
- package/dist/lib/events/chat-events.js +37 -7
- package/dist/lib/events/chat-events.js.map +1 -1
- package/dist/lib/models/agent-turn.model.d.ts +113 -0
- package/dist/lib/models/agent-turn.model.d.ts.map +1 -0
- package/dist/lib/models/agent-turn.model.js +12 -0
- package/dist/lib/models/agent-turn.model.js.map +1 -0
- package/dist/lib/models/collection-view.model.js.map +1 -1
- package/dist/lib/models/conversation-state.model.d.ts +8 -0
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/models/conversation-state.model.js.map +1 -1
- package/dist/lib/models/lazy-artifact-info.d.ts +44 -12
- package/dist/lib/models/lazy-artifact-info.d.ts.map +1 -1
- package/dist/lib/models/lazy-artifact-info.js +98 -34
- package/dist/lib/models/lazy-artifact-info.js.map +1 -1
- package/dist/lib/services/active-tasks.service.d.ts +30 -4
- package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
- package/dist/lib/services/active-tasks.service.js +71 -19
- package/dist/lib/services/active-tasks.service.js.map +1 -1
- package/dist/lib/services/agent-state.service.d.ts +17 -1
- package/dist/lib/services/agent-state.service.d.ts.map +1 -1
- package/dist/lib/services/agent-state.service.js +48 -16
- package/dist/lib/services/agent-state.service.js.map +1 -1
- package/dist/lib/services/artifact-permission.service.d.ts +39 -0
- package/dist/lib/services/artifact-permission.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-permission.service.js +152 -17
- package/dist/lib/services/artifact-permission.service.js.map +1 -1
- package/dist/lib/services/artifact-state.service.d.ts +58 -5
- package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-state.service.js +135 -35
- package/dist/lib/services/artifact-state.service.js.map +1 -1
- package/dist/lib/services/collection-permission.service.d.ts +28 -0
- package/dist/lib/services/collection-permission.service.d.ts.map +1 -1
- package/dist/lib/services/collection-permission.service.js +88 -32
- package/dist/lib/services/collection-permission.service.js.map +1 -1
- package/dist/lib/services/collection-state.service.d.ts +11 -1
- package/dist/lib/services/collection-state.service.d.ts.map +1 -1
- package/dist/lib/services/collection-state.service.js +25 -5
- package/dist/lib/services/collection-state.service.js.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +47 -4
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +85 -20
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/conversation-attachment.service.d.ts +17 -0
- package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-attachment.service.js +38 -10
- package/dist/lib/services/conversation-attachment.service.js.map +1 -1
- package/dist/lib/services/conversation-liveness-dom.service.d.ts +42 -0
- package/dist/lib/services/conversation-liveness-dom.service.d.ts.map +1 -0
- package/dist/lib/services/conversation-liveness-dom.service.js +74 -0
- package/dist/lib/services/conversation-liveness-dom.service.js.map +1 -0
- package/dist/lib/services/conversation-streaming.service.d.ts +22 -0
- package/dist/lib/services/conversation-streaming.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-streaming.service.js +50 -10
- package/dist/lib/services/conversation-streaming.service.js.map +1 -1
- package/dist/lib/services/data-cache.service.d.ts +31 -0
- package/dist/lib/services/data-cache.service.d.ts.map +1 -1
- package/dist/lib/services/data-cache.service.js +71 -15
- package/dist/lib/services/data-cache.service.js.map +1 -1
- package/dist/lib/services/dialog.service.d.ts +13 -0
- package/dist/lib/services/dialog.service.d.ts.map +1 -1
- package/dist/lib/services/dialog.service.js +25 -5
- package/dist/lib/services/dialog.service.js.map +1 -1
- package/dist/lib/services/export.service.d.ts +2 -0
- package/dist/lib/services/export.service.d.ts.map +1 -1
- package/dist/lib/services/export.service.js +5 -1
- package/dist/lib/services/export.service.js.map +1 -1
- package/dist/lib/services/mention-parser.service.d.ts +10 -0
- package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
- package/dist/lib/services/mention-parser.service.js +25 -5
- package/dist/lib/services/mention-parser.service.js.map +1 -1
- package/dist/lib/services/notification.service.d.ts +54 -6
- package/dist/lib/services/notification.service.d.ts.map +1 -1
- package/dist/lib/services/notification.service.js +123 -27
- package/dist/lib/services/notification.service.js.map +1 -1
- package/dist/lib/services/realtime-audio-recorder.d.ts +4 -4
- package/dist/lib/services/realtime-audio-recorder.js +12 -12
- package/dist/lib/services/realtime-audio-recorder.js.map +1 -1
- package/dist/lib/services/realtime-pcm-wav.d.ts +4 -0
- package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -1
- package/dist/lib/services/realtime-pcm-wav.js +10 -2
- package/dist/lib/services/realtime-pcm-wav.js.map +1 -1
- package/dist/lib/services/search.service.d.ts +42 -9
- package/dist/lib/services/search.service.d.ts.map +1 -1
- package/dist/lib/services/search.service.js +103 -23
- package/dist/lib/services/search.service.js.map +1 -1
- package/dist/lib/services/toast.service.d.ts +19 -1
- package/dist/lib/services/toast.service.d.ts.map +1 -1
- package/dist/lib/services/toast.service.js +45 -9
- package/dist/lib/services/toast.service.js.map +1 -1
- package/dist/lib/services/ui-command-handler.service.d.ts +56 -5
- package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
- package/dist/lib/services/ui-command-handler.service.js +113 -16
- package/dist/lib/services/ui-command-handler.service.js.map +1 -1
- package/dist/lib/utils/agent-artifact-summary.d.ts +2 -2
- package/dist/lib/utils/agent-artifact-summary.js +3 -3
- package/dist/lib/utils/agent-artifact-summary.js.map +1 -1
- package/dist/lib/utils/agent-turn-routing.d.ts +70 -0
- package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -0
- package/dist/lib/utils/agent-turn-routing.js +84 -0
- package/dist/lib/utils/agent-turn-routing.js.map +1 -0
- package/dist/lib/utils/artifact-panel-action.d.ts +15 -4
- package/dist/lib/utils/artifact-panel-action.d.ts.map +1 -1
- package/dist/lib/utils/artifact-panel-action.js +10 -2
- package/dist/lib/utils/artifact-panel-action.js.map +1 -1
- package/dist/lib/utils/decision-routing.d.ts +68 -0
- package/dist/lib/utils/decision-routing.d.ts.map +1 -0
- package/dist/lib/utils/decision-routing.js +101 -0
- package/dist/lib/utils/decision-routing.js.map +1 -0
- package/dist/lib/utils/distinct-artifacts.d.ts +2 -0
- package/dist/lib/utils/distinct-artifacts.d.ts.map +1 -1
- package/dist/lib/utils/distinct-artifacts.js +5 -1
- package/dist/lib/utils/distinct-artifacts.js.map +1 -1
- package/dist/lib/utils/plan-mode-preference.d.ts +2 -2
- package/dist/lib/utils/plan-mode-preference.js +6 -6
- package/dist/lib/utils/plan-mode-preference.js.map +1 -1
- package/dist/public-api.d.ts +5 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +8 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +32 -32
|
@@ -276,27 +276,99 @@ export class ArtifactShareModalComponent {
|
|
|
276
276
|
permissionService;
|
|
277
277
|
cdr;
|
|
278
278
|
confirmService;
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
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
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
386
|
+
if (!this.Artifact)
|
|
315
387
|
return;
|
|
316
|
-
const perms = await this.permissionService.loadPermissions(this.
|
|
317
|
-
this.
|
|
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.
|
|
401
|
+
if (!this.Artifact)
|
|
330
402
|
return;
|
|
331
403
|
// Check if current user is owner
|
|
332
|
-
const isOwner = await this.permissionService.isOwner(this.
|
|
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.
|
|
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.
|
|
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.
|
|
413
|
+
canEdit: await this.permissionService.checkPermission(this.Artifact.ID, this.CurrentUser.ID, 'edit', this.CurrentUser)
|
|
342
414
|
};
|
|
343
|
-
this.
|
|
415
|
+
this.AvailablePermissions = this.permissionService.getAvailablePermissions(userPerms, isOwner);
|
|
344
416
|
console.log('Share modal permissions:', {
|
|
345
|
-
artifactId: this.
|
|
346
|
-
userId: this.
|
|
347
|
-
currentUserId: this.
|
|
417
|
+
artifactId: this.Artifact?.ID,
|
|
418
|
+
userId: this.Artifact?.UserID,
|
|
419
|
+
currentUserId: this.CurrentUser.ID,
|
|
348
420
|
isOwner,
|
|
349
|
-
availablePermissions: this.
|
|
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
|
-
|
|
354
|
-
const ids = this.
|
|
355
|
-
ids.push(this.
|
|
356
|
-
if (this.
|
|
357
|
-
ids.push(this.
|
|
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
|
-
|
|
362
|
-
|
|
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
|
-
|
|
366
|
-
|
|
367
|
-
this.
|
|
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
|
-
|
|
375
|
-
|
|
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.
|
|
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.
|
|
384
|
-
canEdit: await this.permissionService.checkPermission(this.
|
|
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.
|
|
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.
|
|
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.
|
|
395
|
-
this.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
416
|
-
|
|
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.
|
|
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.
|
|
425
|
-
canEdit: await this.permissionService.checkPermission(this.
|
|
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.
|
|
529
|
+
await this.permissionService.updatePermission(permission.id, permission.editingPermissions, this.CurrentUser);
|
|
434
530
|
await this.loadPermissions();
|
|
435
|
-
this.
|
|
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
|
-
|
|
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.
|
|
547
|
+
await this.permissionService.revokePermission(permission.id, this.CurrentUser);
|
|
448
548
|
await this.loadPermissions();
|
|
449
|
-
this.
|
|
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 }], {
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAuD,MAAM,eAAe,CAAC;AAE5H,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAoB,MAAM,kCAAkC,CAAC;AACjI,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAIzE,OAAO,EAAE,mBAAmB,EAAoB,MAAM,iCAAiC,CAAC;;;;;;;;IA4D5C,AADJ,iCAAmC,gBAC8B;IAAtC,+WAAqC;IAA5D,iBAA6D;IAC7D,gCAA+B;IAC3B,wBAAuC;IACvC,uBACJ;IAAA,iBAAO;IACP,gCAA8B;IAAA,iCAAiB;IACnD,AADmD,iBAAO,EAClD;;;IANmB,cAAqC;IAArC,8DAAqC;;;;IAW5D,AADJ,iCAAmC,gBAC6B;IAArC,6WAAoC;IAA3D,iBAA4D;IAC5D,gCAA+B;IAC3B,wBAAyC;IACzC,sBACJ;IAAA,iBAAO;IACP,gCAA8B;IAAA,wCAAwB;IAC1D,AAD0D,iBAAO,EACzD;;;IANmB,cAAoC;IAApC,6DAAoC;;;;IAhCnE,AADJ,AADJ,8BAA8B,cACM,cACH;IACrB,wBAAgC;IACpC,iBAAM;IAEF,AADJ,+BAA0B,cACC;IAAA,YAAuB;IAAA,iBAAM;IACpD,+BAAwB;IAAA,YAAwB;IAExD,AADI,AADoD,iBAAM,EACpD,EACJ;IAGF,AADJ,+BAA8B,iBACkB;IACxC,6BAAiD;IACjD,iCAA+B;IAC3B,yBAA+B;IAC/B,uBACJ;IAAA,iBAAO;IACP,iCAA8B;IAAA,sCAAqB;IACvD,AADuD,iBAAO,EACtD;IAER,8HAA8C;IAW9C,8HAA6C;IAUjD,iBAAM;IAGF,AADJ,gCAA0B,kBAC8D;IAAjD,+MAAS,kBAAW,KAAC;IACpD,yBAAgC;IAChC,2BACJ;IAAA,iBAAS;IACT,mCAA8C;IAA7B,+MAAS,yBAAkB,KAAC;IACzC,yBACJ;IAER,AADI,AADI,iBAAS,EACP,EACJ;;;IA/C6B,eAAuB;IAAvB,8CAAuB;IACtB,eAAwB;IAAxB,+CAAwB;IAMzB,eAAgB;IAAhB,8BAAgB;IAQ3C,eASC;IATD,yEASC;IAED,cASC;IATD,wEASC;IAIwD,eAA0B;IAA1B,+CAA0B;;;IAoB3F,qCAGqB;;;IAYG,gCAAwB;IAAA,YAA2C;IAAA,iBAAO;;;IAAlD,cAA2C;IAA3C,mEAA2C;;;IAU/D,gCAA+B;IAC3B,wBAAuC;IAAC,uBAC5C;IAAA,iBAAO;;;IAGP,gCAA+B;IAC3B,wBAAyC;IAAC,sBAC9C;IAAA,iBAAO;;;IAXX,AADJ,+BAA+B,eACI;IAC3B,wBAA+B;IAAC,sBACpC;IAAA,iBAAO;IACP,gJAA2B;IAK3B,gJAA0B;IAK9B,iBAAM;;;IAVF,eAIC;IAJD,iDAIC;IACD,cAIC;IAJD,gDAIC;;;;IAUO,AADJ,iCAAyC,gBACuC;IAArD,0aAAoD;IAA3E,iBAA4E;IAC5E,4BAAM;IAAA,qBAAK;IACf,AADe,iBAAO,EACd;;;IAFmB,cAAoD;IAApD,yEAAoD;;;;IAM3E,AADJ,iCAAyC,gBACsC;IAApD,waAAmD;IAA1E,iBAA2E;IAC3E,4BAAM;IAAA,oBAAI;IACd,AADc,iBAAO,EACb;;;IAFmB,cAAmD;IAAnD,wEAAmD;;;IAZlF,AADJ,+BAAmC,gBACmB;IAC9C,4BAAiD;IACjD,4BAAM;IAAA,oBAAI;IACd,AADc,iBAAO,EACb;IACR,iJAA8C;IAM9C,iJAA6C;IAMjD,iBAAM;;;IAfyB,eAAgB;IAAhB,8BAAgB;IAG3C,eAKC;IALD,wEAKC;IACD,cAKC;IALD,uEAKC;;;;IAQD,kCAA8F;IAApD,uSAAS,sCAA4B,KAAC;IAC5E,wBAA+B;IACnC,iBAAS;IACT,kCAAoG;IAAxD,uSAAS,wCAA8B,KAAC;IAChF,wBAAiC;IACrC,iBAAS;;;;IAET,kCAAiG;IAApD,wSAAS,sCAA4B,KAAC;IAC/E,wBAAiC;IACrC,iBAAS;IACT,kCAA4F;IAAlD,wSAAS,kCAAwB,KAAC;IACxE,wBAAiC;IACrC,iBAAS;;;IAdjB,+BAAgC;IAQ1B,AAPF,qIAA6B,+GAOpB;IAQb,iBAAM;;;IAfF,cAcC;IAdD,kDAcC;;;IAjET,AADJ,+BAA6B,cACA;IACrB,wBAAgC;IACpC,iBAAM;IAGE,AADJ,AADJ,+BAAgC,cACC,eACD;IAAA,YAAyB;IAAA,iBAAO;IACxD,kIAAmC;IAGvC,iBAAM;IAkBJ,AAhBF,iIAA6B,2GAgBpB;IAoBb,iBAAM;IAEN,mIAA4B;IAmBhC,iBAAM;;;;IA/D8B,eAAyB;IAAzB,4CAAyB;IACjD,cAEC;IAFD,yDAEC;IAGL,cAmCC;IAnCD,kDAmCC;IAGL,eAkBC;IAlBD,uDAkBC;;;IAtEb,+BAA8B;IAC1B,6HAuEC;IACL,iBAAM;;;IAxEF,cAuEC;IAvED,iCAuEC;;;;IAtKrB,oCAQC;IADG,kMAAS,iBAAU,KAAC;IAKZ,AADJ,AAFJ,8BAAiC,aAEC,YACA;IACtB,uBAAqC;IACrC,iCACJ;IAAA,iBAAK;IAEL,yCAIC;IADG,2NAAgB,6BAAsB,KAAC;IAC1C,iBAAiB;IAElB,4GAAoB;IAwDxB,iBAAM;IAIF,AADJ,8BAAsC,YACR;IACtB,wBAAiC;IACjC,aACJ;IAAA,iBAAK;IAOH,AALF,yHAAgC,wFAKvB;IA6EjB,AADI,iBAAM,EACJ;IAGF,AADJ,gCAA2B,kBACe;IAArB,gMAAS,iBAAU,KAAC;IAAC,sBAAK;IAEnD,AADI,AAD+C,iBAAS,EAClD,EACE;;;IAzKR,AADA,AADA,AADA,AADA,AADA,wDAAmC,cACtB,eACC,iBACE,kBACC,iBACD;IAYJ,eAA2B;IAC3B,AADA,gDAA2B,+CACY;IAI3C,cAuDC;IAvDD,8CAuDC;IAOG,eACJ;IADI,wEACJ;IAEA,cAgFC;IAhFD,2DAgFC;;AAYzB,MAAM,OAAO,2BAA2B;IAqGxB;IACA;IACA;IAtGH,MAAM,GAAY,KAAK,CAAC;IAEjC,sCAAsC;IACtC,IAAa,MAAM,CAAC,KAAc;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,sCAAsC;IACtC,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IACQ,QAAQ,GAA4B,IAAI,CAAC;IAElD,wCAAwC;IACxC,IAAa,QAAQ,CAAC,KAA8B;QAChD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IACD,wCAAwC;IACxC,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACQ,WAAW,CAAY;IAEhC,2CAA2C;IAC3C,IAAa,WAAW,CAAC,KAAe;QACpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,2CAA2C;IAC3C,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAES,KAAK,GAAG,IAAI,YAAY,EAAQ,CAAC;IAE3C;;;;;;OAMG;IACO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACnB,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;IAE/C,WAAW,GAAwB,EAAE,CAAC;IAEtC,2CAA2C;IAC3C,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IACD,2CAA2C;IAC3C,IAAI,WAAW,CAAC,KAA0B;QACtC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,YAAY,GAA4B,IAAI,CAAC;IAE7C,4CAA4C;IAC5C,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IACD,4CAA4C;IAC5C,IAAI,YAAY,CAAC,KAA8B;QAC3C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC9B,CAAC;IACD,oBAAoB,GAAa,EAAE,CAAC;IAEpC,oDAAoD;IACpD,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IACD,oDAAoD;IACpD,IAAI,oBAAoB,CAAC,KAAe;QACpC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACtC,CAAC;IACD,oBAAoB,GAAY,KAAK,CAAC;IAEtC,oDAAoD;IACpD,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IACD,oDAAoD;IACpD,IAAI,oBAAoB,CAAC,KAAc;QACnC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,cAAc,GAA0B;QACpC,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,KAAK;KACjB,CAAC;IAEF,8CAA8C;IAC9C,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IACD,8CAA8C;IAC9C,IAAI,cAAc,CAAC,KAA4B;QAC3C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,YACY,iBAA4C,EAC5C,GAAsB,EACtB,cAAgC;QAFhC,sBAAiB,GAAjB,iBAAiB,CAA2B;QAC5C,QAAG,GAAH,GAAG,CAAmB;QACtB,mBAAc,GAAd,cAAc,CAAkB;IACzC,CAAC;IAEJ,KAAK,CAAC,QAAQ;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAsB;QACpC,0DAA0D;QAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,YAAY,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,aAAa,KAAK,KAAK,CAAC;QAC3G,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;QAEpF,IAAI,CAAC,WAAW,IAAI,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAC5C,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,eAAe;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/F,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/B,GAAG,CAAC;YACJ,SAAS,EAAE,KAAK;YAChB,kBAAkB,EAAE;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;aACrB;SACJ,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,0BAA0B;QACpC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,iCAAiC;QACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9G,qCAAqC;QACrC,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACnE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAChB,IAAI,CAAC,WAAW,CAAC,EAAE,EACnB,OAAO,EACP,IAAI,CAAC,WAAW,CACnB,CAAC;QAEF,8DAA8D;QAC9D,IAAI,CAAC,oBAAoB,GAAG,OAAO,IAAI,kBAAkB,CAAC;QAE1D,iCAAiC;QACjC,MAAM,SAAS,GAA0B;YACrC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,kBAAkB;YAC5B,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAChB,IAAI,CAAC,WAAW,CAAC,EAAE,EACnB,MAAM,EACN,IAAI,CAAC,WAAW,CACnB;SACJ,CAAC;QAEF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE/F,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE;YACpC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE;YAC7B,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM;YAC7B,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;YAClC,OAAO;YACP,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;SAClD,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,yDAAyD;IACvF,CAAC;IAED,kBAAkB;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B;QAC3D,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,oCAAoC;QACxE,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,kDAAkD;IAClD,kBAAkB;QACd,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACrC,CAAC;IAED,cAAc,CAAC,IAAsB;QACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,8CAA8C;IAC9C,cAAc,CAAC,IAAsB;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG;YAClB,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACjB,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,gDAAgD;IAChD,gBAAgB;QACZ,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,SAAS;QACX,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEjD,IAAI,CAAC;YACD,yBAAyB;YACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE9G,iCAAiC;YACjC,MAAM,SAAS,GAA0B;gBACrC,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAClD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAChB,IAAI,CAAC,WAAW,CAAC,EAAE,EACnB,OAAO,EACP,IAAI,CAAC,WAAW,CACnB;gBACD,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAChB,IAAI,CAAC,WAAW,CAAC,EAAE,EACnB,MAAM,EACN,IAAI,CAAC,WAAW,CACnB;aACJ,CAAC;YAEF,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;gBACvF,qBAAqB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,8CAA8C,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBACzH,OAAO;YACX,CAAC;YAED,mBAAmB;YACnB,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAChB,IAAI,CAAC,YAAY,CAAC,EAAE,EACpB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,WAAW,CAAC,EAAE,EACnB,IAAI,CAAC,WAAW,CACnB,CAAC;YAEF,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YAC3C,qBAAqB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,uCAAuC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACpH,CAAC;IACL,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;IAED,gBAAgB,CAAC,UAA6B;QAC1C,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,gDAAgD;IAChD,gBAAgB,CAAC,UAA6B;QAC1C,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,UAA6B;QACtC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;QAC7B,UAAU,CAAC,kBAAkB,GAAG;YAC5B,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,OAAO,EAAE,UAAU,CAAC,OAAO;SAC9B,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,4CAA4C;IAC5C,YAAY,CAAC,UAA6B;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,UAA6B;QAChD,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,IAAI,CAAC;YACD,yBAAyB;YACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE9G,iCAAiC;YACjC,MAAM,SAAS,GAA0B;gBACrC,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAClD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAChB,IAAI,CAAC,WAAW,CAAC,EAAE,EACnB,OAAO,EACP,IAAI,CAAC,WAAW,CACnB;gBACD,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAChB,IAAI,CAAC,WAAW,CAAC,EAAE,EACnB,MAAM,EACN,IAAI,CAAC,WAAW,CACnB;aACJ,CAAC;YAEF,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,UAAU,CAAC,kBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;gBACjG,qBAAqB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,8CAA8C,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBACzH,OAAO;YACX,CAAC;YAED,oBAAoB;YACpB,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CACzC,UAAU,CAAC,EAAE,EACb,UAAU,CAAC,kBAAkB,EAC7B,IAAI,CAAC,WAAW,CACnB,CAAC;YAEF,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,qBAAqB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,iDAAiD,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9H,CAAC;IACL,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,gBAAgB,CAAC,UAA6B;QAChD,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,UAA6B;QAClD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,UAAU,CAAC,QAAQ,6BAA6B,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;YACrK,OAAO;QACX,CAAC;QAED,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/E,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,qBAAqB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,gDAAgD,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7H,CAAC;IACL,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,kBAAkB,CAAC,UAA6B;QAClD,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;qHAnXQ,2BAA2B;6DAA3B,2BAA2B;YArLhC,qGAA0B;;YAA1B,qDAiLC;4BAnLK,WAAW,mEAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB;;iFAuL9F,2BAA2B;cA1LvC,SAAS;2BACI,yBAAyB,cACvB,IAAI,WACP,CAAC,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,YAC9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmLT;;kBAIA,KAAK;;kBAGL,KAAK;;kBAOL,KAAK;;kBAGL,KAAK;;kBAOL,KAAK;;kBAGL,KAAK;;kBAQL,MAAM;;kBASN,MAAM;;kBACN,MAAM;;kFA1CE,2BAA2B","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"]}
|