@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":"conversation-streaming.service.js","sourceRoot":"","sources":["../../../src/lib/services/conversation-streaming.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAa,MAAM,eAAe,CAAC;AAEtD,OAAO,EACH,oBAAoB,GAMvB,MAAM,uCAAuC,CAAC;;;AAc/C,MAAM,OAAO,4BAA4B;IACrC,YAAY,UAAyC;QACjD,6EAA6E;IACjF,CAAC;IAED,IAAY,SAAS;QACjB,OAAO,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC;IACnD,CAAC;IAED,yFAAyF;IACzF,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;IAC5C,CAAC;IAEM,UAAU;QACb,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAEM,oBAAoB;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;IACjD,CAAC;IAEM,mBAAmB;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;IAChD,CAAC;IAEM,uBAAuB,CAC1B,oBAA4B,EAC5B,QAAiC;QAEjC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAEM,yBAAyB,CAC5B,oBAA4B,EAC5B,QAAkC;QAElC,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAEM,0BAA0B;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE,CAAC;IACvD,CAAC;IAEM,sBAAsB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC;IACnD,CAAC;IAEM,mBAAmB,CAAC,oBAA4B;QACnD,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;IACpE,CAAC;IAEM,qBAAqB,CAAC,oBAA4B;QACrD,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IAC/D,CAAC;IAEM,qBAAqB,CAAC,SAAiB;QAG1C,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACI,WAAW;QACd,wCAAwC;IAC5C,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation-streaming.service.js","sourceRoot":"","sources":["../../../src/lib/services/conversation-streaming.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAa,MAAM,eAAe,CAAC;AAEtD,OAAO,EACH,oBAAoB,GAMvB,MAAM,uCAAuC,CAAC;;;AAc/C,MAAM,OAAO,4BAA4B;IACrC,YAAY,UAAyC;QACjD,6EAA6E;IACjF,CAAC;IAED,IAAY,SAAS;QACjB,OAAO,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC;IACnD,CAAC;IAED,yFAAyF;IACzF,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;IAC5C,CAAC;IAED,iDAAiD;IACjD,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAEM,UAAU;QACb,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAEM,oBAAoB;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;IACjD,CAAC;IAED,oDAAoD;IAC7C,oBAAoB;QACvB,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACvC,CAAC;IAEM,mBAAmB;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;IAChD,CAAC;IAED,mDAAmD;IAC5C,mBAAmB;QACtB,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACtC,CAAC;IAEM,uBAAuB,CAC1B,oBAA4B,EAC5B,QAAiC;QAEjC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAED,uDAAuD;IAChD,uBAAuB,CAC1B,oBAA4B,EAC5B,QAAiC;QAEjC,OAAO,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;IAEM,yBAAyB,CAC5B,oBAA4B,EAC5B,QAAkC;QAElC,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAED,yDAAyD;IAClD,yBAAyB,CAC5B,oBAA4B,EAC5B,QAAkC;QAElC,OAAO,IAAI,CAAC,yBAAyB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC1E,CAAC;IAEM,0BAA0B;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE,CAAC;IACvD,CAAC;IAED,0DAA0D;IACnD,0BAA0B;QAC7B,OAAO,IAAI,CAAC,0BAA0B,EAAE,CAAC;IAC7C,CAAC;IAEM,sBAAsB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC;IACnD,CAAC;IAED,sDAAsD;IAC/C,sBAAsB;QACzB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACzC,CAAC;IAEM,mBAAmB,CAAC,oBAA4B;QACnD,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;IACpE,CAAC;IAED,mDAAmD;IAC5C,mBAAmB,CAAC,oBAA4B;QACnD,OAAO,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;IAC1D,CAAC;IAEM,qBAAqB,CAAC,oBAA4B;QACrD,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IAC/D,CAAC;IAED,qDAAqD;IAC9C,qBAAqB,CAAC,oBAA4B;QACrD,OAAO,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IAC5D,CAAC;IAEM,qBAAqB,CAAC,SAAiB;QAG1C,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,qDAAqD;IAC9C,qBAAqB,CAAC,SAAiB;QAG1C,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACI,WAAW;QACd,wCAAwC;IAC5C,CAAC;sHAhIQ,4BAA4B;gEAA5B,4BAA4B,WAA5B,4BAA4B,mBADf,MAAM;;iFACnB,4BAA4B;cADxC,UAAU;eAAC,EAAE,UAAU,EAAE,MAAM,EAAE","sourcesContent":["/**\n * @fileoverview Angular DI shim over the framework-agnostic `ConversationStreaming`\n * from `@memberjunction/conversations-runtime`.\n *\n * The PubSub subscription, message routing, completion replay, and reconnection\n * logic all moved into the runtime in PR 2a. This service is now a thin pass-\n * through. The runtime accesses the active-task tracker via the adapter\n * registered by `ConversationsRuntimeBootstrap`.\n *\n * **For new code:** prefer `ConversationsRuntime.Instance.Streaming` directly.\n */\n\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport {\n ConversationsRuntime,\n type CompletionEvent,\n type MessageProgressCallback,\n type MessageProgressMetadata,\n type MessageProgressUpdate,\n type StreamingConnectionStatus,\n} from '@memberjunction/conversations-runtime';\n\nimport { ConversationsRuntimeBootstrap } from './conversations-runtime-bootstrap.service';\n\n// Re-export the runtime's types so existing imports from this file continue to compile.\nexport type {\n CompletionEvent,\n MessageProgressCallback,\n MessageProgressMetadata,\n MessageProgressUpdate,\n StreamingConnectionStatus,\n};\n\n@Injectable({ providedIn: 'root' })\nexport class ConversationStreamingService implements OnDestroy {\n constructor(_bootstrap: ConversationsRuntimeBootstrap) {\n // Injecting the bootstrap forces adapter registration on first construction.\n }\n\n private get streaming() {\n return ConversationsRuntime.Instance.Streaming;\n }\n\n /** Pass-through to {@link ConversationsRuntime.Instance.Streaming.completionEvents$}. */\n public get CompletionEvents$(): Subject<CompletionEvent> {\n return this.streaming.completionEvents$;\n }\n\n /** @deprecated Use {@link CompletionEvents$}. */\n public get completionEvents$(): Subject<CompletionEvent> {\n return this.CompletionEvents$;\n }\n\n public initialize(): void {\n this.streaming.initialize();\n }\n\n public GetConnectionStatus$(): Observable<StreamingConnectionStatus> {\n return this.streaming.getConnectionStatus$();\n }\n\n /** @deprecated Use {@link GetConnectionStatus$}. */\n public getConnectionStatus$(): Observable<StreamingConnectionStatus> {\n return this.GetConnectionStatus$();\n }\n\n public GetConnectionStatus(): StreamingConnectionStatus {\n return this.streaming.getConnectionStatus();\n }\n\n /** @deprecated Use {@link GetConnectionStatus}. */\n public getConnectionStatus(): StreamingConnectionStatus {\n return this.GetConnectionStatus();\n }\n\n public RegisterMessageCallback(\n conversationDetailId: string,\n callback: MessageProgressCallback\n ): void {\n this.streaming.registerMessageCallback(conversationDetailId, callback);\n }\n\n /** @deprecated Use {@link RegisterMessageCallback}. */\n public registerMessageCallback(\n conversationDetailId: string,\n callback: MessageProgressCallback\n ): void {\n return this.RegisterMessageCallback(conversationDetailId, callback);\n }\n\n public UnregisterMessageCallback(\n conversationDetailId: string,\n callback?: MessageProgressCallback\n ): void {\n this.streaming.unregisterMessageCallback(conversationDetailId, callback);\n }\n\n /** @deprecated Use {@link UnregisterMessageCallback}. */\n public unregisterMessageCallback(\n conversationDetailId: string,\n callback?: MessageProgressCallback\n ): void {\n return this.UnregisterMessageCallback(conversationDetailId, callback);\n }\n\n public GetRegisteredCallbackCount(): number {\n return this.streaming.getRegisteredCallbackCount();\n }\n\n /** @deprecated Use {@link GetRegisteredCallbackCount}. */\n public getRegisteredCallbackCount(): number {\n return this.GetRegisteredCallbackCount();\n }\n\n public GetTrackedMessageCount(): number {\n return this.streaming.getTrackedMessageCount();\n }\n\n /** @deprecated Use {@link GetTrackedMessageCount}. */\n public getTrackedMessageCount(): number {\n return this.GetTrackedMessageCount();\n }\n\n public GetRecentCompletion(conversationDetailId: string): { agentRunId: string } | undefined {\n return this.streaming.getRecentCompletion(conversationDetailId);\n }\n\n /** @deprecated Use {@link GetRecentCompletion}. */\n public getRecentCompletion(conversationDetailId: string): { agentRunId: string } | undefined {\n return this.GetRecentCompletion(conversationDetailId);\n }\n\n public ClearRecentCompletion(conversationDetailId: string): void {\n this.streaming.clearRecentCompletion(conversationDetailId);\n }\n\n /** @deprecated Use {@link ClearRecentCompletion}. */\n public clearRecentCompletion(conversationDetailId: string): void {\n return this.ClearRecentCompletion(conversationDetailId);\n }\n\n public GetDiagnosticSnapshot(messageId: string): ReturnType<\n typeof ConversationsRuntime.Instance.Streaming.getDiagnosticSnapshot\n > {\n return this.streaming.getDiagnosticSnapshot(messageId);\n }\n\n /** @deprecated Use {@link GetDiagnosticSnapshot}. */\n public getDiagnosticSnapshot(messageId: string): ReturnType<\n typeof ConversationsRuntime.Instance.Streaming.getDiagnosticSnapshot\n > {\n return this.GetDiagnosticSnapshot(messageId);\n }\n\n /**\n * Angular OnDestroy hook. We do NOT call the runtime's Streaming.Dispose()\n * here — that would tear down a shared singleton on a per-injector destroy,\n * which could affect other consumers. The runtime is process-scoped; its\n * lifecycle ends with the process, not with any Angular injector.\n */\n public ngOnDestroy(): void {\n // intentionally empty — see jsdoc above\n }\n}\n"]}
|
|
@@ -27,6 +27,8 @@ export declare class DataCacheService {
|
|
|
27
27
|
* @param currentUser User context for loading
|
|
28
28
|
* @returns The cached or loaded MJConversationEntity, or null if not found
|
|
29
29
|
*/
|
|
30
|
+
GetConversation(id: string, currentUser: UserInfo): Promise<MJConversationEntity | null>;
|
|
31
|
+
/** @deprecated Use {@link GetConversation}. */
|
|
30
32
|
getConversation(id: string, currentUser: UserInfo): Promise<MJConversationEntity | null>;
|
|
31
33
|
/**
|
|
32
34
|
* Create a new MJConversationEntity and automatically cache it
|
|
@@ -34,16 +36,22 @@ export declare class DataCacheService {
|
|
|
34
36
|
* @param currentUser User context
|
|
35
37
|
* @returns New MJConversationEntity instance (already cached)
|
|
36
38
|
*/
|
|
39
|
+
CreateConversation(currentUser: UserInfo): Promise<MJConversationEntity>;
|
|
40
|
+
/** @deprecated Use {@link CreateConversation}. */
|
|
37
41
|
createConversation(currentUser: UserInfo): Promise<MJConversationEntity>;
|
|
38
42
|
/**
|
|
39
43
|
* Remove a MJConversationEntity from the cache
|
|
40
44
|
* @param id The conversation ID to remove
|
|
41
45
|
*/
|
|
46
|
+
RemoveConversation(id: string): void;
|
|
47
|
+
/** @deprecated Use {@link RemoveConversation}. */
|
|
42
48
|
removeConversation(id: string): void;
|
|
43
49
|
/**
|
|
44
50
|
* Get all cached MJConversationEntity objects (no DB call)
|
|
45
51
|
* @returns Array of cached conversations
|
|
46
52
|
*/
|
|
53
|
+
GetCachedConversations(): MJConversationEntity[];
|
|
54
|
+
/** @deprecated Use {@link GetCachedConversations}. */
|
|
47
55
|
getCachedConversations(): MJConversationEntity[];
|
|
48
56
|
/**
|
|
49
57
|
* Get a MJConversationDetailEntity by ID from cache, or load it if not cached
|
|
@@ -51,6 +59,8 @@ export declare class DataCacheService {
|
|
|
51
59
|
* @param currentUser User context for loading
|
|
52
60
|
* @returns The cached or loaded MJConversationDetailEntity, or null if not found
|
|
53
61
|
*/
|
|
62
|
+
GetConversationDetail(id: string, currentUser: UserInfo): Promise<MJConversationDetailEntity | null>;
|
|
63
|
+
/** @deprecated Use {@link GetConversationDetail}. */
|
|
54
64
|
getConversationDetail(id: string, currentUser: UserInfo): Promise<MJConversationDetailEntity | null>;
|
|
55
65
|
/**
|
|
56
66
|
* Create a new MJConversationDetailEntity and automatically cache it
|
|
@@ -58,6 +68,8 @@ export declare class DataCacheService {
|
|
|
58
68
|
* @param currentUser User context
|
|
59
69
|
* @returns New MJConversationDetailEntity instance (already cached)
|
|
60
70
|
*/
|
|
71
|
+
CreateConversationDetail(currentUser: UserInfo): Promise<MJConversationDetailEntity>;
|
|
72
|
+
/** @deprecated Use {@link CreateConversationDetail}. */
|
|
61
73
|
createConversationDetail(currentUser: UserInfo): Promise<MJConversationDetailEntity>;
|
|
62
74
|
/**
|
|
63
75
|
* Load all ConversationDetail entities for a conversation and cache them
|
|
@@ -66,44 +78,63 @@ export declare class DataCacheService {
|
|
|
66
78
|
* @param currentUser User context
|
|
67
79
|
* @returns Array of MJConversationDetailEntity objects
|
|
68
80
|
*/
|
|
81
|
+
LoadConversationDetails(conversationId: string, currentUser: UserInfo): Promise<MJConversationDetailEntity[]>;
|
|
82
|
+
/** @deprecated Use {@link LoadConversationDetails}. */
|
|
69
83
|
loadConversationDetails(conversationId: string, currentUser: UserInfo): Promise<MJConversationDetailEntity[]>;
|
|
70
84
|
/**
|
|
71
85
|
* Get all cached ConversationDetail entities for a conversation (no DB call)
|
|
72
86
|
* @param conversationId The conversation ID
|
|
73
87
|
* @returns Array of cached conversation details
|
|
74
88
|
*/
|
|
89
|
+
GetCachedConversationDetails(conversationId: string): MJConversationDetailEntity[];
|
|
90
|
+
/** @deprecated Use {@link GetCachedConversationDetails}. */
|
|
75
91
|
getCachedConversationDetails(conversationId: string): MJConversationDetailEntity[];
|
|
76
92
|
/**
|
|
77
93
|
* Remove a MJConversationDetailEntity from the cache
|
|
78
94
|
* @param id The conversation detail ID to remove
|
|
79
95
|
*/
|
|
96
|
+
RemoveConversationDetail(id: string): void;
|
|
97
|
+
/** @deprecated Use {@link RemoveConversationDetail}. */
|
|
80
98
|
removeConversationDetail(id: string): void;
|
|
81
99
|
/**
|
|
82
100
|
* Refresh entity data by clearing cached entities of a specific type
|
|
83
101
|
* This forces a reload from the database on next access
|
|
84
102
|
* @param entityName The entity name to refresh (e.g., 'Conversations', 'MJ: Conversation Details')
|
|
85
103
|
*/
|
|
104
|
+
RefreshEntity(entityName: string): Promise<void>;
|
|
105
|
+
/** @deprecated Use {@link RefreshEntity}. */
|
|
86
106
|
refreshEntity(entityName: string): Promise<void>;
|
|
87
107
|
/**
|
|
88
108
|
* Refresh a specific cache by name
|
|
89
109
|
* This method can be extended to handle different cache types
|
|
90
110
|
* @param cacheName The cache name ('Core', 'AI', 'Actions')
|
|
91
111
|
*/
|
|
112
|
+
RefreshCache(cacheName: 'Core' | 'AI' | 'Actions'): Promise<void>;
|
|
113
|
+
/** @deprecated Use {@link RefreshCache}. */
|
|
92
114
|
refreshCache(cacheName: 'Core' | 'AI' | 'Actions'): Promise<void>;
|
|
93
115
|
/**
|
|
94
116
|
* Clear all cached entities
|
|
95
117
|
* Call when switching environments, users, or when needed
|
|
96
118
|
*/
|
|
119
|
+
Clear(): void;
|
|
120
|
+
/** @deprecated Use {@link Clear}. */
|
|
97
121
|
clear(): void;
|
|
98
122
|
/**
|
|
99
123
|
* Clear cached entities for a specific conversation
|
|
100
124
|
* @param conversationId The conversation ID
|
|
101
125
|
*/
|
|
126
|
+
ClearConversation(conversationId: string): void;
|
|
127
|
+
/** @deprecated Use {@link ClearConversation}. */
|
|
102
128
|
clearConversation(conversationId: string): void;
|
|
103
129
|
/**
|
|
104
130
|
* Get cache statistics for debugging
|
|
105
131
|
* @returns Object with cache sizes
|
|
106
132
|
*/
|
|
133
|
+
GetStats(): {
|
|
134
|
+
conversations: number;
|
|
135
|
+
conversationDetails: number;
|
|
136
|
+
};
|
|
137
|
+
/** @deprecated Use {@link GetStats}. */
|
|
107
138
|
getStats(): {
|
|
108
139
|
conversations: number;
|
|
109
140
|
conversationDetails: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-cache.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/data-cache.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAY,QAAQ,EAAuB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;;AAGlG;;;;;;;;;GASG;AACH,qBAGa,gBAAgB;IAE3B,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,mBAAmB,CAAoC;IAE/D,OAAO,CAAC,SAAS,CAAkC;;IAInD;;OAEG;IACH,IAAW,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAElD;IAED,IAAW,QAAQ,IAAI,iBAAiB,CAEvC;IAMD;;;;;OAKG;IACG,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAqB9F;;;;;OAKG;IACG,kBAAkB,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAY9E;;;OAGG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIpC;;;OAGG;IACH,sBAAsB,IAAI,oBAAoB,EAAE;IAQhD;;;;;OAKG;IACG,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC;IAqB1G;;;;;OAKG;IACG,wBAAwB,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAa1F;;;;;;OAMG;IACG,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAwCnH;;;;OAIG;IACH,4BAA4B,CAAC,cAAc,EAAE,MAAM,GAAG,0BAA0B,EAAE;IAIlF;;;OAGG;IACH,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ1C;;;;OAIG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatD;;;;OAIG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvE;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAK/C;;;OAGG;IACH,QAAQ,IAAI;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE;
|
|
1
|
+
{"version":3,"file":"data-cache.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/data-cache.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ export class DataCacheService {
|
|
|
36
36
|
* @param currentUser User context for loading
|
|
37
37
|
* @returns The cached or loaded MJConversationEntity, or null if not found
|
|
38
38
|
*/
|
|
39
|
-
async
|
|
39
|
+
async GetConversation(id, currentUser) {
|
|
40
40
|
// Check cache first
|
|
41
41
|
const cached = this.conversations.find(c => UUIDsEqual(c.ID, id));
|
|
42
42
|
if (cached) {
|
|
@@ -53,13 +53,17 @@ export class DataCacheService {
|
|
|
53
53
|
}
|
|
54
54
|
return null;
|
|
55
55
|
}
|
|
56
|
+
/** @deprecated Use {@link GetConversation}. */
|
|
57
|
+
async getConversation(id, currentUser) {
|
|
58
|
+
return this.GetConversation(id, currentUser);
|
|
59
|
+
}
|
|
56
60
|
/**
|
|
57
61
|
* Create a new MJConversationEntity and automatically cache it
|
|
58
62
|
* The cache is the ONLY place GetEntityObject() should be called
|
|
59
63
|
* @param currentUser User context
|
|
60
64
|
* @returns New MJConversationEntity instance (already cached)
|
|
61
65
|
*/
|
|
62
|
-
async
|
|
66
|
+
async CreateConversation(currentUser) {
|
|
63
67
|
const md = this.Provider;
|
|
64
68
|
const conversation = await md.GetEntityObject('MJ: Conversations', currentUser);
|
|
65
69
|
// Automatically add to cache - user code doesn't need to do anything
|
|
@@ -68,20 +72,32 @@ export class DataCacheService {
|
|
|
68
72
|
this.conversations.push(conversation);
|
|
69
73
|
return conversation;
|
|
70
74
|
}
|
|
75
|
+
/** @deprecated Use {@link CreateConversation}. */
|
|
76
|
+
async createConversation(currentUser) {
|
|
77
|
+
return this.CreateConversation(currentUser);
|
|
78
|
+
}
|
|
71
79
|
/**
|
|
72
80
|
* Remove a MJConversationEntity from the cache
|
|
73
81
|
* @param id The conversation ID to remove
|
|
74
82
|
*/
|
|
75
|
-
|
|
83
|
+
RemoveConversation(id) {
|
|
76
84
|
this.conversations = this.conversations.filter(c => !UUIDsEqual(c.ID, id));
|
|
77
85
|
}
|
|
86
|
+
/** @deprecated Use {@link RemoveConversation}. */
|
|
87
|
+
removeConversation(id) {
|
|
88
|
+
return this.RemoveConversation(id);
|
|
89
|
+
}
|
|
78
90
|
/**
|
|
79
91
|
* Get all cached MJConversationEntity objects (no DB call)
|
|
80
92
|
* @returns Array of cached conversations
|
|
81
93
|
*/
|
|
82
|
-
|
|
94
|
+
GetCachedConversations() {
|
|
83
95
|
return this.conversations;
|
|
84
96
|
}
|
|
97
|
+
/** @deprecated Use {@link GetCachedConversations}. */
|
|
98
|
+
getCachedConversations() {
|
|
99
|
+
return this.GetCachedConversations();
|
|
100
|
+
}
|
|
85
101
|
// =============================================================================
|
|
86
102
|
// MJConversationDetailEntity Methods
|
|
87
103
|
// =============================================================================
|
|
@@ -91,7 +107,7 @@ export class DataCacheService {
|
|
|
91
107
|
* @param currentUser User context for loading
|
|
92
108
|
* @returns The cached or loaded MJConversationDetailEntity, or null if not found
|
|
93
109
|
*/
|
|
94
|
-
async
|
|
110
|
+
async GetConversationDetail(id, currentUser) {
|
|
95
111
|
// Check cache first
|
|
96
112
|
const cached = this.conversationDetails.find(d => UUIDsEqual(d.ID, id));
|
|
97
113
|
if (cached) {
|
|
@@ -108,13 +124,17 @@ export class DataCacheService {
|
|
|
108
124
|
}
|
|
109
125
|
return null;
|
|
110
126
|
}
|
|
127
|
+
/** @deprecated Use {@link GetConversationDetail}. */
|
|
128
|
+
async getConversationDetail(id, currentUser) {
|
|
129
|
+
return this.GetConversationDetail(id, currentUser);
|
|
130
|
+
}
|
|
111
131
|
/**
|
|
112
132
|
* Create a new MJConversationDetailEntity and automatically cache it
|
|
113
133
|
* The cache is the ONLY place GetEntityObject() should be called
|
|
114
134
|
* @param currentUser User context
|
|
115
135
|
* @returns New MJConversationDetailEntity instance (already cached)
|
|
116
136
|
*/
|
|
117
|
-
async
|
|
137
|
+
async CreateConversationDetail(currentUser) {
|
|
118
138
|
const md = this.Provider;
|
|
119
139
|
const detail = await md.GetEntityObject('MJ: Conversation Details', currentUser);
|
|
120
140
|
// Automatically add to cache - user code doesn't need to do anything
|
|
@@ -123,6 +143,10 @@ export class DataCacheService {
|
|
|
123
143
|
this.conversationDetails.push(detail);
|
|
124
144
|
return detail;
|
|
125
145
|
}
|
|
146
|
+
/** @deprecated Use {@link CreateConversationDetail}. */
|
|
147
|
+
async createConversationDetail(currentUser) {
|
|
148
|
+
return this.CreateConversationDetail(currentUser);
|
|
149
|
+
}
|
|
126
150
|
/**
|
|
127
151
|
* Load all ConversationDetail entities for a conversation and cache them
|
|
128
152
|
* Used when loading a conversation's message history
|
|
@@ -130,7 +154,7 @@ export class DataCacheService {
|
|
|
130
154
|
* @param currentUser User context
|
|
131
155
|
* @returns Array of MJConversationDetailEntity objects
|
|
132
156
|
*/
|
|
133
|
-
async
|
|
157
|
+
async LoadConversationDetails(conversationId, currentUser) {
|
|
134
158
|
const timestamp = new Date().toISOString();
|
|
135
159
|
console.log(`[${timestamp}] 💾 DataCacheService.loadConversationDetails - Loading messages for conversation ${conversationId}`);
|
|
136
160
|
const rv = RunView.FromMetadataProvider(this.Provider);
|
|
@@ -161,21 +185,33 @@ export class DataCacheService {
|
|
|
161
185
|
console.log(`[${timestamp}] 💾 DataCacheService - Failed to load messages for conversation ${conversationId}`);
|
|
162
186
|
return [];
|
|
163
187
|
}
|
|
188
|
+
/** @deprecated Use {@link LoadConversationDetails}. */
|
|
189
|
+
async loadConversationDetails(conversationId, currentUser) {
|
|
190
|
+
return this.LoadConversationDetails(conversationId, currentUser);
|
|
191
|
+
}
|
|
164
192
|
/**
|
|
165
193
|
* Get all cached ConversationDetail entities for a conversation (no DB call)
|
|
166
194
|
* @param conversationId The conversation ID
|
|
167
195
|
* @returns Array of cached conversation details
|
|
168
196
|
*/
|
|
169
|
-
|
|
197
|
+
GetCachedConversationDetails(conversationId) {
|
|
170
198
|
return this.conversationDetails.filter(d => UUIDsEqual(d.ConversationID, conversationId));
|
|
171
199
|
}
|
|
200
|
+
/** @deprecated Use {@link GetCachedConversationDetails}. */
|
|
201
|
+
getCachedConversationDetails(conversationId) {
|
|
202
|
+
return this.GetCachedConversationDetails(conversationId);
|
|
203
|
+
}
|
|
172
204
|
/**
|
|
173
205
|
* Remove a MJConversationDetailEntity from the cache
|
|
174
206
|
* @param id The conversation detail ID to remove
|
|
175
207
|
*/
|
|
176
|
-
|
|
208
|
+
RemoveConversationDetail(id) {
|
|
177
209
|
this.conversationDetails = this.conversationDetails.filter(d => !UUIDsEqual(d.ID, id));
|
|
178
210
|
}
|
|
211
|
+
/** @deprecated Use {@link RemoveConversationDetail}. */
|
|
212
|
+
removeConversationDetail(id) {
|
|
213
|
+
return this.RemoveConversationDetail(id);
|
|
214
|
+
}
|
|
179
215
|
// =============================================================================
|
|
180
216
|
// Cache Management
|
|
181
217
|
// =============================================================================
|
|
@@ -184,7 +220,7 @@ export class DataCacheService {
|
|
|
184
220
|
* This forces a reload from the database on next access
|
|
185
221
|
* @param entityName The entity name to refresh (e.g., 'Conversations', 'MJ: Conversation Details')
|
|
186
222
|
*/
|
|
187
|
-
async
|
|
223
|
+
async RefreshEntity(entityName) {
|
|
188
224
|
switch (entityName) {
|
|
189
225
|
case 'Conversations':
|
|
190
226
|
this.conversations = [];
|
|
@@ -196,16 +232,20 @@ export class DataCacheService {
|
|
|
196
232
|
console.warn('Unknown entity name for refresh:', entityName);
|
|
197
233
|
}
|
|
198
234
|
}
|
|
235
|
+
/** @deprecated Use {@link RefreshEntity}. */
|
|
236
|
+
async refreshEntity(entityName) {
|
|
237
|
+
return this.RefreshEntity(entityName);
|
|
238
|
+
}
|
|
199
239
|
/**
|
|
200
240
|
* Refresh a specific cache by name
|
|
201
241
|
* This method can be extended to handle different cache types
|
|
202
242
|
* @param cacheName The cache name ('Core', 'AI', 'Actions')
|
|
203
243
|
*/
|
|
204
|
-
async
|
|
244
|
+
async RefreshCache(cacheName) {
|
|
205
245
|
switch (cacheName) {
|
|
206
246
|
case 'Core':
|
|
207
247
|
// Clear core entity caches
|
|
208
|
-
this.
|
|
248
|
+
this.Clear();
|
|
209
249
|
break;
|
|
210
250
|
case 'AI':
|
|
211
251
|
// AI-specific cache refresh would go here
|
|
@@ -220,32 +260,48 @@ export class DataCacheService {
|
|
|
220
260
|
console.warn('Unknown cache name for refresh:', cacheName);
|
|
221
261
|
}
|
|
222
262
|
}
|
|
263
|
+
/** @deprecated Use {@link RefreshCache}. */
|
|
264
|
+
async refreshCache(cacheName) {
|
|
265
|
+
return this.RefreshCache(cacheName);
|
|
266
|
+
}
|
|
223
267
|
/**
|
|
224
268
|
* Clear all cached entities
|
|
225
269
|
* Call when switching environments, users, or when needed
|
|
226
270
|
*/
|
|
227
|
-
|
|
271
|
+
Clear() {
|
|
228
272
|
this.conversations = [];
|
|
229
273
|
this.conversationDetails = [];
|
|
230
274
|
}
|
|
275
|
+
/** @deprecated Use {@link Clear}. */
|
|
276
|
+
clear() {
|
|
277
|
+
return this.Clear();
|
|
278
|
+
}
|
|
231
279
|
/**
|
|
232
280
|
* Clear cached entities for a specific conversation
|
|
233
281
|
* @param conversationId The conversation ID
|
|
234
282
|
*/
|
|
235
|
-
|
|
283
|
+
ClearConversation(conversationId) {
|
|
236
284
|
this.conversations = this.conversations.filter(c => !UUIDsEqual(c.ID, conversationId));
|
|
237
285
|
this.conversationDetails = this.conversationDetails.filter(d => !UUIDsEqual(d.ConversationID, conversationId));
|
|
238
286
|
}
|
|
287
|
+
/** @deprecated Use {@link ClearConversation}. */
|
|
288
|
+
clearConversation(conversationId) {
|
|
289
|
+
return this.ClearConversation(conversationId);
|
|
290
|
+
}
|
|
239
291
|
/**
|
|
240
292
|
* Get cache statistics for debugging
|
|
241
293
|
* @returns Object with cache sizes
|
|
242
294
|
*/
|
|
243
|
-
|
|
295
|
+
GetStats() {
|
|
244
296
|
return {
|
|
245
297
|
conversations: this.conversations.length,
|
|
246
298
|
conversationDetails: this.conversationDetails.length
|
|
247
299
|
};
|
|
248
300
|
}
|
|
301
|
+
/** @deprecated Use {@link GetStats}. */
|
|
302
|
+
getStats() {
|
|
303
|
+
return this.GetStats();
|
|
304
|
+
}
|
|
249
305
|
static ɵfac = function DataCacheService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DataCacheService)(); };
|
|
250
306
|
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DataCacheService, factory: DataCacheService.ɵfac, providedIn: 'root' });
|
|
251
307
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-cache.service.js","sourceRoot":"","sources":["../../../src/lib/services/data-cache.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { MJConversationEntity, MJConversationDetailEntity } from '@memberjunction/core-entities';\nimport { Metadata, UserInfo, BaseEntity, RunView, IMetadataProvider } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/**\n * Global singleton cache for conversation-related entities.\n * Maintains single instances of entities to prevent race conditions and ensure\n * all components see the same object state.\n *\n * Pattern: Instead of creating new entity instances with GetEntityObject() everywhere,\n * request entities from this cache. The cache returns the same instance each time,\n * so when one component updates entity.Status = 'Complete', all other components\n * see that change immediately without needing to reload from the database.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DataCacheService {\n // Separate arrays for each entity type\n private conversations: MJConversationEntity[] = [];\n private conversationDetails: MJConversationDetailEntity[] = [];\n\n private _provider: IMetadataProvider | null = null;\n\n constructor() {}\n\n /**\n * Set the metadata provider this service should use. When unset, falls back to Metadata.Provider.\n */\n public set Provider(value: IMetadataProvider | null) {\n this._provider = value;\n }\n\n public get Provider(): IMetadataProvider {\n return this._provider ?? Metadata.Provider;\n }\n\n // =============================================================================\n // MJConversationEntity Methods\n // =============================================================================\n\n /**\n * Get a MJConversationEntity by ID from cache, or load it if not cached\n * @param id The conversation ID\n * @param currentUser User context for loading\n * @returns The cached or loaded MJConversationEntity, or null if not found\n */\n async getConversation(id: string, currentUser: UserInfo): Promise<MJConversationEntity | null> {\n // Check cache first\n const cached = this.conversations.find(c => UUIDsEqual(c.ID, id));\n if (cached) {\n return cached;\n }\n\n // Not in cache - load from DB\n const md = this.Provider;\n const conversation = await md.GetEntityObject<MJConversationEntity>('MJ: Conversations', currentUser);\n const loaded = await conversation.Load(id);\n\n if (loaded) {\n // Add to cache\n this.conversations.push(conversation);\n return conversation;\n }\n\n return null;\n }\n\n /**\n * Create a new MJConversationEntity and automatically cache it\n * The cache is the ONLY place GetEntityObject() should be called\n * @param currentUser User context\n * @returns New MJConversationEntity instance (already cached)\n */\n async createConversation(currentUser: UserInfo): Promise<MJConversationEntity> {\n const md = this.Provider;\n const conversation = await md.GetEntityObject<MJConversationEntity>('MJ: Conversations', currentUser);\n\n // Automatically add to cache - user code doesn't need to do anything\n // Note: Conversation has no ID yet (not saved), so we can't deduplicate\n // After Save(), the ID will be populated and future getConversation() calls will find it\n this.conversations.push(conversation);\n\n return conversation;\n }\n\n /**\n * Remove a MJConversationEntity from the cache\n * @param id The conversation ID to remove\n */\n removeConversation(id: string): void {\n this.conversations = this.conversations.filter(c => !UUIDsEqual(c.ID, id));\n }\n\n /**\n * Get all cached MJConversationEntity objects (no DB call)\n * @returns Array of cached conversations\n */\n getCachedConversations(): MJConversationEntity[] {\n return this.conversations;\n }\n\n // =============================================================================\n // MJConversationDetailEntity Methods\n // =============================================================================\n\n /**\n * Get a MJConversationDetailEntity by ID from cache, or load it if not cached\n * @param id The conversation detail ID\n * @param currentUser User context for loading\n * @returns The cached or loaded MJConversationDetailEntity, or null if not found\n */\n async getConversationDetail(id: string, currentUser: UserInfo): Promise<MJConversationDetailEntity | null> {\n // Check cache first\n const cached = this.conversationDetails.find(d => UUIDsEqual(d.ID, id));\n if (cached) {\n return cached;\n }\n\n // Not in cache - load from DB\n const md = this.Provider;\n const detail = await md.GetEntityObject<MJConversationDetailEntity>('MJ: Conversation Details', currentUser);\n const loaded = await detail.Load(id);\n\n if (loaded) {\n // Add to cache\n this.conversationDetails.push(detail);\n return detail;\n }\n\n return null;\n }\n\n /**\n * Create a new MJConversationDetailEntity and automatically cache it\n * The cache is the ONLY place GetEntityObject() should be called\n * @param currentUser User context\n * @returns New MJConversationDetailEntity instance (already cached)\n */\n async createConversationDetail(currentUser: UserInfo): Promise<MJConversationDetailEntity> {\n const md = this.Provider;\n const detail = await md.GetEntityObject<MJConversationDetailEntity>('MJ: Conversation Details', currentUser);\n\n // Automatically add to cache - user code doesn't need to do anything\n // Note: Detail has no ID yet (not saved), so we can't deduplicate\n // After Save(), the ID will be populated and future getConversationDetail() calls will find it\n\n this.conversationDetails.push(detail);\n\n return detail;\n }\n\n /**\n * Load all ConversationDetail entities for a conversation and cache them\n * Used when loading a conversation's message history\n * @param conversationId The conversation ID\n * @param currentUser User context\n * @returns Array of MJConversationDetailEntity objects\n */\n async loadConversationDetails(conversationId: string, currentUser: UserInfo): Promise<MJConversationDetailEntity[]> {\n const timestamp = new Date().toISOString();\n console.log(`[${timestamp}] 💾 DataCacheService.loadConversationDetails - Loading messages for conversation ${conversationId}`);\n\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n console.log(`[${timestamp}] 💾 DataCacheService - Executing RunView for Conversation Details`);\n const result = await rv.RunView<MJConversationDetailEntity>(\n {\n EntityName: 'MJ: Conversation Details',\n ExtraFilter: `ConversationID='${conversationId}'`,\n OrderBy: '__mj_CreatedAt ASC',\n ResultType: 'entity_object'\n },\n currentUser\n );\n\n if (result.Success) {\n const details = result.Results || [];\n console.log(`[${timestamp}] 💾 DataCacheService - Loaded ${details.length} message(s) for conversation ${conversationId}`);\n\n // Add all to cache (avoid duplicates by checking ID)\n for (const detail of details) {\n const existingIndex = this.conversationDetails.findIndex(d => UUIDsEqual(d.ID, detail.ID));\n if (existingIndex >= 0) {\n // Replace existing (ensures we keep the same object reference)\n this.conversationDetails[existingIndex] = detail;\n } else {\n // Add new\n this.conversationDetails.push(detail);\n }\n }\n\n return details;\n }\n\n console.log(`[${timestamp}] 💾 DataCacheService - Failed to load messages for conversation ${conversationId}`);\n return [];\n }\n\n /**\n * Get all cached ConversationDetail entities for a conversation (no DB call)\n * @param conversationId The conversation ID\n * @returns Array of cached conversation details\n */\n getCachedConversationDetails(conversationId: string): MJConversationDetailEntity[] {\n return this.conversationDetails.filter(d => UUIDsEqual(d.ConversationID, conversationId));\n }\n\n /**\n * Remove a MJConversationDetailEntity from the cache\n * @param id The conversation detail ID to remove\n */\n removeConversationDetail(id: string): void {\n this.conversationDetails = this.conversationDetails.filter(d => !UUIDsEqual(d.ID, id));\n }\n\n // =============================================================================\n // Cache Management\n // =============================================================================\n\n /**\n * Refresh entity data by clearing cached entities of a specific type\n * This forces a reload from the database on next access\n * @param entityName The entity name to refresh (e.g., 'Conversations', 'MJ: Conversation Details')\n */\n async refreshEntity(entityName: string): Promise<void> {\n switch (entityName) {\n case 'Conversations':\n this.conversations = [];\n break;\n case 'MJ: Conversation Details':\n this.conversationDetails = [];\n break;\n default:\n console.warn('Unknown entity name for refresh:', entityName);\n }\n }\n\n /**\n * Refresh a specific cache by name\n * This method can be extended to handle different cache types\n * @param cacheName The cache name ('Core', 'AI', 'Actions')\n */\n async refreshCache(cacheName: 'Core' | 'AI' | 'Actions'): Promise<void> {\n switch (cacheName) {\n case 'Core':\n // Clear core entity caches\n this.clear();\n break;\n case 'AI':\n // AI-specific cache refresh would go here\n // For now, just log it\n console.log('AI cache refresh requested (not yet implemented)');\n break;\n case 'Actions':\n // Actions-specific cache refresh would go here\n console.log('Actions cache refresh requested (not yet implemented)');\n break;\n default:\n console.warn('Unknown cache name for refresh:', cacheName);\n }\n }\n\n /**\n * Clear all cached entities\n * Call when switching environments, users, or when needed\n */\n clear(): void {\n this.conversations = [];\n this.conversationDetails = [];\n }\n\n /**\n * Clear cached entities for a specific conversation\n * @param conversationId The conversation ID\n */\n clearConversation(conversationId: string): void {\n this.conversations = this.conversations.filter(c => !UUIDsEqual(c.ID, conversationId));\n this.conversationDetails = this.conversationDetails.filter(d => !UUIDsEqual(d.ConversationID, conversationId));\n }\n\n /**\n * Get cache statistics for debugging\n * @returns Object with cache sizes\n */\n getStats(): { conversations: number; conversationDetails: number } {\n return {\n conversations: this.conversations.length,\n conversationDetails: this.conversationDetails.length\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"data-cache.service.js","sourceRoot":"","sources":["../../../src/lib/services/data-cache.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { MJConversationEntity, MJConversationDetailEntity } from '@memberjunction/core-entities';\nimport { Metadata, UserInfo, BaseEntity, RunView, IMetadataProvider } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/**\n * Global singleton cache for conversation-related entities.\n * Maintains single instances of entities to prevent race conditions and ensure\n * all components see the same object state.\n *\n * Pattern: Instead of creating new entity instances with GetEntityObject() everywhere,\n * request entities from this cache. The cache returns the same instance each time,\n * so when one component updates entity.Status = 'Complete', all other components\n * see that change immediately without needing to reload from the database.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DataCacheService {\n // Separate arrays for each entity type\n private conversations: MJConversationEntity[] = [];\n private conversationDetails: MJConversationDetailEntity[] = [];\n\n private _provider: IMetadataProvider | null = null;\n\n constructor() {}\n\n /**\n * Set the metadata provider this service should use. When unset, falls back to Metadata.Provider.\n */\n public set Provider(value: IMetadataProvider | null) {\n this._provider = value;\n }\n\n public get Provider(): IMetadataProvider {\n return this._provider ?? Metadata.Provider;\n }\n\n // =============================================================================\n // MJConversationEntity Methods\n // =============================================================================\n\n /**\n * Get a MJConversationEntity by ID from cache, or load it if not cached\n * @param id The conversation ID\n * @param currentUser User context for loading\n * @returns The cached or loaded MJConversationEntity, or null if not found\n */\n async GetConversation(id: string, currentUser: UserInfo): Promise<MJConversationEntity | null> {\n // Check cache first\n const cached = this.conversations.find(c => UUIDsEqual(c.ID, id));\n if (cached) {\n return cached;\n }\n\n // Not in cache - load from DB\n const md = this.Provider;\n const conversation = await md.GetEntityObject<MJConversationEntity>('MJ: Conversations', currentUser);\n const loaded = await conversation.Load(id);\n\n if (loaded) {\n // Add to cache\n this.conversations.push(conversation);\n return conversation;\n }\n\n return null;\n }\n\n /** @deprecated Use {@link GetConversation}. */\n async getConversation(id: string, currentUser: UserInfo): Promise<MJConversationEntity | null> {\n return this.GetConversation(id, currentUser);\n }\n\n /**\n * Create a new MJConversationEntity and automatically cache it\n * The cache is the ONLY place GetEntityObject() should be called\n * @param currentUser User context\n * @returns New MJConversationEntity instance (already cached)\n */\n async CreateConversation(currentUser: UserInfo): Promise<MJConversationEntity> {\n const md = this.Provider;\n const conversation = await md.GetEntityObject<MJConversationEntity>('MJ: Conversations', currentUser);\n\n // Automatically add to cache - user code doesn't need to do anything\n // Note: Conversation has no ID yet (not saved), so we can't deduplicate\n // After Save(), the ID will be populated and future getConversation() calls will find it\n this.conversations.push(conversation);\n\n return conversation;\n }\n\n /** @deprecated Use {@link CreateConversation}. */\n async createConversation(currentUser: UserInfo): Promise<MJConversationEntity> {\n return this.CreateConversation(currentUser);\n }\n\n /**\n * Remove a MJConversationEntity from the cache\n * @param id The conversation ID to remove\n */\n RemoveConversation(id: string): void {\n this.conversations = this.conversations.filter(c => !UUIDsEqual(c.ID, id));\n }\n\n /** @deprecated Use {@link RemoveConversation}. */\n removeConversation(id: string): void {\n return this.RemoveConversation(id);\n }\n\n /**\n * Get all cached MJConversationEntity objects (no DB call)\n * @returns Array of cached conversations\n */\n GetCachedConversations(): MJConversationEntity[] {\n return this.conversations;\n }\n\n /** @deprecated Use {@link GetCachedConversations}. */\n getCachedConversations(): MJConversationEntity[] {\n return this.GetCachedConversations();\n }\n\n // =============================================================================\n // MJConversationDetailEntity Methods\n // =============================================================================\n\n /**\n * Get a MJConversationDetailEntity by ID from cache, or load it if not cached\n * @param id The conversation detail ID\n * @param currentUser User context for loading\n * @returns The cached or loaded MJConversationDetailEntity, or null if not found\n */\n async GetConversationDetail(id: string, currentUser: UserInfo): Promise<MJConversationDetailEntity | null> {\n // Check cache first\n const cached = this.conversationDetails.find(d => UUIDsEqual(d.ID, id));\n if (cached) {\n return cached;\n }\n\n // Not in cache - load from DB\n const md = this.Provider;\n const detail = await md.GetEntityObject<MJConversationDetailEntity>('MJ: Conversation Details', currentUser);\n const loaded = await detail.Load(id);\n\n if (loaded) {\n // Add to cache\n this.conversationDetails.push(detail);\n return detail;\n }\n\n return null;\n }\n\n /** @deprecated Use {@link GetConversationDetail}. */\n async getConversationDetail(id: string, currentUser: UserInfo): Promise<MJConversationDetailEntity | null> {\n return this.GetConversationDetail(id, currentUser);\n }\n\n /**\n * Create a new MJConversationDetailEntity and automatically cache it\n * The cache is the ONLY place GetEntityObject() should be called\n * @param currentUser User context\n * @returns New MJConversationDetailEntity instance (already cached)\n */\n async CreateConversationDetail(currentUser: UserInfo): Promise<MJConversationDetailEntity> {\n const md = this.Provider;\n const detail = await md.GetEntityObject<MJConversationDetailEntity>('MJ: Conversation Details', currentUser);\n\n // Automatically add to cache - user code doesn't need to do anything\n // Note: Detail has no ID yet (not saved), so we can't deduplicate\n // After Save(), the ID will be populated and future getConversationDetail() calls will find it\n\n this.conversationDetails.push(detail);\n\n return detail;\n }\n\n /** @deprecated Use {@link CreateConversationDetail}. */\n async createConversationDetail(currentUser: UserInfo): Promise<MJConversationDetailEntity> {\n return this.CreateConversationDetail(currentUser);\n }\n\n /**\n * Load all ConversationDetail entities for a conversation and cache them\n * Used when loading a conversation's message history\n * @param conversationId The conversation ID\n * @param currentUser User context\n * @returns Array of MJConversationDetailEntity objects\n */\n async LoadConversationDetails(conversationId: string, currentUser: UserInfo): Promise<MJConversationDetailEntity[]> {\n const timestamp = new Date().toISOString();\n console.log(`[${timestamp}] 💾 DataCacheService.loadConversationDetails - Loading messages for conversation ${conversationId}`);\n\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n console.log(`[${timestamp}] 💾 DataCacheService - Executing RunView for Conversation Details`);\n const result = await rv.RunView<MJConversationDetailEntity>(\n {\n EntityName: 'MJ: Conversation Details',\n ExtraFilter: `ConversationID='${conversationId}'`,\n OrderBy: '__mj_CreatedAt ASC',\n ResultType: 'entity_object'\n },\n currentUser\n );\n\n if (result.Success) {\n const details = result.Results || [];\n console.log(`[${timestamp}] 💾 DataCacheService - Loaded ${details.length} message(s) for conversation ${conversationId}`);\n\n // Add all to cache (avoid duplicates by checking ID)\n for (const detail of details) {\n const existingIndex = this.conversationDetails.findIndex(d => UUIDsEqual(d.ID, detail.ID));\n if (existingIndex >= 0) {\n // Replace existing (ensures we keep the same object reference)\n this.conversationDetails[existingIndex] = detail;\n } else {\n // Add new\n this.conversationDetails.push(detail);\n }\n }\n\n return details;\n }\n\n console.log(`[${timestamp}] 💾 DataCacheService - Failed to load messages for conversation ${conversationId}`);\n return [];\n }\n\n /** @deprecated Use {@link LoadConversationDetails}. */\n async loadConversationDetails(conversationId: string, currentUser: UserInfo): Promise<MJConversationDetailEntity[]> {\n return this.LoadConversationDetails(conversationId, currentUser);\n }\n\n /**\n * Get all cached ConversationDetail entities for a conversation (no DB call)\n * @param conversationId The conversation ID\n * @returns Array of cached conversation details\n */\n GetCachedConversationDetails(conversationId: string): MJConversationDetailEntity[] {\n return this.conversationDetails.filter(d => UUIDsEqual(d.ConversationID, conversationId));\n }\n\n /** @deprecated Use {@link GetCachedConversationDetails}. */\n getCachedConversationDetails(conversationId: string): MJConversationDetailEntity[] {\n return this.GetCachedConversationDetails(conversationId);\n }\n\n /**\n * Remove a MJConversationDetailEntity from the cache\n * @param id The conversation detail ID to remove\n */\n RemoveConversationDetail(id: string): void {\n this.conversationDetails = this.conversationDetails.filter(d => !UUIDsEqual(d.ID, id));\n }\n\n /** @deprecated Use {@link RemoveConversationDetail}. */\n removeConversationDetail(id: string): void {\n return this.RemoveConversationDetail(id);\n }\n\n // =============================================================================\n // Cache Management\n // =============================================================================\n\n /**\n * Refresh entity data by clearing cached entities of a specific type\n * This forces a reload from the database on next access\n * @param entityName The entity name to refresh (e.g., 'Conversations', 'MJ: Conversation Details')\n */\n async RefreshEntity(entityName: string): Promise<void> {\n switch (entityName) {\n case 'Conversations':\n this.conversations = [];\n break;\n case 'MJ: Conversation Details':\n this.conversationDetails = [];\n break;\n default:\n console.warn('Unknown entity name for refresh:', entityName);\n }\n }\n\n /** @deprecated Use {@link RefreshEntity}. */\n async refreshEntity(entityName: string): Promise<void> {\n return this.RefreshEntity(entityName);\n }\n\n /**\n * Refresh a specific cache by name\n * This method can be extended to handle different cache types\n * @param cacheName The cache name ('Core', 'AI', 'Actions')\n */\n async RefreshCache(cacheName: 'Core' | 'AI' | 'Actions'): Promise<void> {\n switch (cacheName) {\n case 'Core':\n // Clear core entity caches\n this.Clear();\n break;\n case 'AI':\n // AI-specific cache refresh would go here\n // For now, just log it\n console.log('AI cache refresh requested (not yet implemented)');\n break;\n case 'Actions':\n // Actions-specific cache refresh would go here\n console.log('Actions cache refresh requested (not yet implemented)');\n break;\n default:\n console.warn('Unknown cache name for refresh:', cacheName);\n }\n }\n\n /** @deprecated Use {@link RefreshCache}. */\n async refreshCache(cacheName: 'Core' | 'AI' | 'Actions'): Promise<void> {\n return this.RefreshCache(cacheName);\n }\n\n /**\n * Clear all cached entities\n * Call when switching environments, users, or when needed\n */\n Clear(): void {\n this.conversations = [];\n this.conversationDetails = [];\n }\n\n /** @deprecated Use {@link Clear}. */\n clear(): void {\n return this.Clear();\n }\n\n /**\n * Clear cached entities for a specific conversation\n * @param conversationId The conversation ID\n */\n ClearConversation(conversationId: string): void {\n this.conversations = this.conversations.filter(c => !UUIDsEqual(c.ID, conversationId));\n this.conversationDetails = this.conversationDetails.filter(d => !UUIDsEqual(d.ConversationID, conversationId));\n }\n\n /** @deprecated Use {@link ClearConversation}. */\n clearConversation(conversationId: string): void {\n return this.ClearConversation(conversationId);\n }\n\n /**\n * Get cache statistics for debugging\n * @returns Object with cache sizes\n */\n GetStats(): { conversations: number; conversationDetails: number } {\n return {\n conversations: this.conversations.length,\n conversationDetails: this.conversationDetails.length\n };\n }\n\n /** @deprecated Use {@link GetStats}. */\n getStats(): { conversations: number; conversationDetails: number } {\n return this.GetStats();\n }\n}\n"]}
|
|
@@ -57,10 +57,14 @@ export declare class DialogService {
|
|
|
57
57
|
* Show a confirmation dialog
|
|
58
58
|
* @returns Promise<boolean> - true if user clicked OK, false if cancelled
|
|
59
59
|
*/
|
|
60
|
+
Confirm(options: ConfirmDialogOptions): Promise<boolean>;
|
|
61
|
+
/** @deprecated Use {@link Confirm}. */
|
|
60
62
|
confirm(options: ConfirmDialogOptions): Promise<boolean>;
|
|
61
63
|
/**
|
|
62
64
|
* Show an alert dialog
|
|
63
65
|
*/
|
|
66
|
+
Alert(title: string, message: string, okText?: string): Promise<void>;
|
|
67
|
+
/** @deprecated Use {@link Alert}. */
|
|
64
68
|
alert(title: string, message: string, okText?: string): Promise<void>;
|
|
65
69
|
/**
|
|
66
70
|
* Show an input dialog
|
|
@@ -69,6 +73,11 @@ export declare class DialogService {
|
|
|
69
73
|
* If dual input: returns object with both values
|
|
70
74
|
* Returns null if cancelled
|
|
71
75
|
*/
|
|
76
|
+
Input(options: InputDialogOptions): Promise<string | {
|
|
77
|
+
value: string;
|
|
78
|
+
secondValue?: string;
|
|
79
|
+
} | null>;
|
|
80
|
+
/** @deprecated Use {@link Input}. */
|
|
72
81
|
input(options: InputDialogOptions): Promise<string | {
|
|
73
82
|
value: string;
|
|
74
83
|
secondValue?: string;
|
|
@@ -77,10 +86,14 @@ export declare class DialogService {
|
|
|
77
86
|
* Show a rating dialog (1-10 + free-form comments).
|
|
78
87
|
* @returns Promise<RatingDialogResult | null> — null if cancelled or no rating selected.
|
|
79
88
|
*/
|
|
89
|
+
Rating(options?: RatingDialogOptions): Promise<RatingDialogResult | null>;
|
|
90
|
+
/** @deprecated Use {@link Rating}. */
|
|
80
91
|
rating(options?: RatingDialogOptions): Promise<RatingDialogResult | null>;
|
|
81
92
|
/**
|
|
82
93
|
* Show a custom dialog with custom content and actions
|
|
83
94
|
*/
|
|
95
|
+
Custom(title: string, content: string, buttons: DialogButton[], width?: number): MJDialogRef;
|
|
96
|
+
/** @deprecated Use {@link Custom}. */
|
|
84
97
|
custom(title: string, content: string, buttons: DialogButton[], width?: number): MJDialogRef;
|
|
85
98
|
static ɵfac: i0.ɵɵFactoryDeclaration<DialogService, never>;
|
|
86
99
|
static ɵprov: i0.ɵɵInjectableDeclaration<DialogService>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/dialog.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAkB,MAAM,kCAAkC,CAAC;;AAKhG,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;oEACgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB;;+EAE2E;IAC3E,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAED;;;GAGG;AACH,qBAGa,aAAa;IACZ,OAAO,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAEpD;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IA+BxD;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3E;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IAkElG;;;OAGG;IACH,MAAM,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IA0C7E;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,GAAE,MAAY,GAAG,WAAW;
|
|
1
|
+
{"version":3,"file":"dialog.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/dialog.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export class DialogService {
|
|
|
16
16
|
* Show a confirmation dialog
|
|
17
17
|
* @returns Promise<boolean> - true if user clicked OK, false if cancelled
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
Confirm(options) {
|
|
20
20
|
return new Promise((resolve) => {
|
|
21
21
|
const dialogRef = this.mjDialogService.open({
|
|
22
22
|
title: options.title,
|
|
@@ -46,10 +46,14 @@ export class DialogService {
|
|
|
46
46
|
});
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
|
+
/** @deprecated Use {@link Confirm}. */
|
|
50
|
+
confirm(options) {
|
|
51
|
+
return this.Confirm(options);
|
|
52
|
+
}
|
|
49
53
|
/**
|
|
50
54
|
* Show an alert dialog
|
|
51
55
|
*/
|
|
52
|
-
|
|
56
|
+
Alert(title, message, okText = 'OK') {
|
|
53
57
|
return new Promise((resolve) => {
|
|
54
58
|
const dialogRef = this.mjDialogService.open({
|
|
55
59
|
title: title,
|
|
@@ -68,6 +72,10 @@ export class DialogService {
|
|
|
68
72
|
});
|
|
69
73
|
});
|
|
70
74
|
}
|
|
75
|
+
/** @deprecated Use {@link Alert}. */
|
|
76
|
+
alert(title, message, okText = 'OK') {
|
|
77
|
+
return this.Alert(title, message, okText);
|
|
78
|
+
}
|
|
71
79
|
/**
|
|
72
80
|
* Show an input dialog
|
|
73
81
|
* @returns Promise<string | {value: string; secondValue?: string} | null> -
|
|
@@ -75,7 +83,7 @@ export class DialogService {
|
|
|
75
83
|
* If dual input: returns object with both values
|
|
76
84
|
* Returns null if cancelled
|
|
77
85
|
*/
|
|
78
|
-
|
|
86
|
+
Input(options) {
|
|
79
87
|
return new Promise((resolve) => {
|
|
80
88
|
const dialogRef = this.mjDialogService.open({
|
|
81
89
|
title: options.title,
|
|
@@ -140,11 +148,15 @@ export class DialogService {
|
|
|
140
148
|
});
|
|
141
149
|
});
|
|
142
150
|
}
|
|
151
|
+
/** @deprecated Use {@link Input}. */
|
|
152
|
+
input(options) {
|
|
153
|
+
return this.Input(options);
|
|
154
|
+
}
|
|
143
155
|
/**
|
|
144
156
|
* Show a rating dialog (1-10 + free-form comments).
|
|
145
157
|
* @returns Promise<RatingDialogResult | null> — null if cancelled or no rating selected.
|
|
146
158
|
*/
|
|
147
|
-
|
|
159
|
+
Rating(options = {}) {
|
|
148
160
|
return new Promise((resolve) => {
|
|
149
161
|
const okText = options.okText || 'Submit';
|
|
150
162
|
const cancelText = options.cancelText || 'Cancel';
|
|
@@ -184,10 +196,14 @@ export class DialogService {
|
|
|
184
196
|
});
|
|
185
197
|
});
|
|
186
198
|
}
|
|
199
|
+
/** @deprecated Use {@link Rating}. */
|
|
200
|
+
rating(options = {}) {
|
|
201
|
+
return this.Rating(options);
|
|
202
|
+
}
|
|
187
203
|
/**
|
|
188
204
|
* Show a custom dialog with custom content and actions
|
|
189
205
|
*/
|
|
190
|
-
|
|
206
|
+
Custom(title, content, buttons, width = 500) {
|
|
191
207
|
const actions = buttons.map(btn => ({
|
|
192
208
|
text: btn.text,
|
|
193
209
|
primary: btn.primary || false
|
|
@@ -210,6 +226,10 @@ export class DialogService {
|
|
|
210
226
|
});
|
|
211
227
|
return dialogRef;
|
|
212
228
|
}
|
|
229
|
+
/** @deprecated Use {@link Custom}. */
|
|
230
|
+
custom(title, content, buttons, width = 500) {
|
|
231
|
+
return this.Custom(title, content, buttons, width);
|
|
232
|
+
}
|
|
213
233
|
static ɵfac = function DialogService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DialogService)(i0.ɵɵinject(i1.MJDialogService)); };
|
|
214
234
|
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DialogService, factory: DialogService.ɵfac, providedIn: 'root' });
|
|
215
235
|
}
|