@memberjunction/ng-conversations 6.1.4 → 6.2.0-edge.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -3
- 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 +1090 -123
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +2407 -731
- 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 +40 -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 +72 -14
- 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 +37 -5
- package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -1
- package/dist/lib/components/message/actionable-commands.component.js +82 -16
- 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 +549 -74
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +1250 -421
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +411 -29
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +896 -222
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +288 -29
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +561 -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/channels/channel-onboarding-panel.component.d.ts +1 -1
- package/dist/lib/components/realtime/channels/channel-onboarding-panel.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/channels/channel-onboarding-panel.component.js.map +1 -1
- package/dist/lib/components/realtime/channels/client-context-channel.d.ts +1 -1
- package/dist/lib/components/realtime/channels/client-context-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/channels/client-context-channel.js +1 -1
- package/dist/lib/components/realtime/channels/client-context-channel.js.map +1 -1
- package/dist/lib/components/realtime/channels/realtime-channel-pane.component.d.ts +1 -1
- package/dist/lib/components/realtime/channels/realtime-channel-pane.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/channels/realtime-channel-pane.component.js +3 -0
- package/dist/lib/components/realtime/channels/realtime-channel-pane.component.js.map +1 -1
- package/dist/lib/components/realtime/media/media-channel.d.ts +2 -1
- package/dist/lib/components/realtime/media/media-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/media/media-channel.js +1 -1
- package/dist/lib/components/realtime/media/media-channel.js.map +1 -1
- package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +2 -2
- package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts.map +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-agent-banner.component.d.ts +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-composer.component.d.ts +3 -1
- package/dist/lib/components/realtime/realtime-composer.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-composer.component.js +26 -8
- package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +2 -2
- package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts.map +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 +4 -4
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.js +19 -19
- package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-state.d.ts +2 -3
- package/dist/lib/components/realtime/realtime-session-state.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-state.js +3 -2
- package/dist/lib/components/realtime/realtime-session-state.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-thread.component.d.ts +17 -1
- package/dist/lib/components/realtime/realtime-session-thread.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-thread.component.js +122 -45
- package/dist/lib/components/realtime/realtime-session-thread.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts +47 -31
- 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 +138 -124
- 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 +4 -4
- package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts.map +1 -1
- 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 +2 -2
- package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts.map +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/remote-browser/remote-browser-channel.d.ts +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js.map +1 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +4 -2
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +7 -3
- 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 +887 -291
- 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/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.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 +103 -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/browser-realtime-media-host.d.ts +24 -0
- package/dist/lib/services/browser-realtime-media-host.d.ts.map +1 -0
- package/dist/lib/services/browser-realtime-media-host.js +95 -0
- package/dist/lib/services/browser-realtime-media-host.js.map +1 -0
- 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 +26 -4
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +57 -18
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/conversation-attachment.service.d.ts +41 -2
- package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-attachment.service.js +80 -13
- package/dist/lib/services/conversation-attachment.service.js.map +1 -1
- 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/graphql-attachment-blob-store.d.ts +44 -0
- package/dist/lib/services/graphql-attachment-blob-store.d.ts.map +1 -0
- package/dist/lib/services/graphql-attachment-blob-store.js +113 -0
- package/dist/lib/services/graphql-attachment-blob-store.js.map +1 -0
- package/dist/lib/services/mention-autocomplete.service.d.ts +17 -141
- package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
- package/dist/lib/services/mention-autocomplete.service.js +15 -460
- package/dist/lib/services/mention-autocomplete.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/realtime-session-review.service.d.ts +1 -1
- package/dist/lib/services/realtime-session-review.service.d.ts.map +1 -1
- package/dist/lib/services/realtime-session-review.service.js +1 -1
- package/dist/lib/services/realtime-session-review.service.js.map +1 -1
- package/dist/lib/services/realtime-session.service.d.ts +16 -1150
- package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
- package/dist/lib/services/realtime-session.service.js +28 -2430
- package/dist/lib/services/realtime-session.service.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 +16 -2
- package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
- package/dist/lib/services/ui-command-handler.service.js +36 -8
- 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 +69 -0
- package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -0
- package/dist/lib/utils/agent-turn-routing.js +96 -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/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/lib/utils/realtime-session-timeline.d.ts +8 -79
- package/dist/lib/utils/realtime-session-timeline.d.ts.map +1 -1
- package/dist/lib/utils/realtime-session-timeline.js +8 -89
- package/dist/lib/utils/realtime-session-timeline.js.map +1 -1
- package/dist/public-api.d.ts +5 -2
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +9 -2
- package/dist/public-api.js.map +1 -1
- package/package.json +33 -32
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts +0 -384
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts.map +0 -1
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.js +0 -231
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.js.map +0 -1
- package/dist/lib/services/delegation-result-parser.d.ts +0 -50
- package/dist/lib/services/delegation-result-parser.d.ts.map +0 -1
- package/dist/lib/services/delegation-result-parser.js +0 -60
- package/dist/lib/services/delegation-result-parser.js.map +0 -1
- package/dist/lib/services/narration-template.d.ts +0 -42
- package/dist/lib/services/narration-template.d.ts.map +0 -1
- package/dist/lib/services/narration-template.js +0 -73
- package/dist/lib/services/narration-template.js.map +0 -1
- package/dist/lib/services/skill-picker-narrowing.d.ts +0 -13
- package/dist/lib/services/skill-picker-narrowing.d.ts.map +0 -1
- package/dist/lib/services/skill-picker-narrowing.js +0 -13
- package/dist/lib/services/skill-picker-narrowing.js.map +0 -1
|
@@ -221,7 +221,7 @@ export class ExportModalComponent {
|
|
|
221
221
|
dialogService;
|
|
222
222
|
toastService;
|
|
223
223
|
_isVisible = false;
|
|
224
|
-
set
|
|
224
|
+
set IsVisible(value) {
|
|
225
225
|
const opening = value && !this._isVisible;
|
|
226
226
|
this._isVisible = value;
|
|
227
227
|
if (opening) {
|
|
@@ -231,26 +231,98 @@ export class ExportModalComponent {
|
|
|
231
231
|
// pass must bind [branding] FIRST (Angular sets inputs in template order).
|
|
232
232
|
// chat-area's template does; a host mounting with isVisible already true and
|
|
233
233
|
// branding bound after would get the checkbox defaulted off.
|
|
234
|
-
this.
|
|
234
|
+
this.ExportOptions.includeTheme = !!this.Branding;
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
|
-
get
|
|
237
|
+
get IsVisible() {
|
|
238
238
|
return this._isVisible;
|
|
239
239
|
}
|
|
240
|
-
|
|
241
|
-
|
|
240
|
+
/** @deprecated Use {@link IsVisible}. */
|
|
241
|
+
get isVisible() {
|
|
242
|
+
return this.IsVisible;
|
|
243
|
+
}
|
|
244
|
+
/** @deprecated Use {@link IsVisible}. */
|
|
245
|
+
set isVisible(value) {
|
|
246
|
+
this.IsVisible = value;
|
|
247
|
+
}
|
|
248
|
+
Conversation;
|
|
249
|
+
/** @deprecated Use {@link Conversation}. */
|
|
250
|
+
set conversation(value) {
|
|
251
|
+
this.Conversation = value;
|
|
252
|
+
}
|
|
253
|
+
/** @deprecated Use {@link Conversation}. */
|
|
254
|
+
get conversation() {
|
|
255
|
+
return this.Conversation;
|
|
256
|
+
}
|
|
257
|
+
CurrentUser;
|
|
258
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
259
|
+
set currentUser(value) {
|
|
260
|
+
this.CurrentUser = value;
|
|
261
|
+
}
|
|
262
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
263
|
+
get currentUser() {
|
|
264
|
+
return this.CurrentUser;
|
|
265
|
+
}
|
|
242
266
|
/**
|
|
243
267
|
* Host-supplied export branding (theme tokens / logo / title). When set, the
|
|
244
268
|
* HTML format's "Include branding" checkbox defaults on and the branding is
|
|
245
269
|
* passed to {@link ExportService} on export. See `ExportBranding`.
|
|
246
270
|
*/
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
271
|
+
Branding = null;
|
|
272
|
+
/** @deprecated Use {@link Branding}. */
|
|
273
|
+
set branding(value) {
|
|
274
|
+
this.Branding = value;
|
|
275
|
+
}
|
|
276
|
+
/** @deprecated Use {@link Branding}. */
|
|
277
|
+
get branding() {
|
|
278
|
+
return this.Branding;
|
|
279
|
+
}
|
|
280
|
+
Cancelled = new EventEmitter();
|
|
281
|
+
/**
|
|
282
|
+
* @deprecated Use {@link Cancelled}.
|
|
283
|
+
*
|
|
284
|
+
* The same emitter under the old binding name, so a template still binding
|
|
285
|
+
* (cancelled) keeps working. Must stay AFTER Cancelled: class fields
|
|
286
|
+
* initialise in order, and the other way round this captures undefined.
|
|
287
|
+
*/
|
|
288
|
+
cancelled = this.Cancelled;
|
|
289
|
+
Exported = new EventEmitter();
|
|
290
|
+
/**
|
|
291
|
+
* @deprecated Use {@link Exported}.
|
|
292
|
+
*
|
|
293
|
+
* The same emitter under the old binding name, so a template still binding
|
|
294
|
+
* (exported) keeps working. Must stay AFTER Exported: class fields
|
|
295
|
+
* initialise in order, and the other way round this captures undefined.
|
|
296
|
+
*/
|
|
297
|
+
exported = this.Exported;
|
|
298
|
+
SelectedFormat = 'markdown';
|
|
299
|
+
/** @deprecated Use {@link SelectedFormat}. */
|
|
300
|
+
get selectedFormat() {
|
|
301
|
+
return this.SelectedFormat;
|
|
302
|
+
}
|
|
303
|
+
/** @deprecated Use {@link SelectedFormat}. */
|
|
304
|
+
set selectedFormat(value) {
|
|
305
|
+
this.SelectedFormat = value;
|
|
306
|
+
}
|
|
307
|
+
IsExporting = false;
|
|
308
|
+
/** @deprecated Use {@link IsExporting}. */
|
|
309
|
+
get isExporting() {
|
|
310
|
+
return this.IsExporting;
|
|
311
|
+
}
|
|
312
|
+
/** @deprecated Use {@link IsExporting}. */
|
|
313
|
+
set isExporting(value) {
|
|
314
|
+
this.IsExporting = value;
|
|
315
|
+
}
|
|
316
|
+
ErrorMessage = '';
|
|
317
|
+
/** @deprecated Use {@link ErrorMessage}. */
|
|
318
|
+
get errorMessage() {
|
|
319
|
+
return this.ErrorMessage;
|
|
320
|
+
}
|
|
321
|
+
/** @deprecated Use {@link ErrorMessage}. */
|
|
322
|
+
set errorMessage(value) {
|
|
323
|
+
this.ErrorMessage = value;
|
|
324
|
+
}
|
|
325
|
+
ExportOptions = {
|
|
254
326
|
includeMessages: true,
|
|
255
327
|
includeMetadata: true,
|
|
256
328
|
prettyPrint: true,
|
|
@@ -258,17 +330,29 @@ export class ExportModalComponent {
|
|
|
258
330
|
includeTheme: false,
|
|
259
331
|
themeMode: 'light'
|
|
260
332
|
};
|
|
333
|
+
/** @deprecated Use {@link ExportOptions}. */
|
|
334
|
+
get exportOptions() {
|
|
335
|
+
return this.ExportOptions;
|
|
336
|
+
}
|
|
337
|
+
/** @deprecated Use {@link ExportOptions}. */
|
|
338
|
+
set exportOptions(value) {
|
|
339
|
+
this.ExportOptions = value;
|
|
340
|
+
}
|
|
261
341
|
/** Format-aware hint under the "Include branding" checkbox. */
|
|
262
|
-
get
|
|
263
|
-
if (this.
|
|
264
|
-
if (!this.
|
|
342
|
+
get BrandingHint() {
|
|
343
|
+
if (this.SelectedFormat === 'html') {
|
|
344
|
+
if (!this.ExportOptions.includeCSS) {
|
|
265
345
|
return 'Requires "Include CSS styling"';
|
|
266
346
|
}
|
|
267
|
-
return `Embed the app's theme colors${this.
|
|
347
|
+
return `Embed the app's theme colors${this.Branding?.logoUrl ? ', logo,' : ''} and attribution line`;
|
|
268
348
|
}
|
|
269
|
-
const logo = this.
|
|
349
|
+
const logo = this.Branding?.logoUrl && this.SelectedFormat === 'markdown' ? ', logo,' : '';
|
|
270
350
|
return `Add the title${logo} and attribution line`;
|
|
271
351
|
}
|
|
352
|
+
/** @deprecated Use {@link BrandingHint}. */
|
|
353
|
+
get brandingHint() {
|
|
354
|
+
return this.BrandingHint;
|
|
355
|
+
}
|
|
272
356
|
/**
|
|
273
357
|
* The options actually handed to the service. `includeTheme` is the user's INTENT;
|
|
274
358
|
* this resolves it against the selected format:
|
|
@@ -281,23 +365,31 @@ export class ExportModalComponent {
|
|
|
281
365
|
* format.
|
|
282
366
|
*/
|
|
283
367
|
resolveExportOptions() {
|
|
284
|
-
const unstyledHtml = this.
|
|
285
|
-
const brandingOn = !!this.
|
|
368
|
+
const unstyledHtml = this.SelectedFormat === 'html' && !this.ExportOptions.includeCSS;
|
|
369
|
+
const brandingOn = !!this.ExportOptions.includeTheme && !unstyledHtml;
|
|
286
370
|
return {
|
|
287
|
-
...this.
|
|
371
|
+
...this.ExportOptions,
|
|
288
372
|
includeTheme: brandingOn,
|
|
289
|
-
branding: brandingOn ? (this.
|
|
373
|
+
branding: brandingOn ? (this.Branding ?? undefined) : undefined
|
|
290
374
|
};
|
|
291
375
|
}
|
|
376
|
+
get ExportTitle() {
|
|
377
|
+
return `Export: ${this.Conversation?.Name || 'Conversation'}`;
|
|
378
|
+
}
|
|
379
|
+
/** @deprecated Use {@link ExportTitle}. */
|
|
292
380
|
get exportTitle() {
|
|
293
|
-
return
|
|
381
|
+
return this.ExportTitle;
|
|
294
382
|
}
|
|
383
|
+
get CanExport() {
|
|
384
|
+
return !this.IsExporting &&
|
|
385
|
+
!!this.SelectedFormat &&
|
|
386
|
+
(this.ExportOptions.includeMessages === true);
|
|
387
|
+
}
|
|
388
|
+
/** @deprecated Use {@link CanExport}. */
|
|
295
389
|
get canExport() {
|
|
296
|
-
return
|
|
297
|
-
!!this.selectedFormat &&
|
|
298
|
-
(this.exportOptions.includeMessages === true);
|
|
390
|
+
return this.CanExport;
|
|
299
391
|
}
|
|
300
|
-
|
|
392
|
+
Formats = [
|
|
301
393
|
{
|
|
302
394
|
value: 'markdown',
|
|
303
395
|
name: 'Markdown',
|
|
@@ -323,60 +415,80 @@ export class ExportModalComponent {
|
|
|
323
415
|
icon: 'fa-solid fa-file'
|
|
324
416
|
}
|
|
325
417
|
];
|
|
418
|
+
/** @deprecated Use {@link Formats}. */
|
|
419
|
+
get formats() {
|
|
420
|
+
return this.Formats;
|
|
421
|
+
}
|
|
422
|
+
/** @deprecated Use {@link Formats}. */
|
|
423
|
+
set formats(value) {
|
|
424
|
+
this.Formats = value;
|
|
425
|
+
}
|
|
326
426
|
constructor(exportService, dialogService, toastService) {
|
|
327
427
|
this.exportService = exportService;
|
|
328
428
|
this.dialogService = dialogService;
|
|
329
429
|
this.toastService = toastService;
|
|
330
430
|
}
|
|
331
|
-
|
|
332
|
-
if (!this.
|
|
333
|
-
this.
|
|
431
|
+
SelectFormat(format) {
|
|
432
|
+
if (!this.IsExporting) {
|
|
433
|
+
this.SelectedFormat = format;
|
|
334
434
|
}
|
|
335
435
|
}
|
|
336
|
-
|
|
337
|
-
|
|
436
|
+
/** @deprecated Use {@link SelectFormat}. */
|
|
437
|
+
selectFormat(format) {
|
|
438
|
+
return this.SelectFormat(format);
|
|
439
|
+
}
|
|
440
|
+
async OnExport() {
|
|
441
|
+
if (!this.CanExport || !this.Conversation) {
|
|
338
442
|
return;
|
|
339
443
|
}
|
|
340
|
-
if (!this.
|
|
341
|
-
this.
|
|
444
|
+
if (!this.ExportOptions.includeMessages) {
|
|
445
|
+
this.ErrorMessage = 'At least "Include messages" must be selected';
|
|
342
446
|
return;
|
|
343
447
|
}
|
|
344
|
-
this.
|
|
345
|
-
this.
|
|
448
|
+
this.IsExporting = true;
|
|
449
|
+
this.ErrorMessage = '';
|
|
346
450
|
try {
|
|
347
|
-
await this.exportService.exportConversation(this.
|
|
451
|
+
await this.exportService.exportConversation(this.Conversation.ID, this.SelectedFormat, this.CurrentUser, this.resolveExportOptions());
|
|
348
452
|
this.toastService.success('Conversation exported successfully');
|
|
349
|
-
this.
|
|
453
|
+
this.Exported.emit();
|
|
350
454
|
this.resetForm();
|
|
351
455
|
}
|
|
352
456
|
catch (error) {
|
|
353
457
|
console.error('Error exporting conversation:', error);
|
|
354
|
-
this.
|
|
355
|
-
this.toastService.error(this.
|
|
458
|
+
this.ErrorMessage = error instanceof Error ? error.message : 'Failed to export conversation';
|
|
459
|
+
this.toastService.error(this.ErrorMessage);
|
|
356
460
|
}
|
|
357
461
|
finally {
|
|
358
|
-
this.
|
|
462
|
+
this.IsExporting = false;
|
|
359
463
|
}
|
|
360
464
|
}
|
|
361
|
-
|
|
362
|
-
|
|
465
|
+
/** @deprecated Use {@link OnExport}. */
|
|
466
|
+
async onExport() {
|
|
467
|
+
return this.OnExport();
|
|
468
|
+
}
|
|
469
|
+
OnCancel() {
|
|
470
|
+
this.Cancelled.emit();
|
|
363
471
|
this.resetForm();
|
|
364
472
|
}
|
|
473
|
+
/** @deprecated Use {@link OnCancel}. */
|
|
474
|
+
onCancel() {
|
|
475
|
+
return this.OnCancel();
|
|
476
|
+
}
|
|
365
477
|
resetForm() {
|
|
366
|
-
this.
|
|
367
|
-
this.
|
|
368
|
-
this.
|
|
478
|
+
this.SelectedFormat = 'markdown';
|
|
479
|
+
this.ErrorMessage = '';
|
|
480
|
+
this.ExportOptions = {
|
|
369
481
|
includeMessages: true,
|
|
370
482
|
includeMetadata: true,
|
|
371
483
|
prettyPrint: true,
|
|
372
484
|
includeCSS: true,
|
|
373
|
-
includeTheme: !!this.
|
|
485
|
+
includeTheme: !!this.Branding,
|
|
374
486
|
themeMode: 'light'
|
|
375
487
|
};
|
|
376
|
-
this.
|
|
488
|
+
this.IsVisible = false;
|
|
377
489
|
}
|
|
378
490
|
static ɵfac = function ExportModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ExportModalComponent)(i0.ɵɵdirectiveInject(i1.ExportService), i0.ɵɵdirectiveInject(i2.DialogService), i0.ɵɵdirectiveInject(i3.ToastService)); };
|
|
379
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExportModalComponent, selectors: [["mj-export-modal"]], inputs: { isVisible: "isVisible", conversation: "conversation", currentUser: "currentUser", branding: "branding" }, outputs: { cancelled: "cancelled", exported: "exported" }, standalone: false, decls: 1, vars: 1, consts: [[3, "Title", "Width", "Height", "Visible"], [3, "Close", "Title", "Width", "Height", "Visible"], [1, "export-modal-content"], [1, "format-section"], [1, "section-title"], [1, "fa-solid", "fa-file-export"], [1, "section-description"], [1, "format-options"], [1, "format-option", 3, "selected"], [1, "options-section"], [1, "fa-solid", "fa-sliders"], [1, "option-checkboxes"], [1, "checkbox-label"], ["type", "checkbox", 3, "ngModelChange", "ngModel", "disabled"], [1, "format-specific-options"], [1, "error-message"], [1, "loading-indicator"], ["mjButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-times"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-download"], [1, "format-option", 3, "click"], [1, "format-details"], [1, "format-name"], [1, "format-description"], [1, "fa-solid", "fa-check-circle", "check-icon"], [1, "subsection-title"], [1, "mj-input", "theme-mode-select", 3, "ngModelChange", "ngModel", "disabled"], ["value", "light"], ["value", "dark"], [1, "fa-solid", "fa-exclamation-triangle"], ["text", "Exporting conversation...", "size", "small"]], template: function ExportModalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
491
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExportModalComponent, selectors: [["mj-export-modal"]], inputs: { IsVisible: "IsVisible", isVisible: "isVisible", Conversation: "Conversation", conversation: "conversation", CurrentUser: "CurrentUser", currentUser: "currentUser", Branding: "Branding", branding: "branding" }, outputs: { Cancelled: "Cancelled", cancelled: "cancelled", Exported: "Exported", exported: "exported" }, standalone: false, decls: 1, vars: 1, consts: [[3, "Title", "Width", "Height", "Visible"], [3, "Close", "Title", "Width", "Height", "Visible"], [1, "export-modal-content"], [1, "format-section"], [1, "section-title"], [1, "fa-solid", "fa-file-export"], [1, "section-description"], [1, "format-options"], [1, "format-option", 3, "selected"], [1, "options-section"], [1, "fa-solid", "fa-sliders"], [1, "option-checkboxes"], [1, "checkbox-label"], ["type", "checkbox", 3, "ngModelChange", "ngModel", "disabled"], [1, "format-specific-options"], [1, "error-message"], [1, "loading-indicator"], ["mjButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-times"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-download"], [1, "format-option", 3, "click"], [1, "format-details"], [1, "format-name"], [1, "format-description"], [1, "fa-solid", "fa-check-circle", "check-icon"], [1, "subsection-title"], [1, "mj-input", "theme-mode-select", 3, "ngModelChange", "ngModel", "disabled"], ["value", "light"], ["value", "dark"], [1, "fa-solid", "fa-exclamation-triangle"], ["text", "Exporting conversation...", "size", "small"]], template: function ExportModalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
380
492
|
i0.ɵɵconditionalCreate(0, ExportModalComponent_Conditional_0_Template, 40, 15, "mj-dialog", 0);
|
|
381
493
|
} if (rf & 2) {
|
|
382
494
|
i0.ɵɵconditional(ctx.isVisible ? 0 : -1);
|
|
@@ -524,16 +636,28 @@ export class ExportModalComponent {
|
|
|
524
636
|
</mj-dialog>
|
|
525
637
|
}
|
|
526
638
|
`, styles: ["\n .export-modal-content {\n padding: 20px;\n max-height: calc(600px - 120px);\n overflow-y: auto;\n }\n\n section {\n margin-bottom: 24px;\n }\n\n .section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 8px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .section-title i {\n color: var(--mj-brand-primary);\n }\n\n .section-description {\n margin: 0 0 16px 0;\n color: var(--mj-text-muted);\n font-size: 14px;\n }\n\n .format-options {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .format-option {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n background: var(--mj-bg-surface-card);\n }\n\n .format-option:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n }\n\n .format-option.selected {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface-card));\n }\n\n .format-option > i.fa-solid,\n .format-option > i.fas {\n font-size: 24px;\n color: var(--mj-text-muted);\n width: 32px;\n text-align: center;\n }\n\n .format-option.selected > i.fa-solid,\n .format-option.selected > i.fas {\n color: var(--mj-brand-primary);\n }\n\n .format-details {\n flex: 1;\n }\n\n .format-name {\n font-weight: 500;\n font-size: 14px;\n margin-bottom: 2px;\n }\n\n .format-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .check-icon {\n font-size: 20px;\n color: var(--mj-status-success);\n }\n\n .option-checkboxes {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .checkbox-label {\n display: flex;\n flex-direction: column;\n gap: 4px;\n cursor: pointer;\n padding: 8px;\n border-radius: 4px;\n transition: background 0.2s;\n }\n\n .checkbox-label:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .checkbox-label input[type=\"checkbox\"] {\n margin-right: 8px;\n cursor: pointer;\n }\n\n .checkbox-label > span {\n display: inline-flex;\n align-items: center;\n font-size: 14px;\n font-weight: 500;\n }\n\n .checkbox-label input[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n }\n\n .theme-mode-select {\n margin-left: 8px;\n padding: 2px 6px;\n font-size: 13px;\n }\n\n .checkbox-label small {\n margin-left: 28px;\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .format-specific-options {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n }\n\n .subsection-title {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n\n .error-message {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-status-error);\n font-size: 13px;\n margin-top: 15px;\n padding: 10px 12px;\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-status-error);\n border-radius: 4px;\n }\n\n .loading-indicator {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 15px;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n color: var(--mj-text-muted);\n }\n\n mj-dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n padding: 15px 20px;\n border-top: 1px solid var(--mj-border-default);\n }\n\n mj-dialog-actions button i {\n margin-right: 6px;\n }\n "] }]
|
|
527
|
-
}], () => [{ type: i1.ExportService }, { type: i2.DialogService }, { type: i3.ToastService }], {
|
|
639
|
+
}], () => [{ type: i1.ExportService }, { type: i2.DialogService }, { type: i3.ToastService }], { IsVisible: [{
|
|
640
|
+
type: Input
|
|
641
|
+
}], isVisible: [{
|
|
642
|
+
type: Input
|
|
643
|
+
}], Conversation: [{
|
|
528
644
|
type: Input
|
|
529
645
|
}], conversation: [{
|
|
530
646
|
type: Input
|
|
647
|
+
}], CurrentUser: [{
|
|
648
|
+
type: Input
|
|
531
649
|
}], currentUser: [{
|
|
532
650
|
type: Input
|
|
651
|
+
}], Branding: [{
|
|
652
|
+
type: Input
|
|
533
653
|
}], branding: [{
|
|
534
654
|
type: Input
|
|
655
|
+
}], Cancelled: [{
|
|
656
|
+
type: Output
|
|
535
657
|
}], cancelled: [{
|
|
536
658
|
type: Output
|
|
659
|
+
}], Exported: [{
|
|
660
|
+
type: Output
|
|
537
661
|
}], exported: [{
|
|
538
662
|
type: Output
|
|
539
663
|
}] }); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/export/export-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MJConversationEntity } from '@memberjunction/core-entities';\nimport { UserInfo } from '@memberjunction/core';\nimport { ExportService, ExportFormat, ExportOptions, ExportBranding } from '../../services/export.service';\nimport { DialogService } from '../../services/dialog.service';\nimport { ToastService } from '../../services/toast.service';\n\n@Component({\n standalone: false,\n selector: 'mj-export-modal',\n template: `\n @if (isVisible) {\n <mj-dialog\n [Title]=\"exportTitle\"\n [Width]=\"600\"\n [Height]=\"600\"\n [Visible]=\"true\"\n (Close)=\"onCancel()\">\n <div class=\"export-modal-content\">\n <section class=\"format-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-file-export\"></i>\n Export Format\n </h3>\n <p class=\"section-description\">\n Choose a format to export this conversation:\n </p>\n <div class=\"format-options\">\n @for (format of formats; track format.value) {\n <div\n class=\"format-option\"\n [class.selected]=\"selectedFormat === format.value\"\n (click)=\"selectFormat(format.value)\">\n <i [class]=\"format.icon\"></i>\n <div class=\"format-details\">\n <div class=\"format-name\">{{ format.name }}</div>\n <div class=\"format-description\">{{ format.description }}</div>\n </div>\n @if (selectedFormat === format.value) {\n <i class=\"fa-solid fa-check-circle check-icon\"></i>\n }\n </div>\n }\n </div>\n </section>\n <section class=\"options-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Export Options\n </h3>\n <div class=\"option-checkboxes\">\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"exportOptions.includeMessages\"\n [disabled]=\"isExporting\">\n <span>Include messages</span>\n <small>Export all conversation messages</small>\n </label>\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"exportOptions.includeMetadata\"\n [disabled]=\"isExporting\">\n <span>Include metadata</span>\n <small>Add creation date, IDs, and other metadata</small>\n </label>\n <!-- Branding applies to EVERY format (HTML gets theme colors + logo +\n footer; markdown/text/JSON get the title and attribution), so it\n belongs here rather than under HTML Options. Shown for HTML even with\n no host branding, because it still snapshots the app's theme. -->\n @if (selectedFormat === 'html' || branding) {\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"exportOptions.includeTheme\"\n [disabled]=\"isExporting || (selectedFormat === 'html' && !exportOptions.includeCSS)\">\n <span>Include branding</span>\n <small>{{ brandingHint }}</small>\n </label>\n }\n </div>\n @if (selectedFormat === 'json') {\n <div class=\"format-specific-options\">\n <h4 class=\"subsection-title\">JSON Options</h4>\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"exportOptions.prettyPrint\"\n [disabled]=\"isExporting\">\n <span>Pretty print</span>\n <small>Format JSON with indentation</small>\n </label>\n </div>\n }\n @if (selectedFormat === 'html') {\n <div class=\"format-specific-options\">\n <h4 class=\"subsection-title\">HTML Options</h4>\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"exportOptions.includeCSS\"\n [disabled]=\"isExporting\">\n <span>Include CSS styling</span>\n <small>Embed styles for better presentation</small>\n </label>\n <!-- Which palette gets baked in — NOT the mode the app happens to be in.\n Exporting from a dark session would otherwise put dark text on the\n export's white page. -->\n @if (exportOptions.includeTheme && exportOptions.includeCSS) {\n <label class=\"checkbox-label\">\n <span>Theme</span>\n <select\n class=\"mj-input theme-mode-select\"\n [(ngModel)]=\"exportOptions.themeMode\"\n [disabled]=\"isExporting\">\n <option value=\"light\">Light</option>\n <option value=\"dark\">Dark</option>\n </select>\n <small>Palette baked into the exported file</small>\n </label>\n }\n </div>\n }\n </section>\n @if (errorMessage) {\n <div class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ errorMessage }}\n </div>\n }\n @if (isExporting) {\n <div class=\"loading-indicator\">\n <mj-loading text=\"Exporting conversation...\" size=\"small\"></mj-loading>\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton [disabled]=\"isExporting\" (click)=\"onCancel()\">\n <i class=\"fa-solid fa-times\"></i>\n Cancel\n </button>\n <button mjButton variant=\"primary\" [disabled]=\"!canExport\" (click)=\"onExport()\">\n <i class=\"fa-solid fa-download\"></i>\n Export\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .export-modal-content {\n padding: 20px;\n max-height: calc(600px - 120px);\n overflow-y: auto;\n }\n\n section {\n margin-bottom: 24px;\n }\n\n .section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 8px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .section-title i {\n color: var(--mj-brand-primary);\n }\n\n .section-description {\n margin: 0 0 16px 0;\n color: var(--mj-text-muted);\n font-size: 14px;\n }\n\n .format-options {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .format-option {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n background: var(--mj-bg-surface-card);\n }\n\n .format-option:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n }\n\n .format-option.selected {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface-card));\n }\n\n .format-option > i.fa-solid,\n .format-option > i.fas {\n font-size: 24px;\n color: var(--mj-text-muted);\n width: 32px;\n text-align: center;\n }\n\n .format-option.selected > i.fa-solid,\n .format-option.selected > i.fas {\n color: var(--mj-brand-primary);\n }\n\n .format-details {\n flex: 1;\n }\n\n .format-name {\n font-weight: 500;\n font-size: 14px;\n margin-bottom: 2px;\n }\n\n .format-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .check-icon {\n font-size: 20px;\n color: var(--mj-status-success);\n }\n\n .option-checkboxes {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .checkbox-label {\n display: flex;\n flex-direction: column;\n gap: 4px;\n cursor: pointer;\n padding: 8px;\n border-radius: 4px;\n transition: background 0.2s;\n }\n\n .checkbox-label:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .checkbox-label input[type=\"checkbox\"] {\n margin-right: 8px;\n cursor: pointer;\n }\n\n .checkbox-label > span {\n display: inline-flex;\n align-items: center;\n font-size: 14px;\n font-weight: 500;\n }\n\n .checkbox-label input[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n }\n\n .theme-mode-select {\n margin-left: 8px;\n padding: 2px 6px;\n font-size: 13px;\n }\n\n .checkbox-label small {\n margin-left: 28px;\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .format-specific-options {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n }\n\n .subsection-title {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n\n .error-message {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-status-error);\n font-size: 13px;\n margin-top: 15px;\n padding: 10px 12px;\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-status-error);\n border-radius: 4px;\n }\n\n .loading-indicator {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 15px;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n color: var(--mj-text-muted);\n }\n\n mj-dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n padding: 15px 20px;\n border-top: 1px solid var(--mj-border-default);\n }\n\n mj-dialog-actions button i {\n margin-right: 6px;\n }\n `]\n})\nexport class ExportModalComponent {\n private _isVisible = false;\n @Input()\n set isVisible(value: boolean) {\n const opening = value && !this._isVisible;\n this._isVisible = value;\n if (opening) {\n // Fresh open: \"Include branding\" defaults ON only when the host explicitly\n // configured export branding — plain MJ Explorer keeps today's unthemed file.\n // NOTE this reads `branding`, so a host binding both in one change-detection\n // pass must bind [branding] FIRST (Angular sets inputs in template order).\n // chat-area's template does; a host mounting with isVisible already true and\n // branding bound after would get the checkbox defaulted off.\n this.exportOptions.includeTheme = !!this.branding;\n }\n }\n get isVisible(): boolean {\n return this._isVisible;\n }\n\n @Input() conversation?: MJConversationEntity;\n @Input() currentUser!: UserInfo;\n /**\n * Host-supplied export branding (theme tokens / logo / title). When set, the\n * HTML format's \"Include branding\" checkbox defaults on and the branding is\n * passed to {@link ExportService} on export. See `ExportBranding`.\n */\n @Input() branding: ExportBranding | null = null;\n @Output() cancelled = new EventEmitter<void>();\n @Output() exported = new EventEmitter<void>();\n\n selectedFormat: ExportFormat | null = 'markdown';\n isExporting = false;\n errorMessage = '';\n\n exportOptions: ExportOptions = {\n includeMessages: true,\n includeMetadata: true,\n prettyPrint: true,\n includeCSS: true,\n includeTheme: false,\n themeMode: 'light'\n };\n\n /** Format-aware hint under the \"Include branding\" checkbox. */\n get brandingHint(): string {\n if (this.selectedFormat === 'html') {\n if (!this.exportOptions.includeCSS) {\n return 'Requires \"Include CSS styling\"';\n }\n return `Embed the app's theme colors${this.branding?.logoUrl ? ', logo,' : ''} and attribution line`;\n }\n const logo = this.branding?.logoUrl && this.selectedFormat === 'markdown' ? ', logo,' : '';\n return `Add the title${logo} and attribution line`;\n }\n\n /**\n * The options actually handed to the service. `includeTheme` is the user's INTENT;\n * this resolves it against the selected format:\n *\n * - HTML with the stylesheet off cannot carry branding (a full-size unstyled logo and\n * an unstyled footer would leak), so it drops.\n * - `includeCSS` is an HTML-only concern and must NOT decide anything for\n * markdown / text / JSON — resolving here rather than mutating `includeTheme` is\n * what keeps an HTML-format toggle from silently following the user into another\n * format.\n */\n private resolveExportOptions(): ExportOptions {\n const unstyledHtml = this.selectedFormat === 'html' && !this.exportOptions.includeCSS;\n const brandingOn = !!this.exportOptions.includeTheme && !unstyledHtml;\n return {\n ...this.exportOptions,\n includeTheme: brandingOn,\n branding: brandingOn ? (this.branding ?? undefined) : undefined\n };\n }\n\n get exportTitle(): string {\n return `Export: ${this.conversation?.Name || 'Conversation'}`;\n }\n\n get canExport(): boolean {\n return !this.isExporting &&\n !!this.selectedFormat &&\n (this.exportOptions.includeMessages === true);\n }\n\n formats = [\n {\n value: 'markdown' as ExportFormat,\n name: 'Markdown',\n description: 'Formatted text with markdown syntax',\n icon: 'fa-solid fa-file-alt'\n },\n {\n value: 'json' as ExportFormat,\n name: 'JSON',\n description: 'Structured data format',\n icon: 'fa-solid fa-code'\n },\n {\n value: 'html' as ExportFormat,\n name: 'HTML',\n description: 'Web page format',\n icon: 'fa-solid fa-file-code'\n },\n {\n value: 'text' as ExportFormat,\n name: 'Plain Text',\n description: 'Simple text file',\n icon: 'fa-solid fa-file'\n }\n ];\n\n constructor(\n private exportService: ExportService,\n private dialogService: DialogService,\n private toastService: ToastService\n ) {}\n\n selectFormat(format: ExportFormat): void {\n if (!this.isExporting) {\n this.selectedFormat = format;\n }\n }\n\n async onExport(): Promise<void> {\n if (!this.canExport || !this.conversation) {\n return;\n }\n\n if (!this.exportOptions.includeMessages) {\n this.errorMessage = 'At least \"Include messages\" must be selected';\n return;\n }\n\n this.isExporting = true;\n this.errorMessage = '';\n\n try {\n await this.exportService.exportConversation(\n this.conversation.ID,\n this.selectedFormat!,\n this.currentUser,\n this.resolveExportOptions()\n );\n\n this.toastService.success('Conversation exported successfully');\n this.exported.emit();\n this.resetForm();\n } catch (error) {\n console.error('Error exporting conversation:', error);\n this.errorMessage = error instanceof Error ? error.message : 'Failed to export conversation';\n this.toastService.error(this.errorMessage);\n } finally {\n this.isExporting = false;\n }\n }\n\n onCancel(): void {\n this.cancelled.emit();\n this.resetForm();\n }\n\n private resetForm(): void {\n this.selectedFormat = 'markdown';\n this.errorMessage = '';\n this.exportOptions = {\n includeMessages: true,\n includeMetadata: true,\n prettyPrint: true,\n includeCSS: true,\n includeTheme: !!this.branding,\n themeMode: 'light'\n };\n this.isVisible = false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"export-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/export/export-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MJConversationEntity } from '@memberjunction/core-entities';\nimport { UserInfo } from '@memberjunction/core';\nimport { ExportService, ExportFormat, ExportOptions, ExportBranding } from '../../services/export.service';\nimport { DialogService } from '../../services/dialog.service';\nimport { ToastService } from '../../services/toast.service';\n\n@Component({\n standalone: false,\n selector: 'mj-export-modal',\n template: `\n @if (isVisible) {\n <mj-dialog\n [Title]=\"exportTitle\"\n [Width]=\"600\"\n [Height]=\"600\"\n [Visible]=\"true\"\n (Close)=\"onCancel()\">\n <div class=\"export-modal-content\">\n <section class=\"format-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-file-export\"></i>\n Export Format\n </h3>\n <p class=\"section-description\">\n Choose a format to export this conversation:\n </p>\n <div class=\"format-options\">\n @for (format of formats; track format.value) {\n <div\n class=\"format-option\"\n [class.selected]=\"selectedFormat === format.value\"\n (click)=\"selectFormat(format.value)\">\n <i [class]=\"format.icon\"></i>\n <div class=\"format-details\">\n <div class=\"format-name\">{{ format.name }}</div>\n <div class=\"format-description\">{{ format.description }}</div>\n </div>\n @if (selectedFormat === format.value) {\n <i class=\"fa-solid fa-check-circle check-icon\"></i>\n }\n </div>\n }\n </div>\n </section>\n <section class=\"options-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Export Options\n </h3>\n <div class=\"option-checkboxes\">\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"exportOptions.includeMessages\"\n [disabled]=\"isExporting\">\n <span>Include messages</span>\n <small>Export all conversation messages</small>\n </label>\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"exportOptions.includeMetadata\"\n [disabled]=\"isExporting\">\n <span>Include metadata</span>\n <small>Add creation date, IDs, and other metadata</small>\n </label>\n <!-- Branding applies to EVERY format (HTML gets theme colors + logo +\n footer; markdown/text/JSON get the title and attribution), so it\n belongs here rather than under HTML Options. Shown for HTML even with\n no host branding, because it still snapshots the app's theme. -->\n @if (selectedFormat === 'html' || branding) {\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"exportOptions.includeTheme\"\n [disabled]=\"isExporting || (selectedFormat === 'html' && !exportOptions.includeCSS)\">\n <span>Include branding</span>\n <small>{{ brandingHint }}</small>\n </label>\n }\n </div>\n @if (selectedFormat === 'json') {\n <div class=\"format-specific-options\">\n <h4 class=\"subsection-title\">JSON Options</h4>\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"exportOptions.prettyPrint\"\n [disabled]=\"isExporting\">\n <span>Pretty print</span>\n <small>Format JSON with indentation</small>\n </label>\n </div>\n }\n @if (selectedFormat === 'html') {\n <div class=\"format-specific-options\">\n <h4 class=\"subsection-title\">HTML Options</h4>\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"exportOptions.includeCSS\"\n [disabled]=\"isExporting\">\n <span>Include CSS styling</span>\n <small>Embed styles for better presentation</small>\n </label>\n <!-- Which palette gets baked in — NOT the mode the app happens to be in.\n Exporting from a dark session would otherwise put dark text on the\n export's white page. -->\n @if (exportOptions.includeTheme && exportOptions.includeCSS) {\n <label class=\"checkbox-label\">\n <span>Theme</span>\n <select\n class=\"mj-input theme-mode-select\"\n [(ngModel)]=\"exportOptions.themeMode\"\n [disabled]=\"isExporting\">\n <option value=\"light\">Light</option>\n <option value=\"dark\">Dark</option>\n </select>\n <small>Palette baked into the exported file</small>\n </label>\n }\n </div>\n }\n </section>\n @if (errorMessage) {\n <div class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ errorMessage }}\n </div>\n }\n @if (isExporting) {\n <div class=\"loading-indicator\">\n <mj-loading text=\"Exporting conversation...\" size=\"small\"></mj-loading>\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton [disabled]=\"isExporting\" (click)=\"onCancel()\">\n <i class=\"fa-solid fa-times\"></i>\n Cancel\n </button>\n <button mjButton variant=\"primary\" [disabled]=\"!canExport\" (click)=\"onExport()\">\n <i class=\"fa-solid fa-download\"></i>\n Export\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .export-modal-content {\n padding: 20px;\n max-height: calc(600px - 120px);\n overflow-y: auto;\n }\n\n section {\n margin-bottom: 24px;\n }\n\n .section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 8px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .section-title i {\n color: var(--mj-brand-primary);\n }\n\n .section-description {\n margin: 0 0 16px 0;\n color: var(--mj-text-muted);\n font-size: 14px;\n }\n\n .format-options {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .format-option {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n background: var(--mj-bg-surface-card);\n }\n\n .format-option:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n }\n\n .format-option.selected {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface-card));\n }\n\n .format-option > i.fa-solid,\n .format-option > i.fas {\n font-size: 24px;\n color: var(--mj-text-muted);\n width: 32px;\n text-align: center;\n }\n\n .format-option.selected > i.fa-solid,\n .format-option.selected > i.fas {\n color: var(--mj-brand-primary);\n }\n\n .format-details {\n flex: 1;\n }\n\n .format-name {\n font-weight: 500;\n font-size: 14px;\n margin-bottom: 2px;\n }\n\n .format-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .check-icon {\n font-size: 20px;\n color: var(--mj-status-success);\n }\n\n .option-checkboxes {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .checkbox-label {\n display: flex;\n flex-direction: column;\n gap: 4px;\n cursor: pointer;\n padding: 8px;\n border-radius: 4px;\n transition: background 0.2s;\n }\n\n .checkbox-label:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .checkbox-label input[type=\"checkbox\"] {\n margin-right: 8px;\n cursor: pointer;\n }\n\n .checkbox-label > span {\n display: inline-flex;\n align-items: center;\n font-size: 14px;\n font-weight: 500;\n }\n\n .checkbox-label input[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n }\n\n .theme-mode-select {\n margin-left: 8px;\n padding: 2px 6px;\n font-size: 13px;\n }\n\n .checkbox-label small {\n margin-left: 28px;\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .format-specific-options {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n }\n\n .subsection-title {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n\n .error-message {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-status-error);\n font-size: 13px;\n margin-top: 15px;\n padding: 10px 12px;\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-status-error);\n border-radius: 4px;\n }\n\n .loading-indicator {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 15px;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n color: var(--mj-text-muted);\n }\n\n mj-dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n padding: 15px 20px;\n border-top: 1px solid var(--mj-border-default);\n }\n\n mj-dialog-actions button i {\n margin-right: 6px;\n }\n `]\n})\nexport class ExportModalComponent {\n private _isVisible = false;\n @Input()\n set IsVisible(value: boolean) {\n const opening = value && !this._isVisible;\n this._isVisible = value;\n if (opening) {\n // Fresh open: \"Include branding\" defaults ON only when the host explicitly\n // configured export branding — plain MJ Explorer keeps today's unthemed file.\n // NOTE this reads `branding`, so a host binding both in one change-detection\n // pass must bind [branding] FIRST (Angular sets inputs in template order).\n // chat-area's template does; a host mounting with isVisible already true and\n // branding bound after would get the checkbox defaulted off.\n this.ExportOptions.includeTheme = !!this.Branding;\n }\n }\n get IsVisible(): boolean {\n return this._isVisible;\n }\n\n /** @deprecated Use {@link IsVisible}. */\n get isVisible(): boolean {\n return this.IsVisible;\n }\n /** @deprecated Use {@link IsVisible}. */\n @Input() set isVisible(value: boolean) {\n this.IsVisible = value;\n }\n\n @Input() Conversation?: MJConversationEntity;\n\n /** @deprecated Use {@link Conversation}. */\n @Input() set conversation(value: MJConversationEntity | undefined) {\n this.Conversation = value;\n }\n /** @deprecated Use {@link Conversation}. */\n get conversation(): MJConversationEntity | undefined {\n return this.Conversation;\n }\n @Input() CurrentUser!: UserInfo;\n\n /** @deprecated Use {@link CurrentUser}. */\n @Input() set currentUser(value: UserInfo) {\n this.CurrentUser = value;\n }\n /** @deprecated Use {@link CurrentUser}. */\n get currentUser(): UserInfo {\n return this.CurrentUser;\n }\n /**\n * Host-supplied export branding (theme tokens / logo / title). When set, the\n * HTML format's \"Include branding\" checkbox defaults on and the branding is\n * passed to {@link ExportService} on export. See `ExportBranding`.\n */\n @Input() Branding: ExportBranding | null = null;\n\n /** @deprecated Use {@link Branding}. */\n @Input() set branding(value: ExportBranding | null) {\n this.Branding = value;\n }\n /** @deprecated Use {@link Branding}. */\n get branding(): ExportBranding | null {\n return this.Branding;\n }\n @Output() Cancelled = new EventEmitter<void>();\n\n /**\n * @deprecated Use {@link Cancelled}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (cancelled) keeps working. Must stay AFTER Cancelled: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() cancelled = this.Cancelled;\n @Output() Exported = new EventEmitter<void>();\n\n /**\n * @deprecated Use {@link Exported}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (exported) keeps working. Must stay AFTER Exported: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() exported = this.Exported;\n\n SelectedFormat: ExportFormat | null = 'markdown';\n\n /** @deprecated Use {@link SelectedFormat}. */\n get selectedFormat(): ExportFormat | null {\n return this.SelectedFormat;\n }\n /** @deprecated Use {@link SelectedFormat}. */\n set selectedFormat(value: ExportFormat | null) {\n this.SelectedFormat = value;\n }\n IsExporting = false;\n\n /** @deprecated Use {@link IsExporting}. */\n get isExporting() {\n return this.IsExporting;\n }\n /** @deprecated Use {@link IsExporting}. */\n set isExporting(value) {\n this.IsExporting = value;\n }\n ErrorMessage = '';\n\n /** @deprecated Use {@link ErrorMessage}. */\n get errorMessage() {\n return this.ErrorMessage;\n }\n /** @deprecated Use {@link ErrorMessage}. */\n set errorMessage(value) {\n this.ErrorMessage = value;\n }\n\n ExportOptions: ExportOptions = {\n includeMessages: true,\n includeMetadata: true,\n prettyPrint: true,\n includeCSS: true,\n includeTheme: false,\n themeMode: 'light'\n };\n\n /** @deprecated Use {@link ExportOptions}. */\n get exportOptions(): ExportOptions {\n return this.ExportOptions;\n }\n /** @deprecated Use {@link ExportOptions}. */\n set exportOptions(value: ExportOptions) {\n this.ExportOptions = value;\n }\n\n /** Format-aware hint under the \"Include branding\" checkbox. */\n get BrandingHint(): string {\n if (this.SelectedFormat === 'html') {\n if (!this.ExportOptions.includeCSS) {\n return 'Requires \"Include CSS styling\"';\n }\n return `Embed the app's theme colors${this.Branding?.logoUrl ? ', logo,' : ''} and attribution line`;\n }\n const logo = this.Branding?.logoUrl && this.SelectedFormat === 'markdown' ? ', logo,' : '';\n return `Add the title${logo} and attribution line`;\n }\n\n /** @deprecated Use {@link BrandingHint}. */\n get brandingHint(): string {\n return this.BrandingHint;\n }\n\n /**\n * The options actually handed to the service. `includeTheme` is the user's INTENT;\n * this resolves it against the selected format:\n *\n * - HTML with the stylesheet off cannot carry branding (a full-size unstyled logo and\n * an unstyled footer would leak), so it drops.\n * - `includeCSS` is an HTML-only concern and must NOT decide anything for\n * markdown / text / JSON — resolving here rather than mutating `includeTheme` is\n * what keeps an HTML-format toggle from silently following the user into another\n * format.\n */\n private resolveExportOptions(): ExportOptions {\n const unstyledHtml = this.SelectedFormat === 'html' && !this.ExportOptions.includeCSS;\n const brandingOn = !!this.ExportOptions.includeTheme && !unstyledHtml;\n return {\n ...this.ExportOptions,\n includeTheme: brandingOn,\n branding: brandingOn ? (this.Branding ?? undefined) : undefined\n };\n }\n\n get ExportTitle(): string {\n return `Export: ${this.Conversation?.Name || 'Conversation'}`;\n }\n\n /** @deprecated Use {@link ExportTitle}. */\n get exportTitle(): string {\n return this.ExportTitle;\n }\n\n get CanExport(): boolean {\n return !this.IsExporting &&\n !!this.SelectedFormat &&\n (this.ExportOptions.includeMessages === true);\n }\n\n /** @deprecated Use {@link CanExport}. */\n get canExport(): boolean {\n return this.CanExport;\n }\n\n Formats = [\n {\n value: 'markdown' as ExportFormat,\n name: 'Markdown',\n description: 'Formatted text with markdown syntax',\n icon: 'fa-solid fa-file-alt'\n },\n {\n value: 'json' as ExportFormat,\n name: 'JSON',\n description: 'Structured data format',\n icon: 'fa-solid fa-code'\n },\n {\n value: 'html' as ExportFormat,\n name: 'HTML',\n description: 'Web page format',\n icon: 'fa-solid fa-file-code'\n },\n {\n value: 'text' as ExportFormat,\n name: 'Plain Text',\n description: 'Simple text file',\n icon: 'fa-solid fa-file'\n }\n ];\n\n /** @deprecated Use {@link Formats}. */\n get formats() {\n return this.Formats;\n }\n /** @deprecated Use {@link Formats}. */\n set formats(value) {\n this.Formats = value;\n }\n\n constructor(\n private exportService: ExportService,\n private dialogService: DialogService,\n private toastService: ToastService\n ) {}\n\n SelectFormat(format: ExportFormat): void {\n if (!this.IsExporting) {\n this.SelectedFormat = format;\n }\n }\n\n /** @deprecated Use {@link SelectFormat}. */\n selectFormat(format: ExportFormat): void {\n return this.SelectFormat(format);\n }\n\n async OnExport(): Promise<void> {\n if (!this.CanExport || !this.Conversation) {\n return;\n }\n\n if (!this.ExportOptions.includeMessages) {\n this.ErrorMessage = 'At least \"Include messages\" must be selected';\n return;\n }\n\n this.IsExporting = true;\n this.ErrorMessage = '';\n\n try {\n await this.exportService.exportConversation(\n this.Conversation.ID,\n this.SelectedFormat!,\n this.CurrentUser,\n this.resolveExportOptions()\n );\n\n this.toastService.success('Conversation exported successfully');\n this.Exported.emit();\n this.resetForm();\n } catch (error) {\n console.error('Error exporting conversation:', error);\n this.ErrorMessage = error instanceof Error ? error.message : 'Failed to export conversation';\n this.toastService.error(this.ErrorMessage);\n } finally {\n this.IsExporting = false;\n }\n }\n\n /** @deprecated Use {@link OnExport}. */\n async onExport(): Promise<void> {\n return this.OnExport();\n }\n\n OnCancel(): void {\n this.Cancelled.emit();\n this.resetForm();\n }\n\n /** @deprecated Use {@link OnCancel}. */\n onCancel(): void {\n return this.OnCancel();\n }\n\n private resetForm(): void {\n this.SelectedFormat = 'markdown';\n this.ErrorMessage = '';\n this.ExportOptions = {\n includeMessages: true,\n includeMetadata: true,\n prettyPrint: true,\n includeCSS: true,\n includeTheme: !!this.Branding,\n themeMode: 'light'\n };\n this.IsVisible = false;\n }\n}\n"]}
|
|
@@ -7,19 +7,45 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
*/
|
|
8
8
|
export declare class GlobalTasksPanelComponent implements OnInit, OnDestroy {
|
|
9
9
|
private activeTasksService;
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
Tasks: ActiveTask[];
|
|
11
|
+
/** @deprecated Use {@link Tasks}. */
|
|
12
|
+
get tasks(): ActiveTask[];
|
|
13
|
+
/** @deprecated Use {@link Tasks}. */
|
|
14
|
+
set tasks(value: ActiveTask[]);
|
|
15
|
+
IsMinimized: boolean;
|
|
16
|
+
/** @deprecated Use {@link IsMinimized}. */
|
|
17
|
+
get isMinimized(): boolean;
|
|
18
|
+
/** @deprecated Use {@link IsMinimized}. */
|
|
19
|
+
set isMinimized(value: boolean);
|
|
12
20
|
private destroy$;
|
|
21
|
+
TaskClicked: EventEmitter<ActiveTask>;
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated Use {@link TaskClicked}.
|
|
24
|
+
*
|
|
25
|
+
* The same emitter under the old binding name, so a template still binding
|
|
26
|
+
* (taskClicked) keeps working. Must stay AFTER TaskClicked: class fields
|
|
27
|
+
* initialise in order, and the other way round this captures undefined.
|
|
28
|
+
*/
|
|
13
29
|
taskClicked: EventEmitter<ActiveTask>;
|
|
14
30
|
constructor(activeTasksService: ActiveTasksService);
|
|
15
31
|
ngOnInit(): void;
|
|
16
32
|
ngOnDestroy(): void;
|
|
33
|
+
Expand(): void;
|
|
34
|
+
/** @deprecated Use {@link Expand}. */
|
|
17
35
|
expand(): void;
|
|
36
|
+
Minimize(): void;
|
|
37
|
+
/** @deprecated Use {@link Minimize}. */
|
|
18
38
|
minimize(): void;
|
|
39
|
+
OnTaskClick(task: ActiveTask): void;
|
|
40
|
+
/** @deprecated Use {@link OnTaskClick}. */
|
|
19
41
|
onTaskClick(task: ActiveTask): void;
|
|
42
|
+
GetTrimmedStatus(status: string): string;
|
|
43
|
+
/** @deprecated Use {@link GetTrimmedStatus}. */
|
|
20
44
|
getTrimmedStatus(status: string): string;
|
|
45
|
+
GetElapsedTime(task: ActiveTask): string;
|
|
46
|
+
/** @deprecated Use {@link GetElapsedTime}. */
|
|
21
47
|
getElapsedTime(task: ActiveTask): string;
|
|
22
48
|
static ɵfac: i0.ɵɵFactoryDeclaration<GlobalTasksPanelComponent, never>;
|
|
23
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<GlobalTasksPanelComponent, "mj-global-tasks-panel", never, {}, { "taskClicked": "taskClicked"; }, never, never, false, never>;
|
|
49
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<GlobalTasksPanelComponent, "mj-global-tasks-panel", never, {}, { "TaskClicked": "TaskClicked"; "taskClicked": "taskClicked"; }, never, never, false, never>;
|
|
24
50
|
}
|
|
25
51
|
//# sourceMappingURL=global-tasks-panel.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-tasks-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/global-tasks/global-tasks-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAU,YAAY,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;;AAIrF;;;GAGG;AACH,qBAkSa,yBAA0B,YAAW,MAAM,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"global-tasks-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/global-tasks/global-tasks-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAU,YAAY,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;;AAIrF;;;GAGG;AACH,qBAkSa,yBAA0B,YAAW,MAAM,EAAE,SAAS;IAmCrD,OAAO,CAAC,kBAAkB;IAlC/B,KAAK,EAAE,UAAU,EAAE,CAAM;IAEhC,qCAAqC;IACrC,IAAW,KAAK,IAAI,UAAU,EAAE,CAE/B;IACD,qCAAqC;IACrC,IAAW,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAEnC;IACM,WAAW,EAAE,OAAO,CAAS;IAEpC,2CAA2C;IAC3C,IAAW,WAAW,IAAI,OAAO,CAEhC;IACD,2CAA2C;IAC3C,IAAW,WAAW,CAAC,KAAK,EAAE,OAAO,EAEpC;IAED,OAAO,CAAC,QAAQ,CAAuB;IAE7B,WAAW,2BAAkC;IAEvD;;;;;;OAMG;IACO,WAAW,2BAAoB;gBAErB,kBAAkB,EAAE,kBAAkB;IAE1D,QAAQ;IAcR,WAAW;IAKX,MAAM;IAIN,sCAAsC;IACtC,MAAM;IAIN,QAAQ;IAIR,wCAAwC;IACxC,QAAQ;IAIR,WAAW,CAAC,IAAI,EAAE,UAAU;IAI5B,2CAA2C;IAC3C,WAAW,CAAC,IAAI,EAAE,UAAU;IAI5B,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAMxC,gDAAgD;IAChD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIxC,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAexC,8CAA8C;IAC9C,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;yCA9G7B,yBAAyB;2CAAzB,yBAAyB;CAiHrC"}
|