@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rating-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/components/dialogs/rating-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;;;IAQzC,4BAA0B;IAAA,YAAa;IAAA,iBAAI;;;IAAjB,cAAa;IAAb,oCAAa;;;;IASrC,kCAWuB;IAArB,AADA,AADA,AADA,wMAAS,yBAAe,KAAC,qOACO,2NACL,kKACnB,kBAAW,KAAC;IACpB,YACF;IAAA,iBAAS;;;;IATP,AADA,+CAA4B,4CACW;;IAQvC,cACF;IADE,qCACF;;;IAQE,8BAAQ;IAAA,YAAwB;IAAA,iBAAS;IACzC,gCAAkB;IAAA,sBAAC;IAAA,iBAAO;IAC1B,4BAAM;IAAA,YAAoC;IAAA,iBAAO;;;IAFzC,cAAwB;IAAxB,wDAAwB;IAE1B,eAAoC;IAApC,kEAAoC;;;IAE1C,+BAAoB;IAAA,6BAAa;IAAA,iBAAO;;;IAsCtC,6BAA2B;IAAA,iDAAiC;IAAA,iBAAI;;;;IAPhE,AADF,iCAAgC,gBAI0C;IADtE,0TAA4B;IAF9B,iBAGwE;IACxE,4BAAM;IAAA,6CAA6B;IACrC,AADqC,iBAAO,EACpC;IACR,qGAAuB;;;IAJnB,cAA4B;IAA5B,qDAA4B;IAIhC,eAEC;IAFD,iDAEC;;AA+Mb,MAAM,OAAO,qBAAqB;IACvB,OAAO,GAAW,EAAE,CAAC;IACrB,aAAa,GAAkB,IAAI,CAAC;IACpC,eAAe,GAAW,EAAE,CAAC;IAEtC,wEAAwE;IAC/D,cAAc,GAAY,KAAK,CAAC;IAEhC,KAAK,GAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3D,cAAc,GAAkB,IAAI,CAAC;IACrC,aAAa,GAAkB,IAAI,CAAC;IACpC,QAAQ,GAAW,EAAE,CAAC;IACtB,cAAc,GAAY,KAAK,CAAC;IAEhC,QAAQ;QACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC;IACnD,CAAC;IAED,IAAI,aAAa;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;QAC/B,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,CAAS;QACf,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,CAAS;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;QAC/B,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,YAAY,CAAC,CAAS;QACpB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,aAAa,CAAC,CAAS;QACrB,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,WAAW,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,mBAAmB,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,sFAAsF;IACtF,cAAc;QACZ,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC;IACrD,CAAC;IAED,kFAAkF;IAClF,2BAA2B;QACzB,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC;IACpD,CAAC;+GA3EU,qBAAqB;6DAArB,qBAAqB;YA1R9B,8BAA2B;YACzB,qFAAe;YAIf,8BAIqC;YAAnC,yGAAc,uBAAmB,IAAC;YAClC,6GAeC;YACH,iBAAM;YAGJ,AADF,8BAAyB,cACG;YAAA,8BAAS;YAAA,iBAAO;YAC1C,+BAAgE;YAK5D,AAJF,6EAAgC,oEAIvB;YAGX,iBAAO;YACP,gCAAuC;YAAA,+BAAS;YAClD,AADkD,iBAAO,EACnD;YAIF,AADF,AADF,+BAAmB,eACS,iBACyB;YAAA,6BAAY;YAAA,iBAAQ;YACrE,iCAAyB;YAAA,yBAAQ;YACnC,AADmC,iBAAO,EACpC;YACN,qCAMmB;YAJjB,mNAAsB;YAKxB,yBAAA;YACF,AADE,iBAAW,EACP;YAEN,gCAAoE;YAClE,yBAAyC;YAEvC,AADF,gCAA0B,aACA;YACtB,mDAAiC;YAAA,+BAAQ;YAAA,6BAAY;YAAA,iBAAS;YAAC,sBAC/D;YAAA,+BAAQ;YAAA,0BAAS;YAAA,iBAAS;YAAC,6GAE7B;YAAA,iBAAI;YACJ,+EAAsB;YAc5B,AADE,AADE,iBAAM,EACF,EACF;;YA9EJ,cAEC;YAFD,sCAEC;YAOC,eAeC;YAfD,wBAeC;YAK8B,eAAgC;;YAC7D,cAMC;YAND,uDAMC;YAYD,gBAAsB;YAAtB,4CAAsB;YAQA,eAAyC;YAAzC,sDAAyC;YAQ/D,gBAWC;YAXD,8CAWC;;;iFA8ME,qBAAqB;cA9RjC,SAAS;6BACI,KAAK,YACP,kBAAkB,YAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFT;;kBA2MA,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBAGL,KAAK;;kFANK,qBAAqB","sourcesContent":["import { Component, Input } from '@angular/core';\n\n@Component({\n standalone: false,\n selector: 'mj-rating-dialog',\n template: `\n <div class=\"rating-dialog\">\n @if (message) {\n <p class=\"dialog-message\">{{ message }}</p>\n }\n\n <div\n class=\"rating-scale\"\n role=\"radiogroup\"\n aria-label=\"Rating from 1 to 10\"\n (mouseleave)=\"onScaleMouseLeave()\">\n @for (n of scale; track n) {\n <button\n type=\"button\"\n class=\"rating-pip\"\n [class.filled]=\"isFilled(n)\"\n [class.selected]=\"selectedRating === n\"\n [attr.data-band]=\"bandFor(n)\"\n [attr.aria-checked]=\"selectedRating === n\"\n role=\"radio\"\n (click)=\"selectRating(n)\"\n (mouseenter)=\"hoveredRating = n\"\n (focus)=\"hoveredRating = n\"\n (blur)=\"onPipBlur()\">\n {{ n }}\n </button>\n }\n </div>\n\n <div class=\"rating-meta\">\n <span class=\"legend-edge\">1 — Worst</span>\n <span class=\"selected-caption\" [attr.data-band]=\"effectiveBand\">\n @if (effectiveRating !== null) {\n <strong>{{ effectiveRating }}/10</strong>\n <span class=\"dot\">·</span>\n <span>{{ getDescriptor(effectiveRating) }}</span>\n } @else {\n <span class=\"muted\">Pick a number</span>\n }\n </span>\n <span class=\"legend-edge legend-right\">10 — Best</span>\n </div>\n\n <div class=\"field\">\n <div class=\"field-header\">\n <label class=\"field-label\" for=\"rating-comments\">Tell us more</label>\n <span class=\"field-hint\">Optional</span>\n </div>\n <textarea\n id=\"rating-comments\"\n [(ngModel)]=\"comments\"\n class=\"comment-textarea\"\n placeholder=\"What was good or bad about this response?\"\n rows=\"4\"\n maxlength=\"2000\">\n </textarea>\n </div>\n\n <div class=\"consent-note\" [class.requires-consent]=\"requireConsent\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n <div class=\"consent-body\">\n <p class=\"consent-text\">\n By submitting, you authorize the <strong>Integrations</strong> and\n <strong>Developer</strong> teams to view this conversation and the\n rated component so they can improve agent quality.\n </p>\n @if (requireConsent) {\n <label class=\"consent-checkbox\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"consentChecked\"\n aria-label=\"I understand and accept the access authorization above\" />\n <span>I understand and accept this.</span>\n </label>\n @if (!consentChecked) {\n <p class=\"consent-warning\">Required to submit your feedback.</p>\n }\n }\n </div>\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n --rd-text-primary: var(--mj-text-primary, #18181b);\n --rd-text-secondary: var(--mj-text-secondary, #52525b);\n --rd-text-muted: var(--mj-text-muted, #71717a);\n --rd-text-disabled: var(--mj-text-disabled, #a1a1aa);\n --rd-surface: var(--mj-bg-surface, #ffffff);\n --rd-border: var(--mj-border-default, #e4e4e7);\n --rd-border-strong: var(--mj-border-strong, #d4d4d8);\n --rd-brand: var(--mj-brand-primary, #6366f1);\n --rd-on-brand: var(--mj-text-on-brand, #ffffff);\n\n --rd-low: var(--mj-status-error, #ef4444);\n --rd-mid: var(--mj-status-warning, #f59e0b);\n --rd-high: var(--mj-status-success, #10b981);\n }\n\n .rating-dialog {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 18px;\n padding: 4px 20px 8px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;\n }\n .rating-dialog * { box-sizing: border-box; }\n\n .dialog-message {\n margin: 0;\n color: var(--rd-text-secondary);\n font-size: 14px;\n line-height: 1.5;\n }\n\n /* ─── Pill row ─── */\n .rating-scale {\n display: grid;\n grid-template-columns: repeat(10, minmax(0, 1fr));\n gap: 6px;\n width: 100%;\n }\n .rating-pip {\n appearance: none;\n -webkit-appearance: none;\n width: 100%;\n min-width: 0;\n height: 40px;\n padding: 0;\n background: var(--rd-surface);\n border: 1px solid var(--rd-border);\n border-radius: 8px;\n font-family: inherit;\n font-size: 13px;\n font-weight: 600;\n color: var(--rd-text-secondary);\n cursor: pointer;\n transition: transform 100ms ease, background 140ms ease, border-color 140ms ease, color 140ms ease, box-shadow 140ms ease;\n font-variant-numeric: tabular-nums;\n }\n .rating-pip:hover {\n border-color: var(--rd-border-strong);\n color: var(--rd-text-primary);\n }\n .rating-pip:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--rd-brand) 25%, transparent);\n }\n .rating-pip.filled[data-band=\"low\"] { background: var(--rd-low); border-color: var(--rd-low); color: var(--rd-on-brand); }\n .rating-pip.filled[data-band=\"mid\"] { background: var(--rd-mid); border-color: var(--rd-mid); color: var(--rd-on-brand); }\n .rating-pip.filled[data-band=\"high\"] { background: var(--rd-high); border-color: var(--rd-high); color: var(--rd-on-brand); }\n .rating-pip.selected { transform: translateY(-1px); }\n\n /* ─── Meta row: edge legend + center caption ─── */\n .rating-meta {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: 8px;\n padding: 0 2px;\n margin-top: -2px;\n font-size: 11px;\n color: var(--rd-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n }\n .legend-edge { font-weight: 500; }\n .legend-right { text-align: right; }\n\n .selected-caption {\n display: inline-flex;\n align-items: baseline;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n text-transform: none;\n letter-spacing: 0;\n color: var(--rd-text-secondary);\n font-variant-numeric: tabular-nums;\n }\n .selected-caption strong { font-weight: 700; font-size: 13px; }\n .selected-caption .dot { color: var(--rd-text-disabled); }\n .selected-caption .muted { color: var(--rd-text-disabled); font-weight: 500; }\n .selected-caption[data-band=\"low\"] { color: var(--rd-low); }\n .selected-caption[data-band=\"mid\"] { color: var(--rd-mid); }\n .selected-caption[data-band=\"high\"] { color: var(--rd-high); }\n\n /* ─── Comment field ─── */\n .field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n .field-header {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n }\n .field-label {\n font-weight: 600;\n font-size: 13px;\n color: var(--rd-text-primary);\n }\n .field-hint {\n font-size: 11px;\n color: var(--rd-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n }\n .comment-textarea {\n width: 100%;\n min-height: 88px;\n padding: 10px 12px;\n border: 1px solid var(--rd-border);\n border-radius: 8px;\n background: var(--rd-surface);\n color: var(--rd-text-primary);\n font-family: inherit;\n font-size: 13.5px;\n line-height: 1.5;\n resize: vertical;\n transition: border-color 140ms ease, box-shadow 140ms ease;\n }\n .comment-textarea::placeholder { color: var(--rd-text-disabled); }\n .comment-textarea:hover { border-color: var(--rd-border-strong); }\n .comment-textarea:focus {\n outline: none;\n border-color: var(--rd-brand);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--rd-brand) 18%, transparent);\n }\n\n /* ─── Consent note ─── */\n .consent-note {\n display: flex;\n gap: 10px;\n align-items: flex-start;\n padding: 12px 14px;\n background: color-mix(in srgb, var(--rd-brand) 6%, var(--rd-surface));\n border: 1px solid color-mix(in srgb, var(--rd-brand) 22%, var(--rd-border));\n border-radius: 8px;\n }\n .consent-note > i {\n color: var(--rd-brand);\n font-size: 14px;\n margin-top: 2px;\n flex-shrink: 0;\n }\n .consent-body { flex: 1; min-width: 0; }\n .consent-text {\n margin: 0;\n font-size: 12.5px;\n line-height: 1.5;\n color: var(--rd-text-secondary);\n }\n .consent-text strong { color: var(--rd-text-primary); font-weight: 600; }\n .consent-checkbox {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 10px;\n font-size: 12.5px;\n color: var(--rd-text-primary);\n font-weight: 500;\n cursor: pointer;\n user-select: none;\n }\n .consent-checkbox input {\n width: 15px;\n height: 15px;\n cursor: pointer;\n accent-color: var(--rd-brand);\n }\n .consent-warning {\n margin: 6px 0 0 23px;\n font-size: 11px;\n color: var(--rd-low);\n font-weight: 500;\n }\n `]\n})\nexport class RatingDialogComponent {\n @Input() message: string = '';\n @Input() initialRating: number | null = null;\n @Input() initialComments: string = '';\n\n /** When true, the user must check the consent box before submitting. */\n @Input() requireConsent: boolean = false;\n\n readonly scale: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n selectedRating: number | null = null;\n hoveredRating: number | null = null;\n comments: string = '';\n consentChecked: boolean = false;\n\n ngOnInit(): void {\n this.selectedRating = this.initialRating;\n this.comments = this.initialComments ?? '';\n }\n\n get effectiveRating(): number | null {\n return this.hoveredRating ?? this.selectedRating;\n }\n\n get effectiveBand(): string | null {\n const r = this.effectiveRating;\n return r === null ? null : this.bandFor(r);\n }\n\n bandFor(n: number): 'low' | 'mid' | 'high' {\n if (n <= 3) return 'low';\n if (n <= 7) return 'mid';\n return 'high';\n }\n\n isFilled(n: number): boolean {\n const r = this.effectiveRating;\n return r !== null && r >= n;\n }\n\n selectRating(n: number): void {\n this.selectedRating = n;\n }\n\n onScaleMouseLeave(): void {\n this.hoveredRating = null;\n }\n\n onPipBlur(): void {\n this.hoveredRating = null;\n }\n\n getDescriptor(n: number): string {\n if (n <= 2) return 'Very Poor';\n if (n <= 4) return 'Needs Improvement';\n if (n <= 6) return 'Okay';\n if (n <= 8) return 'Good';\n return 'Excellent';\n }\n\n getRating(): number | null {\n return this.selectedRating;\n }\n\n getComments(): string {\n return (this.comments ?? '').trim();\n }\n\n /** True if the consent requirement is met (not required, or required and checked). */\n isConsentValid(): boolean {\n return !this.requireConsent || this.consentChecked;\n }\n\n /** True only when the user *just* acknowledged consent in this dialog session. */\n wasConsentNewlyAcknowledged(): boolean {\n return this.requireConsent && this.consentChecked;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rating-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/components/dialogs/rating-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;;;IAQzC,4BAA0B;IAAA,YAAa;IAAA,iBAAI;;;IAAjB,cAAa;IAAb,oCAAa;;;;IASrC,kCAWuB;IAArB,AADA,AADA,AADA,wMAAS,yBAAe,KAAC,qOACO,2NACL,kKACnB,kBAAW,KAAC;IACpB,YACF;IAAA,iBAAS;;;;IATP,AADA,+CAA4B,4CACW;;IAQvC,cACF;IADE,qCACF;;;IAQE,8BAAQ;IAAA,YAAwB;IAAA,iBAAS;IACzC,gCAAkB;IAAA,sBAAC;IAAA,iBAAO;IAC1B,4BAAM;IAAA,YAAoC;IAAA,iBAAO;;;IAFzC,cAAwB;IAAxB,wDAAwB;IAE1B,eAAoC;IAApC,kEAAoC;;;IAE1C,+BAAoB;IAAA,6BAAa;IAAA,iBAAO;;;IAsCtC,6BAA2B;IAAA,iDAAiC;IAAA,iBAAI;;;;IAPhE,AADF,iCAAgC,gBAI0C;IADtE,0TAA4B;IAF9B,iBAGwE;IACxE,4BAAM;IAAA,6CAA6B;IACrC,AADqC,iBAAO,EACpC;IACR,qGAAuB;;;IAJnB,cAA4B;IAA5B,qDAA4B;IAIhC,eAEC;IAFD,iDAEC;;AA+Mb,MAAM,OAAO,qBAAqB;IACvB,OAAO,GAAW,EAAE,CAAC;IAE9B,uCAAuC;IACvC,IAAa,OAAO,CAAC,KAAa;QAChC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,uCAAuC;IACvC,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACQ,aAAa,GAAkB,IAAI,CAAC;IAE7C,6CAA6C;IAC7C,IAAa,aAAa,CAAC,KAAoB;QAC7C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,6CAA6C;IAC7C,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IACQ,eAAe,GAAW,EAAE,CAAC;IAEtC,+CAA+C;IAC/C,IAAa,eAAe,CAAC,KAAa;QACxC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IACD,+CAA+C;IAC/C,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,wEAAwE;IAC/D,cAAc,GAAY,KAAK,CAAC;IAEzC,8CAA8C;IAC9C,IAAa,cAAc,CAAC,KAAc;QACxC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IACD,8CAA8C;IAC9C,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEQ,KAAK,GAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3D,qCAAqC;IACrC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,cAAc,GAAkB,IAAI,CAAC;IAErC,8CAA8C;IAC9C,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACD,8CAA8C;IAC9C,IAAI,cAAc,CAAC,KAAoB;QACrC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IACD,aAAa,GAAkB,IAAI,CAAC;IAEpC,6CAA6C;IAC7C,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IACD,6CAA6C;IAC7C,IAAI,aAAa,CAAC,KAAoB;QACpC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,QAAQ,GAAW,EAAE,CAAC;IAEtB,wCAAwC;IACxC,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACD,wCAAwC;IACxC,IAAI,QAAQ,CAAC,KAAa;QACxB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,cAAc,GAAY,KAAK,CAAC;IAEhC,8CAA8C;IAC9C,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACD,8CAA8C;IAC9C,IAAI,cAAc,CAAC,KAAc;QAC/B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC;IACnD,CAAC;IAED,+CAA+C;IAC/C,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,aAAa;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;QAC/B,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,6CAA6C;IAC7C,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,CAAS;QACf,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,uCAAuC;IACvC,OAAO,CAAC,CAAS;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,QAAQ,CAAC,CAAS;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;QAC/B,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,wCAAwC;IACxC,QAAQ,CAAC,CAAS;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,YAAY,CAAC,CAAS;QACpB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,4CAA4C;IAC5C,YAAY,CAAC,CAAS;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,iDAAiD;IACjD,iBAAiB;QACf,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAED,SAAS;QACP,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,yCAAyC;IACzC,SAAS;QACP,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,aAAa,CAAC,CAAS;QACrB,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,WAAW,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,mBAAmB,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,6CAA6C;IAC7C,aAAa,CAAC,CAAS;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,yCAAyC;IACzC,SAAS;QACP,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,2CAA2C;IAC3C,WAAW;QACT,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,sFAAsF;IACtF,cAAc;QACZ,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC;IACrD,CAAC;IAED,8CAA8C;IAC9C,cAAc;QACZ,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED,kFAAkF;IAClF,2BAA2B;QACzB,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC;IACpD,CAAC;IAED,2DAA2D;IAC3D,2BAA2B;QACzB,OAAO,IAAI,CAAC,2BAA2B,EAAE,CAAC;IAC5C,CAAC;+GApNU,qBAAqB;6DAArB,qBAAqB;YA1R9B,8BAA2B;YACzB,qFAAe;YAIf,8BAIqC;YAAnC,yGAAc,uBAAmB,IAAC;YAClC,6GAeC;YACH,iBAAM;YAGJ,AADF,8BAAyB,cACG;YAAA,8BAAS;YAAA,iBAAO;YAC1C,+BAAgE;YAK5D,AAJF,6EAAgC,oEAIvB;YAGX,iBAAO;YACP,gCAAuC;YAAA,+BAAS;YAClD,AADkD,iBAAO,EACnD;YAIF,AADF,AADF,+BAAmB,eACS,iBACyB;YAAA,6BAAY;YAAA,iBAAQ;YACrE,iCAAyB;YAAA,yBAAQ;YACnC,AADmC,iBAAO,EACpC;YACN,qCAMmB;YAJjB,mNAAsB;YAKxB,yBAAA;YACF,AADE,iBAAW,EACP;YAEN,gCAAoE;YAClE,yBAAyC;YAEvC,AADF,gCAA0B,aACA;YACtB,mDAAiC;YAAA,+BAAQ;YAAA,6BAAY;YAAA,iBAAS;YAAC,sBAC/D;YAAA,+BAAQ;YAAA,0BAAS;YAAA,iBAAS;YAAC,6GAE7B;YAAA,iBAAI;YACJ,+EAAsB;YAc5B,AADE,AADE,iBAAM,EACF,EACF;;YA9EJ,cAEC;YAFD,sCAEC;YAOC,eAeC;YAfD,wBAeC;YAK8B,eAAgC;;YAC7D,cAMC;YAND,uDAMC;YAYD,gBAAsB;YAAtB,4CAAsB;YAQA,eAAyC;YAAzC,sDAAyC;YAQ/D,gBAWC;YAXD,8CAWC;;;iFA8ME,qBAAqB;cA9RjC,SAAS;6BACI,KAAK,YACP,kBAAkB,YAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFT;;kBA2MA,KAAK;;kBAGL,KAAK;;kBAOL,KAAK;;kBAGL,KAAK;;kBAOL,KAAK;;kBAGL,KAAK;;kBASL,KAAK;;kBAGL,KAAK;;kFApCK,qBAAqB","sourcesContent":["import { Component, Input } from '@angular/core';\n\n@Component({\n standalone: false,\n selector: 'mj-rating-dialog',\n template: `\n <div class=\"rating-dialog\">\n @if (message) {\n <p class=\"dialog-message\">{{ message }}</p>\n }\n\n <div\n class=\"rating-scale\"\n role=\"radiogroup\"\n aria-label=\"Rating from 1 to 10\"\n (mouseleave)=\"onScaleMouseLeave()\">\n @for (n of scale; track n) {\n <button\n type=\"button\"\n class=\"rating-pip\"\n [class.filled]=\"isFilled(n)\"\n [class.selected]=\"selectedRating === n\"\n [attr.data-band]=\"bandFor(n)\"\n [attr.aria-checked]=\"selectedRating === n\"\n role=\"radio\"\n (click)=\"selectRating(n)\"\n (mouseenter)=\"hoveredRating = n\"\n (focus)=\"hoveredRating = n\"\n (blur)=\"onPipBlur()\">\n {{ n }}\n </button>\n }\n </div>\n\n <div class=\"rating-meta\">\n <span class=\"legend-edge\">1 — Worst</span>\n <span class=\"selected-caption\" [attr.data-band]=\"effectiveBand\">\n @if (effectiveRating !== null) {\n <strong>{{ effectiveRating }}/10</strong>\n <span class=\"dot\">·</span>\n <span>{{ getDescriptor(effectiveRating) }}</span>\n } @else {\n <span class=\"muted\">Pick a number</span>\n }\n </span>\n <span class=\"legend-edge legend-right\">10 — Best</span>\n </div>\n\n <div class=\"field\">\n <div class=\"field-header\">\n <label class=\"field-label\" for=\"rating-comments\">Tell us more</label>\n <span class=\"field-hint\">Optional</span>\n </div>\n <textarea\n id=\"rating-comments\"\n [(ngModel)]=\"comments\"\n class=\"comment-textarea\"\n placeholder=\"What was good or bad about this response?\"\n rows=\"4\"\n maxlength=\"2000\">\n </textarea>\n </div>\n\n <div class=\"consent-note\" [class.requires-consent]=\"requireConsent\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n <div class=\"consent-body\">\n <p class=\"consent-text\">\n By submitting, you authorize the <strong>Integrations</strong> and\n <strong>Developer</strong> teams to view this conversation and the\n rated component so they can improve agent quality.\n </p>\n @if (requireConsent) {\n <label class=\"consent-checkbox\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"consentChecked\"\n aria-label=\"I understand and accept the access authorization above\" />\n <span>I understand and accept this.</span>\n </label>\n @if (!consentChecked) {\n <p class=\"consent-warning\">Required to submit your feedback.</p>\n }\n }\n </div>\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n --rd-text-primary: var(--mj-text-primary, #18181b);\n --rd-text-secondary: var(--mj-text-secondary, #52525b);\n --rd-text-muted: var(--mj-text-muted, #71717a);\n --rd-text-disabled: var(--mj-text-disabled, #a1a1aa);\n --rd-surface: var(--mj-bg-surface, #ffffff);\n --rd-border: var(--mj-border-default, #e4e4e7);\n --rd-border-strong: var(--mj-border-strong, #d4d4d8);\n --rd-brand: var(--mj-brand-primary, #6366f1);\n --rd-on-brand: var(--mj-text-on-brand, #ffffff);\n\n --rd-low: var(--mj-status-error, #ef4444);\n --rd-mid: var(--mj-status-warning, #f59e0b);\n --rd-high: var(--mj-status-success, #10b981);\n }\n\n .rating-dialog {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 18px;\n padding: 4px 20px 8px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;\n }\n .rating-dialog * { box-sizing: border-box; }\n\n .dialog-message {\n margin: 0;\n color: var(--rd-text-secondary);\n font-size: 14px;\n line-height: 1.5;\n }\n\n /* ─── Pill row ─── */\n .rating-scale {\n display: grid;\n grid-template-columns: repeat(10, minmax(0, 1fr));\n gap: 6px;\n width: 100%;\n }\n .rating-pip {\n appearance: none;\n -webkit-appearance: none;\n width: 100%;\n min-width: 0;\n height: 40px;\n padding: 0;\n background: var(--rd-surface);\n border: 1px solid var(--rd-border);\n border-radius: 8px;\n font-family: inherit;\n font-size: 13px;\n font-weight: 600;\n color: var(--rd-text-secondary);\n cursor: pointer;\n transition: transform 100ms ease, background 140ms ease, border-color 140ms ease, color 140ms ease, box-shadow 140ms ease;\n font-variant-numeric: tabular-nums;\n }\n .rating-pip:hover {\n border-color: var(--rd-border-strong);\n color: var(--rd-text-primary);\n }\n .rating-pip:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--rd-brand) 25%, transparent);\n }\n .rating-pip.filled[data-band=\"low\"] { background: var(--rd-low); border-color: var(--rd-low); color: var(--rd-on-brand); }\n .rating-pip.filled[data-band=\"mid\"] { background: var(--rd-mid); border-color: var(--rd-mid); color: var(--rd-on-brand); }\n .rating-pip.filled[data-band=\"high\"] { background: var(--rd-high); border-color: var(--rd-high); color: var(--rd-on-brand); }\n .rating-pip.selected { transform: translateY(-1px); }\n\n /* ─── Meta row: edge legend + center caption ─── */\n .rating-meta {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: 8px;\n padding: 0 2px;\n margin-top: -2px;\n font-size: 11px;\n color: var(--rd-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n }\n .legend-edge { font-weight: 500; }\n .legend-right { text-align: right; }\n\n .selected-caption {\n display: inline-flex;\n align-items: baseline;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n text-transform: none;\n letter-spacing: 0;\n color: var(--rd-text-secondary);\n font-variant-numeric: tabular-nums;\n }\n .selected-caption strong { font-weight: 700; font-size: 13px; }\n .selected-caption .dot { color: var(--rd-text-disabled); }\n .selected-caption .muted { color: var(--rd-text-disabled); font-weight: 500; }\n .selected-caption[data-band=\"low\"] { color: var(--rd-low); }\n .selected-caption[data-band=\"mid\"] { color: var(--rd-mid); }\n .selected-caption[data-band=\"high\"] { color: var(--rd-high); }\n\n /* ─── Comment field ─── */\n .field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n .field-header {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n }\n .field-label {\n font-weight: 600;\n font-size: 13px;\n color: var(--rd-text-primary);\n }\n .field-hint {\n font-size: 11px;\n color: var(--rd-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n }\n .comment-textarea {\n width: 100%;\n min-height: 88px;\n padding: 10px 12px;\n border: 1px solid var(--rd-border);\n border-radius: 8px;\n background: var(--rd-surface);\n color: var(--rd-text-primary);\n font-family: inherit;\n font-size: 13.5px;\n line-height: 1.5;\n resize: vertical;\n transition: border-color 140ms ease, box-shadow 140ms ease;\n }\n .comment-textarea::placeholder { color: var(--rd-text-disabled); }\n .comment-textarea:hover { border-color: var(--rd-border-strong); }\n .comment-textarea:focus {\n outline: none;\n border-color: var(--rd-brand);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--rd-brand) 18%, transparent);\n }\n\n /* ─── Consent note ─── */\n .consent-note {\n display: flex;\n gap: 10px;\n align-items: flex-start;\n padding: 12px 14px;\n background: color-mix(in srgb, var(--rd-brand) 6%, var(--rd-surface));\n border: 1px solid color-mix(in srgb, var(--rd-brand) 22%, var(--rd-border));\n border-radius: 8px;\n }\n .consent-note > i {\n color: var(--rd-brand);\n font-size: 14px;\n margin-top: 2px;\n flex-shrink: 0;\n }\n .consent-body { flex: 1; min-width: 0; }\n .consent-text {\n margin: 0;\n font-size: 12.5px;\n line-height: 1.5;\n color: var(--rd-text-secondary);\n }\n .consent-text strong { color: var(--rd-text-primary); font-weight: 600; }\n .consent-checkbox {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 10px;\n font-size: 12.5px;\n color: var(--rd-text-primary);\n font-weight: 500;\n cursor: pointer;\n user-select: none;\n }\n .consent-checkbox input {\n width: 15px;\n height: 15px;\n cursor: pointer;\n accent-color: var(--rd-brand);\n }\n .consent-warning {\n margin: 6px 0 0 23px;\n font-size: 11px;\n color: var(--rd-low);\n font-weight: 500;\n }\n `]\n})\nexport class RatingDialogComponent {\n @Input() Message: string = '';\n\n /** @deprecated Use {@link Message}. */\n @Input() set message(value: string) {\n this.Message = value;\n }\n /** @deprecated Use {@link Message}. */\n get message(): string {\n return this.Message;\n }\n @Input() InitialRating: number | null = null;\n\n /** @deprecated Use {@link InitialRating}. */\n @Input() set initialRating(value: number | null) {\n this.InitialRating = value;\n }\n /** @deprecated Use {@link InitialRating}. */\n get initialRating(): number | null {\n return this.InitialRating;\n }\n @Input() InitialComments: string = '';\n\n /** @deprecated Use {@link InitialComments}. */\n @Input() set initialComments(value: string) {\n this.InitialComments = value;\n }\n /** @deprecated Use {@link InitialComments}. */\n get initialComments(): string {\n return this.InitialComments;\n }\n\n /** When true, the user must check the consent box before submitting. */\n @Input() RequireConsent: boolean = false;\n\n /** @deprecated Use {@link RequireConsent}. */\n @Input() set requireConsent(value: boolean) {\n this.RequireConsent = value;\n }\n /** @deprecated Use {@link RequireConsent}. */\n get requireConsent(): boolean {\n return this.RequireConsent;\n }\n\n readonly Scale: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n\n /** @deprecated Use {@link Scale}. */\n get scale(): number[] {\n return this.Scale;\n }\n SelectedRating: number | null = null;\n\n /** @deprecated Use {@link SelectedRating}. */\n get selectedRating(): number | null {\n return this.SelectedRating;\n }\n /** @deprecated Use {@link SelectedRating}. */\n set selectedRating(value: number | null) {\n this.SelectedRating = value;\n }\n HoveredRating: number | null = null;\n\n /** @deprecated Use {@link HoveredRating}. */\n get hoveredRating(): number | null {\n return this.HoveredRating;\n }\n /** @deprecated Use {@link HoveredRating}. */\n set hoveredRating(value: number | null) {\n this.HoveredRating = value;\n }\n Comments: string = '';\n\n /** @deprecated Use {@link Comments}. */\n get comments(): string {\n return this.Comments;\n }\n /** @deprecated Use {@link Comments}. */\n set comments(value: string) {\n this.Comments = value;\n }\n ConsentChecked: boolean = false;\n\n /** @deprecated Use {@link ConsentChecked}. */\n get consentChecked(): boolean {\n return this.ConsentChecked;\n }\n /** @deprecated Use {@link ConsentChecked}. */\n set consentChecked(value: boolean) {\n this.ConsentChecked = value;\n }\n\n ngOnInit(): void {\n this.SelectedRating = this.InitialRating;\n this.Comments = this.InitialComments ?? '';\n }\n\n get EffectiveRating(): number | null {\n return this.HoveredRating ?? this.SelectedRating;\n }\n\n /** @deprecated Use {@link EffectiveRating}. */\n get effectiveRating(): number | null {\n return this.EffectiveRating;\n }\n\n get EffectiveBand(): string | null {\n const r = this.EffectiveRating;\n return r === null ? null : this.BandFor(r);\n }\n\n /** @deprecated Use {@link EffectiveBand}. */\n get effectiveBand(): string | null {\n return this.EffectiveBand;\n }\n\n BandFor(n: number): 'low' | 'mid' | 'high' {\n if (n <= 3) return 'low';\n if (n <= 7) return 'mid';\n return 'high';\n }\n\n /** @deprecated Use {@link BandFor}. */\n bandFor(n: number): 'low' | 'mid' | 'high' {\n return this.BandFor(n);\n }\n\n IsFilled(n: number): boolean {\n const r = this.EffectiveRating;\n return r !== null && r >= n;\n }\n\n /** @deprecated Use {@link IsFilled}. */\n isFilled(n: number): boolean {\n return this.IsFilled(n);\n }\n\n SelectRating(n: number): void {\n this.SelectedRating = n;\n }\n\n /** @deprecated Use {@link SelectRating}. */\n selectRating(n: number): void {\n return this.SelectRating(n);\n }\n\n OnScaleMouseLeave(): void {\n this.HoveredRating = null;\n }\n\n /** @deprecated Use {@link OnScaleMouseLeave}. */\n onScaleMouseLeave(): void {\n return this.OnScaleMouseLeave();\n }\n\n OnPipBlur(): void {\n this.HoveredRating = null;\n }\n\n /** @deprecated Use {@link OnPipBlur}. */\n onPipBlur(): void {\n return this.OnPipBlur();\n }\n\n GetDescriptor(n: number): string {\n if (n <= 2) return 'Very Poor';\n if (n <= 4) return 'Needs Improvement';\n if (n <= 6) return 'Okay';\n if (n <= 8) return 'Good';\n return 'Excellent';\n }\n\n /** @deprecated Use {@link GetDescriptor}. */\n getDescriptor(n: number): string {\n return this.GetDescriptor(n);\n }\n\n GetRating(): number | null {\n return this.SelectedRating;\n }\n\n /** @deprecated Use {@link GetRating}. */\n getRating(): number | null {\n return this.GetRating();\n }\n\n GetComments(): string {\n return (this.Comments ?? '').trim();\n }\n\n /** @deprecated Use {@link GetComments}. */\n getComments(): string {\n return this.GetComments();\n }\n\n /** True if the consent requirement is met (not required, or required and checked). */\n IsConsentValid(): boolean {\n return !this.RequireConsent || this.ConsentChecked;\n }\n\n /** @deprecated Use {@link IsConsentValid}. */\n isConsentValid(): boolean {\n return this.IsConsentValid();\n }\n\n /** True only when the user *just* acknowledged consent in this dialog session. */\n WasConsentNewlyAcknowledged(): boolean {\n return this.RequireConsent && this.ConsentChecked;\n }\n\n /** @deprecated Use {@link WasConsentNewlyAcknowledged}. */\n wasConsentNewlyAcknowledged(): boolean {\n return this.WasConsentNewlyAcknowledged();\n }\n}\n"]}
|
|
@@ -10,23 +10,73 @@ export declare class ExportModalComponent {
|
|
|
10
10
|
private dialogService;
|
|
11
11
|
private toastService;
|
|
12
12
|
private _isVisible;
|
|
13
|
-
set
|
|
13
|
+
set IsVisible(value: boolean);
|
|
14
|
+
get IsVisible(): boolean;
|
|
15
|
+
/** @deprecated Use {@link IsVisible}. */
|
|
14
16
|
get isVisible(): boolean;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
/** @deprecated Use {@link IsVisible}. */
|
|
18
|
+
set isVisible(value: boolean);
|
|
19
|
+
Conversation?: MJConversationEntity;
|
|
20
|
+
/** @deprecated Use {@link Conversation}. */
|
|
21
|
+
set conversation(value: MJConversationEntity | undefined);
|
|
22
|
+
/** @deprecated Use {@link Conversation}. */
|
|
23
|
+
get conversation(): MJConversationEntity | undefined;
|
|
24
|
+
CurrentUser: UserInfo;
|
|
25
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
26
|
+
set currentUser(value: UserInfo);
|
|
27
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
28
|
+
get currentUser(): UserInfo;
|
|
17
29
|
/**
|
|
18
30
|
* Host-supplied export branding (theme tokens / logo / title). When set, the
|
|
19
31
|
* HTML format's "Include branding" checkbox defaults on and the branding is
|
|
20
32
|
* passed to {@link ExportService} on export. See `ExportBranding`.
|
|
21
33
|
*/
|
|
22
|
-
|
|
34
|
+
Branding: ExportBranding | null;
|
|
35
|
+
/** @deprecated Use {@link Branding}. */
|
|
36
|
+
set branding(value: ExportBranding | null);
|
|
37
|
+
/** @deprecated Use {@link Branding}. */
|
|
38
|
+
get branding(): ExportBranding | null;
|
|
39
|
+
Cancelled: EventEmitter<void>;
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated Use {@link Cancelled}.
|
|
42
|
+
*
|
|
43
|
+
* The same emitter under the old binding name, so a template still binding
|
|
44
|
+
* (cancelled) keeps working. Must stay AFTER Cancelled: class fields
|
|
45
|
+
* initialise in order, and the other way round this captures undefined.
|
|
46
|
+
*/
|
|
23
47
|
cancelled: EventEmitter<void>;
|
|
48
|
+
Exported: EventEmitter<void>;
|
|
49
|
+
/**
|
|
50
|
+
* @deprecated Use {@link Exported}.
|
|
51
|
+
*
|
|
52
|
+
* The same emitter under the old binding name, so a template still binding
|
|
53
|
+
* (exported) keeps working. Must stay AFTER Exported: class fields
|
|
54
|
+
* initialise in order, and the other way round this captures undefined.
|
|
55
|
+
*/
|
|
24
56
|
exported: EventEmitter<void>;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
57
|
+
SelectedFormat: ExportFormat | null;
|
|
58
|
+
/** @deprecated Use {@link SelectedFormat}. */
|
|
59
|
+
get selectedFormat(): ExportFormat | null;
|
|
60
|
+
/** @deprecated Use {@link SelectedFormat}. */
|
|
61
|
+
set selectedFormat(value: ExportFormat | null);
|
|
62
|
+
IsExporting: boolean;
|
|
63
|
+
/** @deprecated Use {@link IsExporting}. */
|
|
64
|
+
get isExporting(): boolean;
|
|
65
|
+
/** @deprecated Use {@link IsExporting}. */
|
|
66
|
+
set isExporting(value: boolean);
|
|
67
|
+
ErrorMessage: string;
|
|
68
|
+
/** @deprecated Use {@link ErrorMessage}. */
|
|
69
|
+
get errorMessage(): string;
|
|
70
|
+
/** @deprecated Use {@link ErrorMessage}. */
|
|
71
|
+
set errorMessage(value: string);
|
|
72
|
+
ExportOptions: ExportOptions;
|
|
73
|
+
/** @deprecated Use {@link ExportOptions}. */
|
|
74
|
+
get exportOptions(): ExportOptions;
|
|
75
|
+
/** @deprecated Use {@link ExportOptions}. */
|
|
76
|
+
set exportOptions(value: ExportOptions);
|
|
29
77
|
/** Format-aware hint under the "Include branding" checkbox. */
|
|
78
|
+
get BrandingHint(): string;
|
|
79
|
+
/** @deprecated Use {@link BrandingHint}. */
|
|
30
80
|
get brandingHint(): string;
|
|
31
81
|
/**
|
|
32
82
|
* The options actually handed to the service. `includeTheme` is the user's INTENT;
|
|
@@ -40,20 +90,44 @@ export declare class ExportModalComponent {
|
|
|
40
90
|
* format.
|
|
41
91
|
*/
|
|
42
92
|
private resolveExportOptions;
|
|
93
|
+
get ExportTitle(): string;
|
|
94
|
+
/** @deprecated Use {@link ExportTitle}. */
|
|
43
95
|
get exportTitle(): string;
|
|
96
|
+
get CanExport(): boolean;
|
|
97
|
+
/** @deprecated Use {@link CanExport}. */
|
|
44
98
|
get canExport(): boolean;
|
|
45
|
-
|
|
99
|
+
Formats: {
|
|
46
100
|
value: ExportFormat;
|
|
47
101
|
name: string;
|
|
48
102
|
description: string;
|
|
49
103
|
icon: string;
|
|
50
104
|
}[];
|
|
105
|
+
/** @deprecated Use {@link Formats}. */
|
|
106
|
+
get formats(): {
|
|
107
|
+
value: ExportFormat;
|
|
108
|
+
name: string;
|
|
109
|
+
description: string;
|
|
110
|
+
icon: string;
|
|
111
|
+
}[];
|
|
112
|
+
/** @deprecated Use {@link Formats}. */
|
|
113
|
+
set formats(value: {
|
|
114
|
+
value: ExportFormat;
|
|
115
|
+
name: string;
|
|
116
|
+
description: string;
|
|
117
|
+
icon: string;
|
|
118
|
+
}[]);
|
|
51
119
|
constructor(exportService: ExportService, dialogService: DialogService, toastService: ToastService);
|
|
120
|
+
SelectFormat(format: ExportFormat): void;
|
|
121
|
+
/** @deprecated Use {@link SelectFormat}. */
|
|
52
122
|
selectFormat(format: ExportFormat): void;
|
|
123
|
+
OnExport(): Promise<void>;
|
|
124
|
+
/** @deprecated Use {@link OnExport}. */
|
|
53
125
|
onExport(): Promise<void>;
|
|
126
|
+
OnCancel(): void;
|
|
127
|
+
/** @deprecated Use {@link OnCancel}. */
|
|
54
128
|
onCancel(): void;
|
|
55
129
|
private resetForm;
|
|
56
130
|
static ɵfac: i0.ɵɵFactoryDeclaration<ExportModalComponent, never>;
|
|
57
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ExportModalComponent, "mj-export-modal", never, { "isVisible": { "alias": "isVisible"; "required": false; }; "conversation": { "alias": "conversation"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "branding": { "alias": "branding"; "required": false; }; }, { "cancelled": "cancelled"; "exported": "exported"; }, never, never, false, never>;
|
|
131
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ExportModalComponent, "mj-export-modal", never, { "IsVisible": { "alias": "IsVisible"; "required": false; }; "isVisible": { "alias": "isVisible"; "required": false; }; "Conversation": { "alias": "Conversation"; "required": false; }; "conversation": { "alias": "conversation"; "required": false; }; "CurrentUser": { "alias": "CurrentUser"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "Branding": { "alias": "Branding"; "required": false; }; "branding": { "alias": "branding"; "required": false; }; }, { "Cancelled": "Cancelled"; "cancelled": "cancelled"; "Exported": "Exported"; "exported": "exported"; }, never, never, false, never>;
|
|
58
132
|
}
|
|
59
133
|
//# sourceMappingURL=export-modal.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-modal.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/export/export-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAiB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;;AAE5D,qBA6Ua,oBAAoB;
|
|
1
|
+
{"version":3,"file":"export-modal.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/export/export-modal.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
}] }); })();
|