@memberjunction/ng-conversations 2.104.0
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 +197 -0
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +20 -0
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -0
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js +125 -0
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -0
- package/dist/lib/components/agent/active-agent-indicator.component.d.ts +48 -0
- package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -0
- package/dist/lib/components/agent/active-agent-indicator.component.js +199 -0
- package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -0
- package/dist/lib/components/agent/agent-process-panel.component.d.ts +30 -0
- package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -0
- package/dist/lib/components/agent/agent-process-panel.component.js +333 -0
- package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-panel.component.d.ts +22 -0
- package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-panel.component.js +237 -0
- package/dist/lib/components/artifact/artifact-panel.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +39 -0
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-upload-modal.component.js +384 -0
- package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts +28 -0
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-version-history.component.js +280 -0
- package/dist/lib/components/artifact/artifact-version-history.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +22 -0
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js +182 -0
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts +27 -0
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-viewer.component.js +266 -0
- package/dist/lib/components/artifact/artifact-viewer.component.js.map +1 -0
- package/dist/lib/components/artifact/inline-artifact.component.d.ts +46 -0
- package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/inline-artifact.component.js +447 -0
- package/dist/lib/components/artifact/inline-artifact.component.js.map +1 -0
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts +18 -0
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-artifact-card.component.js +147 -0
- package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -0
- package/dist/lib/components/collection/collection-form-modal.component.d.ts +33 -0
- package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-form-modal.component.js +245 -0
- package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -0
- package/dist/lib/components/collection/collection-tree.component.d.ts +42 -0
- package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-tree.component.js +482 -0
- package/dist/lib/components/collection/collection-tree.component.js.map +1 -0
- package/dist/lib/components/collection/collection-view.component.d.ts +31 -0
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-view.component.js +254 -0
- package/dist/lib/components/collection/collection-view.component.js.map +1 -0
- package/dist/lib/components/collection/collections-full-view.component.d.ts +55 -0
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collections-full-view.component.js +578 -0
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +160 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.js +891 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -0
- package/dist/lib/components/conversation/conversation-list.component.d.ts +29 -0
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -0
- package/dist/lib/components/conversation/conversation-list.component.js +255 -0
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -0
- package/dist/lib/components/dialogs/input-dialog.component.d.ts +17 -0
- package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -0
- package/dist/lib/components/dialogs/input-dialog.component.js +122 -0
- package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -0
- package/dist/lib/components/export/export-modal.component.d.ts +37 -0
- package/dist/lib/components/export/export-modal.component.d.ts.map +1 -0
- package/dist/lib/components/export/export-modal.component.js +414 -0
- package/dist/lib/components/export/export-modal.component.js.map +1 -0
- package/dist/lib/components/library/library-full-view.component.d.ts +36 -0
- package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -0
- package/dist/lib/components/library/library-full-view.component.js +270 -0
- package/dist/lib/components/library/library-full-view.component.js.map +1 -0
- package/dist/lib/components/members/members-modal.component.d.ts +42 -0
- package/dist/lib/components/members/members-modal.component.d.ts.map +1 -0
- package/dist/lib/components/members/members-modal.component.js +352 -0
- package/dist/lib/components/members/members-modal.component.js.map +1 -0
- package/dist/lib/components/mention/mention-dropdown.component.d.ts +44 -0
- package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -0
- package/dist/lib/components/mention/mention-dropdown.component.js +194 -0
- package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -0
- package/dist/lib/components/message/message-input.component.d.ts +137 -0
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -0
- package/dist/lib/components/message/message-input.component.js +1159 -0
- package/dist/lib/components/message/message-input.component.js.map +1 -0
- package/dist/lib/components/message/message-item.component.d.ts +140 -0
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -0
- package/dist/lib/components/message/message-item.component.js +817 -0
- package/dist/lib/components/message/message-item.component.js.map +1 -0
- package/dist/lib/components/message/message-list.component.d.ts +77 -0
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -0
- package/dist/lib/components/message/message-list.component.js +316 -0
- package/dist/lib/components/message/message-list.component.js.map +1 -0
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts +13 -0
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -0
- package/dist/lib/components/navigation/conversation-navigation.component.js +88 -0
- package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -0
- package/dist/lib/components/notification/activity-indicator.component.d.ts +11 -0
- package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -0
- package/dist/lib/components/notification/activity-indicator.component.js +56 -0
- package/dist/lib/components/notification/activity-indicator.component.js.map +1 -0
- package/dist/lib/components/notification/notification-badge.component.d.ts +27 -0
- package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -0
- package/dist/lib/components/notification/notification-badge.component.js +160 -0
- package/dist/lib/components/notification/notification-badge.component.js.map +1 -0
- package/dist/lib/components/project/project-form-modal.component.d.ts +34 -0
- package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -0
- package/dist/lib/components/project/project-form-modal.component.js +357 -0
- package/dist/lib/components/project/project-form-modal.component.js.map +1 -0
- package/dist/lib/components/project/project-selector.component.d.ts +36 -0
- package/dist/lib/components/project/project-selector.component.d.ts.map +1 -0
- package/dist/lib/components/project/project-selector.component.js +317 -0
- package/dist/lib/components/project/project-selector.component.js.map +1 -0
- package/dist/lib/components/search/search-panel.component.d.ts +120 -0
- package/dist/lib/components/search/search-panel.component.d.ts.map +1 -0
- package/dist/lib/components/search/search-panel.component.js +714 -0
- package/dist/lib/components/search/search-panel.component.js.map +1 -0
- package/dist/lib/components/share/share-modal.component.d.ts +46 -0
- package/dist/lib/components/share/share-modal.component.d.ts.map +1 -0
- package/dist/lib/components/share/share-modal.component.js +431 -0
- package/dist/lib/components/share/share-modal.component.js.map +1 -0
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +18 -0
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -0
- package/dist/lib/components/sidebar/conversation-sidebar.component.js +81 -0
- package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -0
- package/dist/lib/components/task/task-form-modal.component.d.ts +42 -0
- package/dist/lib/components/task/task-form-modal.component.d.ts.map +1 -0
- package/dist/lib/components/task/task-form-modal.component.js +329 -0
- package/dist/lib/components/task/task-form-modal.component.js.map +1 -0
- package/dist/lib/components/task/task-item.component.d.ts +22 -0
- package/dist/lib/components/task/task-item.component.d.ts.map +1 -0
- package/dist/lib/components/task/task-item.component.js +234 -0
- package/dist/lib/components/task/task-item.component.js.map +1 -0
- package/dist/lib/components/task/task-list.component.d.ts +32 -0
- package/dist/lib/components/task/task-list.component.d.ts.map +1 -0
- package/dist/lib/components/task/task-list.component.js +290 -0
- package/dist/lib/components/task/task-list.component.js.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +27 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.js +254 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -0
- package/dist/lib/components/thread/thread-panel.component.d.ts +65 -0
- package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -0
- package/dist/lib/components/thread/thread-panel.component.js +325 -0
- package/dist/lib/components/thread/thread-panel.component.js.map +1 -0
- package/dist/lib/components/toast/toast.component.d.ts +26 -0
- package/dist/lib/components/toast/toast.component.d.ts.map +1 -0
- package/dist/lib/components/toast/toast.component.js +108 -0
- package/dist/lib/components/toast/toast.component.js.map +1 -0
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +75 -0
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -0
- package/dist/lib/components/workspace/conversation-workspace.component.js +299 -0
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -0
- package/dist/lib/conversations.module.d.ts +62 -0
- package/dist/lib/conversations.module.d.ts.map +1 -0
- package/dist/lib/conversations.module.js +248 -0
- package/dist/lib/conversations.module.js.map +1 -0
- package/dist/lib/directives/search-shortcut.directive.d.ts +17 -0
- package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -0
- package/dist/lib/directives/search-shortcut.directive.js +39 -0
- package/dist/lib/directives/search-shortcut.directive.js.map +1 -0
- package/dist/lib/models/conversation-state.model.d.ts +72 -0
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -0
- package/dist/lib/models/conversation-state.model.js +2 -0
- package/dist/lib/models/conversation-state.model.js.map +1 -0
- package/dist/lib/models/notification.model.d.ts +89 -0
- package/dist/lib/models/notification.model.d.ts.map +1 -0
- package/dist/lib/models/notification.model.js +11 -0
- package/dist/lib/models/notification.model.js.map +1 -0
- package/dist/lib/services/active-tasks.service.d.ts +65 -0
- package/dist/lib/services/active-tasks.service.d.ts.map +1 -0
- package/dist/lib/services/active-tasks.service.js +95 -0
- package/dist/lib/services/active-tasks.service.js.map +1 -0
- package/dist/lib/services/agent-state.service.d.ts +78 -0
- package/dist/lib/services/agent-state.service.d.ts.map +1 -0
- package/dist/lib/services/agent-state.service.js +213 -0
- package/dist/lib/services/agent-state.service.js.map +1 -0
- package/dist/lib/services/artifact-state.service.d.ts +114 -0
- package/dist/lib/services/artifact-state.service.d.ts.map +1 -0
- package/dist/lib/services/artifact-state.service.js +288 -0
- package/dist/lib/services/artifact-state.service.js.map +1 -0
- package/dist/lib/services/conversation-agent.service.d.ts +79 -0
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -0
- package/dist/lib/services/conversation-agent.service.js +259 -0
- package/dist/lib/services/conversation-agent.service.js.map +1 -0
- package/dist/lib/services/conversation-state.service.d.ts +122 -0
- package/dist/lib/services/conversation-state.service.d.ts.map +1 -0
- package/dist/lib/services/conversation-state.service.js +255 -0
- package/dist/lib/services/conversation-state.service.js.map +1 -0
- package/dist/lib/services/dialog.service.d.ts +54 -0
- package/dist/lib/services/dialog.service.d.ts.map +1 -0
- package/dist/lib/services/dialog.service.js +157 -0
- package/dist/lib/services/dialog.service.js.map +1 -0
- package/dist/lib/services/export.service.d.ts +25 -0
- package/dist/lib/services/export.service.d.ts.map +1 -0
- package/dist/lib/services/export.service.js +237 -0
- package/dist/lib/services/export.service.js.map +1 -0
- package/dist/lib/services/mention-autocomplete.service.d.ts +59 -0
- package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -0
- package/dist/lib/services/mention-autocomplete.service.js +160 -0
- package/dist/lib/services/mention-autocomplete.service.js.map +1 -0
- package/dist/lib/services/mention-parser.service.d.ts +46 -0
- package/dist/lib/services/mention-parser.service.d.ts.map +1 -0
- package/dist/lib/services/mention-parser.service.js +156 -0
- package/dist/lib/services/mention-parser.service.js.map +1 -0
- package/dist/lib/services/notification.service.d.ts +108 -0
- package/dist/lib/services/notification.service.d.ts.map +1 -0
- package/dist/lib/services/notification.service.js +431 -0
- package/dist/lib/services/notification.service.js.map +1 -0
- package/dist/lib/services/search.service.d.ts +144 -0
- package/dist/lib/services/search.service.d.ts.map +1 -0
- package/dist/lib/services/search.service.js +370 -0
- package/dist/lib/services/search.service.js.map +1 -0
- package/dist/lib/services/toast.service.d.ts +46 -0
- package/dist/lib/services/toast.service.d.ts.map +1 -0
- package/dist/lib/services/toast.service.js +76 -0
- package/dist/lib/services/toast.service.js.map +1 -0
- package/dist/public-api.d.ts +42 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +49 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { RunView } from '@memberjunction/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ExportService {
|
|
5
|
+
async exportConversation(conversationId, format, currentUser, options = {}) {
|
|
6
|
+
const conversation = await this.loadConversationData(conversationId, currentUser);
|
|
7
|
+
// Apply default options
|
|
8
|
+
const exportOptions = {
|
|
9
|
+
includeMessages: options.includeMessages ?? true,
|
|
10
|
+
includeMetadata: options.includeMetadata ?? true,
|
|
11
|
+
prettyPrint: options.prettyPrint ?? true,
|
|
12
|
+
includeCSS: options.includeCSS ?? true
|
|
13
|
+
};
|
|
14
|
+
let content;
|
|
15
|
+
let filename;
|
|
16
|
+
let mimeType;
|
|
17
|
+
switch (format) {
|
|
18
|
+
case 'json':
|
|
19
|
+
content = this.exportAsJSON(conversation, exportOptions);
|
|
20
|
+
filename = `conversation-${conversation.conversation.Name}-${this.getTimestamp()}.json`;
|
|
21
|
+
mimeType = 'application/json';
|
|
22
|
+
break;
|
|
23
|
+
case 'markdown':
|
|
24
|
+
content = this.exportAsMarkdown(conversation, exportOptions);
|
|
25
|
+
filename = `conversation-${conversation.conversation.Name}-${this.getTimestamp()}.md`;
|
|
26
|
+
mimeType = 'text/markdown';
|
|
27
|
+
break;
|
|
28
|
+
case 'html':
|
|
29
|
+
content = this.exportAsHTML(conversation, exportOptions);
|
|
30
|
+
filename = `conversation-${conversation.conversation.Name}-${this.getTimestamp()}.html`;
|
|
31
|
+
mimeType = 'text/html';
|
|
32
|
+
break;
|
|
33
|
+
case 'text':
|
|
34
|
+
content = this.exportAsText(conversation, exportOptions);
|
|
35
|
+
filename = `conversation-${conversation.conversation.Name}-${this.getTimestamp()}.txt`;
|
|
36
|
+
mimeType = 'text/plain';
|
|
37
|
+
break;
|
|
38
|
+
default:
|
|
39
|
+
throw new Error(`Unsupported export format: ${format}`);
|
|
40
|
+
}
|
|
41
|
+
this.downloadFile(content, filename, mimeType);
|
|
42
|
+
}
|
|
43
|
+
async loadConversationData(conversationId, currentUser) {
|
|
44
|
+
const rv = new RunView();
|
|
45
|
+
// Load conversation and details in parallel
|
|
46
|
+
const [conversationResult, detailsResult] = await rv.RunViews([
|
|
47
|
+
{
|
|
48
|
+
EntityName: 'Conversations',
|
|
49
|
+
ExtraFilter: `ID='${conversationId}'`,
|
|
50
|
+
ResultType: 'entity_object'
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
EntityName: 'Conversation Details',
|
|
54
|
+
ExtraFilter: `ConversationID='${conversationId}'`,
|
|
55
|
+
OrderBy: 'Sequence ASC',
|
|
56
|
+
ResultType: 'entity_object'
|
|
57
|
+
}
|
|
58
|
+
], currentUser);
|
|
59
|
+
if (!conversationResult.Success || !conversationResult.Results?.length) {
|
|
60
|
+
throw new Error('Conversation not found');
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
conversation: conversationResult.Results[0],
|
|
64
|
+
details: (detailsResult.Results || [])
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
exportAsJSON(data, options) {
|
|
68
|
+
const exportData = {};
|
|
69
|
+
// Add metadata if requested
|
|
70
|
+
if (options.includeMetadata) {
|
|
71
|
+
exportData.conversation = {
|
|
72
|
+
id: data.conversation.ID,
|
|
73
|
+
name: data.conversation.Name,
|
|
74
|
+
description: data.conversation.Description,
|
|
75
|
+
createdAt: data.conversation.__mj_CreatedAt,
|
|
76
|
+
updatedAt: data.conversation.__mj_UpdatedAt
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
exportData.conversation = {
|
|
81
|
+
name: data.conversation.Name
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Add messages if requested
|
|
85
|
+
if (options.includeMessages) {
|
|
86
|
+
exportData.messages = data.details.map((detail, index) => {
|
|
87
|
+
const message = {
|
|
88
|
+
role: detail.Role,
|
|
89
|
+
message: detail.Message
|
|
90
|
+
};
|
|
91
|
+
if (options.includeMetadata) {
|
|
92
|
+
message.id = detail.ID;
|
|
93
|
+
message.sequence = index + 1;
|
|
94
|
+
message.timestamp = detail.__mj_CreatedAt;
|
|
95
|
+
}
|
|
96
|
+
return message;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
// Use pretty print option
|
|
100
|
+
return JSON.stringify(exportData, null, options.prettyPrint ? 2 : 0);
|
|
101
|
+
}
|
|
102
|
+
exportAsMarkdown(data, options) {
|
|
103
|
+
let md = `# ${data.conversation.Name}\n\n`;
|
|
104
|
+
if (data.conversation.Description) {
|
|
105
|
+
md += `${data.conversation.Description}\n\n`;
|
|
106
|
+
}
|
|
107
|
+
if (options.includeMetadata) {
|
|
108
|
+
md += `**Created:** ${this.formatDate(data.conversation.__mj_CreatedAt)}\n\n`;
|
|
109
|
+
}
|
|
110
|
+
md += `---\n\n`;
|
|
111
|
+
if (options.includeMessages) {
|
|
112
|
+
for (const detail of data.details) {
|
|
113
|
+
md += `## ${this.capitalizeRole(detail.Role || 'Unknown')}\n\n`;
|
|
114
|
+
md += `${detail.Message}\n\n`;
|
|
115
|
+
if (options.includeMetadata) {
|
|
116
|
+
md += `*${this.formatDate(detail.__mj_CreatedAt)}*\n\n`;
|
|
117
|
+
}
|
|
118
|
+
md += `---\n\n`;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return md;
|
|
122
|
+
}
|
|
123
|
+
exportAsHTML(data, options) {
|
|
124
|
+
const styles = options.includeCSS ? `
|
|
125
|
+
<style>
|
|
126
|
+
body { font-family: system-ui, -apple-system, sans-serif; max-width: 800px; margin: 40px auto; padding: 0 20px; line-height: 1.6; }
|
|
127
|
+
h1 { color: #333; border-bottom: 2px solid #007bff; padding-bottom: 10px; }
|
|
128
|
+
.meta { color: #666; font-size: 14px; margin-bottom: 30px; }
|
|
129
|
+
.message { margin-bottom: 30px; padding: 20px; border-radius: 8px; background: #f5f5f5; }
|
|
130
|
+
.message.user { background: #e3f2fd; }
|
|
131
|
+
.message.assistant { background: #f5f5f5; }
|
|
132
|
+
.role { font-weight: 600; color: #007bff; margin-bottom: 10px; }
|
|
133
|
+
.content { white-space: pre-wrap; }
|
|
134
|
+
.timestamp { color: #999; font-size: 12px; margin-top: 10px; }
|
|
135
|
+
</style>` : '';
|
|
136
|
+
let html = `<!DOCTYPE html>
|
|
137
|
+
<html lang="en">
|
|
138
|
+
<head>
|
|
139
|
+
<meta charset="UTF-8">
|
|
140
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
141
|
+
<title>${this.escapeHtml(data.conversation.Name || 'Conversation')}</title>${styles}
|
|
142
|
+
</head>
|
|
143
|
+
<body>
|
|
144
|
+
<h1>${this.escapeHtml(data.conversation.Name || 'Conversation')}</h1>`;
|
|
145
|
+
if (options.includeMetadata) {
|
|
146
|
+
html += `
|
|
147
|
+
<div class="meta">
|
|
148
|
+
${data.conversation.Description ? `<p>${this.escapeHtml(data.conversation.Description)}</p>` : ''}
|
|
149
|
+
<p>Created: ${this.formatDate(data.conversation.__mj_CreatedAt)}</p>
|
|
150
|
+
</div>`;
|
|
151
|
+
}
|
|
152
|
+
if (options.includeMessages) {
|
|
153
|
+
for (const detail of data.details) {
|
|
154
|
+
const roleClass = detail.Role?.toLowerCase() || 'unknown';
|
|
155
|
+
html += `
|
|
156
|
+
<div class="message ${roleClass}">
|
|
157
|
+
<div class="role">${this.capitalizeRole(detail.Role || 'Unknown')}</div>
|
|
158
|
+
<div class="content">${this.escapeHtml(detail.Message || '')}</div>`;
|
|
159
|
+
if (options.includeMetadata) {
|
|
160
|
+
html += `
|
|
161
|
+
<div class="timestamp">${this.formatDate(detail.__mj_CreatedAt)}</div>`;
|
|
162
|
+
}
|
|
163
|
+
html += `
|
|
164
|
+
</div>`;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
html += `
|
|
168
|
+
</body>
|
|
169
|
+
</html>`;
|
|
170
|
+
return html;
|
|
171
|
+
}
|
|
172
|
+
exportAsText(data, options) {
|
|
173
|
+
const name = data.conversation.Name || 'Conversation';
|
|
174
|
+
let text = `${name}\n`;
|
|
175
|
+
text += '='.repeat(name.length) + '\n\n';
|
|
176
|
+
if (data.conversation.Description) {
|
|
177
|
+
text += `${data.conversation.Description}\n\n`;
|
|
178
|
+
}
|
|
179
|
+
if (options.includeMetadata) {
|
|
180
|
+
text += `Created: ${this.formatDate(data.conversation.__mj_CreatedAt)}\n\n`;
|
|
181
|
+
}
|
|
182
|
+
text += '-'.repeat(80) + '\n\n';
|
|
183
|
+
if (options.includeMessages) {
|
|
184
|
+
for (const detail of data.details) {
|
|
185
|
+
text += `[${this.capitalizeRole(detail.Role || 'Unknown')}]\n`;
|
|
186
|
+
text += `${detail.Message}\n`;
|
|
187
|
+
if (options.includeMetadata) {
|
|
188
|
+
text += `(${this.formatDate(detail.__mj_CreatedAt)})\n`;
|
|
189
|
+
}
|
|
190
|
+
text += '\n' + '-'.repeat(80) + '\n\n';
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return text;
|
|
194
|
+
}
|
|
195
|
+
downloadFile(content, filename, mimeType) {
|
|
196
|
+
const blob = new Blob([content], { type: mimeType });
|
|
197
|
+
const url = URL.createObjectURL(blob);
|
|
198
|
+
const link = document.createElement('a');
|
|
199
|
+
link.href = url;
|
|
200
|
+
link.download = filename;
|
|
201
|
+
document.body.appendChild(link);
|
|
202
|
+
link.click();
|
|
203
|
+
document.body.removeChild(link);
|
|
204
|
+
URL.revokeObjectURL(url);
|
|
205
|
+
}
|
|
206
|
+
formatDate(date) {
|
|
207
|
+
const d = new Date(date);
|
|
208
|
+
return d.toLocaleString('en-US', {
|
|
209
|
+
year: 'numeric',
|
|
210
|
+
month: 'long',
|
|
211
|
+
day: 'numeric',
|
|
212
|
+
hour: '2-digit',
|
|
213
|
+
minute: '2-digit'
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
capitalizeRole(role) {
|
|
217
|
+
return role.charAt(0).toUpperCase() + role.slice(1).toLowerCase();
|
|
218
|
+
}
|
|
219
|
+
escapeHtml(text) {
|
|
220
|
+
const div = document.createElement('div');
|
|
221
|
+
div.textContent = text;
|
|
222
|
+
return div.innerHTML;
|
|
223
|
+
}
|
|
224
|
+
getTimestamp() {
|
|
225
|
+
const now = new Date();
|
|
226
|
+
return now.toISOString().replace(/[:.]/g, '-').slice(0, -5);
|
|
227
|
+
}
|
|
228
|
+
static ɵfac = function ExportService_Factory(t) { return new (t || ExportService)(); };
|
|
229
|
+
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ExportService, factory: ExportService.ɵfac, providedIn: 'root' });
|
|
230
|
+
}
|
|
231
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ExportService, [{
|
|
232
|
+
type: Injectable,
|
|
233
|
+
args: [{
|
|
234
|
+
providedIn: 'root'
|
|
235
|
+
}]
|
|
236
|
+
}], null, null); })();
|
|
237
|
+
//# sourceMappingURL=export.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.service.js","sourceRoot":"","sources":["../../../src/lib/services/export.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { AIAgentEntityExtended } from '@memberjunction/core-entities';
|
|
2
|
+
import { UserInfo } from '@memberjunction/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Item in the autocomplete dropdown
|
|
6
|
+
*/
|
|
7
|
+
export interface MentionSuggestion {
|
|
8
|
+
type: 'agent' | 'user';
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
displayName: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
avatarUrl?: string;
|
|
14
|
+
icon?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Service for autocomplete suggestions when typing @mentions
|
|
18
|
+
*/
|
|
19
|
+
export declare class MentionAutocompleteService {
|
|
20
|
+
private agentsCache;
|
|
21
|
+
private usersCache;
|
|
22
|
+
private isInitialized;
|
|
23
|
+
constructor();
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the service by loading agents and users
|
|
26
|
+
*/
|
|
27
|
+
initialize(currentUser: UserInfo): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Get suggestions based on search query
|
|
30
|
+
* @param query The search text after @ symbol
|
|
31
|
+
* @param includeUsers Whether to include users in suggestions
|
|
32
|
+
* @returns Filtered and ranked suggestions
|
|
33
|
+
*/
|
|
34
|
+
getSuggestions(query: string, includeUsers?: boolean): MentionSuggestion[];
|
|
35
|
+
/**
|
|
36
|
+
* Calculate match score for ranking
|
|
37
|
+
* Higher score = better match
|
|
38
|
+
*/
|
|
39
|
+
private calculateMatchScore;
|
|
40
|
+
/**
|
|
41
|
+
* Get icon for agent based on type/name
|
|
42
|
+
*/
|
|
43
|
+
private getAgentIcon;
|
|
44
|
+
/**
|
|
45
|
+
* Get available agents for parsing
|
|
46
|
+
*/
|
|
47
|
+
getAvailableAgents(): AIAgentEntityExtended[];
|
|
48
|
+
/**
|
|
49
|
+
* Get available users for parsing
|
|
50
|
+
*/
|
|
51
|
+
getAvailableUsers(): UserInfo[];
|
|
52
|
+
/**
|
|
53
|
+
* Refresh the caches
|
|
54
|
+
*/
|
|
55
|
+
refresh(currentUser: UserInfo): Promise<void>;
|
|
56
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MentionAutocompleteService, never>;
|
|
57
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<MentionAutocompleteService>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=mention-autocomplete.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mention-autocomplete.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/mention-autocomplete.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;;AAGnE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAGa,0BAA0B;IACrC,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,aAAa,CAAS;;IAI9B;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtD;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,OAAc,GAAG,iBAAiB,EAAE;IAkDhF;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,kBAAkB,IAAI,qBAAqB,EAAE;IAI7C;;OAEG;IACH,iBAAiB,IAAI,QAAQ,EAAE;IAI/B;;OAEG;IACG,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;yCAxJxC,0BAA0B;6CAA1B,0BAA0B;CA4JtC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { AIEngineBase } from '@memberjunction/ai-engine-base';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Service for autocomplete suggestions when typing @mentions
|
|
6
|
+
*/
|
|
7
|
+
export class MentionAutocompleteService {
|
|
8
|
+
agentsCache = [];
|
|
9
|
+
usersCache = [];
|
|
10
|
+
isInitialized = false;
|
|
11
|
+
constructor() { }
|
|
12
|
+
/**
|
|
13
|
+
* Initialize the service by loading agents and users
|
|
14
|
+
*/
|
|
15
|
+
async initialize(currentUser) {
|
|
16
|
+
if (this.isInitialized)
|
|
17
|
+
return;
|
|
18
|
+
try {
|
|
19
|
+
// Load agents from AIEngineBase
|
|
20
|
+
await AIEngineBase.Instance.Config(false);
|
|
21
|
+
this.agentsCache = AIEngineBase.Instance.Agents.filter(a => !a.ParentID && a.Status === 'Active');
|
|
22
|
+
console.log('[MentionAutocomplete] Initialized with agents:', this.agentsCache.map(a => a.Name));
|
|
23
|
+
console.log('[MentionAutocomplete] Total active agents:', this.agentsCache.length);
|
|
24
|
+
// Load users from the system (optional - can be expanded later)
|
|
25
|
+
// For now, we'll just use the current user
|
|
26
|
+
this.usersCache = [currentUser];
|
|
27
|
+
this.isInitialized = true;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error('Failed to initialize MentionAutocompleteService:', error);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get suggestions based on search query
|
|
35
|
+
* @param query The search text after @ symbol
|
|
36
|
+
* @param includeUsers Whether to include users in suggestions
|
|
37
|
+
* @returns Filtered and ranked suggestions
|
|
38
|
+
*/
|
|
39
|
+
getSuggestions(query, includeUsers = true) {
|
|
40
|
+
const lowerQuery = query.toLowerCase().trim();
|
|
41
|
+
const suggestions = [];
|
|
42
|
+
// Add agent suggestions
|
|
43
|
+
for (const agent of this.agentsCache) {
|
|
44
|
+
const score = this.calculateMatchScore(agent.Name || '', lowerQuery);
|
|
45
|
+
if (score > 0 || !lowerQuery) {
|
|
46
|
+
suggestions.push({
|
|
47
|
+
type: 'agent',
|
|
48
|
+
id: agent.ID,
|
|
49
|
+
name: agent.Name || 'Unknown',
|
|
50
|
+
displayName: agent.Name || 'Unknown',
|
|
51
|
+
description: agent.Description || undefined,
|
|
52
|
+
icon: this.getAgentIcon(agent)
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Add user suggestions (if enabled)
|
|
57
|
+
if (includeUsers) {
|
|
58
|
+
for (const user of this.usersCache) {
|
|
59
|
+
const score = this.calculateMatchScore(user.Name, lowerQuery);
|
|
60
|
+
if (score > 0 || !lowerQuery) {
|
|
61
|
+
suggestions.push({
|
|
62
|
+
type: 'user',
|
|
63
|
+
id: user.ID,
|
|
64
|
+
name: user.Name,
|
|
65
|
+
displayName: user.Name,
|
|
66
|
+
description: user.Email || undefined,
|
|
67
|
+
avatarUrl: undefined // Future: load user avatars
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Sort by relevance: exact match > starts with > contains
|
|
73
|
+
return suggestions.sort((a, b) => {
|
|
74
|
+
const scoreA = this.calculateMatchScore(a.name, lowerQuery);
|
|
75
|
+
const scoreB = this.calculateMatchScore(b.name, lowerQuery);
|
|
76
|
+
if (scoreB !== scoreA)
|
|
77
|
+
return scoreB - scoreA;
|
|
78
|
+
// If scores are equal, sort agents before users
|
|
79
|
+
if (a.type !== b.type)
|
|
80
|
+
return a.type === 'agent' ? -1 : 1;
|
|
81
|
+
// Otherwise alphabetically
|
|
82
|
+
return a.name.localeCompare(b.name);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Calculate match score for ranking
|
|
87
|
+
* Higher score = better match
|
|
88
|
+
*/
|
|
89
|
+
calculateMatchScore(name, query) {
|
|
90
|
+
if (!query)
|
|
91
|
+
return 1; // Show all if no query
|
|
92
|
+
const lowerName = name.toLowerCase();
|
|
93
|
+
const lowerQuery = query.toLowerCase();
|
|
94
|
+
// Exact match
|
|
95
|
+
if (lowerName === lowerQuery)
|
|
96
|
+
return 100;
|
|
97
|
+
// Starts with
|
|
98
|
+
if (lowerName.startsWith(lowerQuery))
|
|
99
|
+
return 50;
|
|
100
|
+
// Contains
|
|
101
|
+
if (lowerName.includes(lowerQuery))
|
|
102
|
+
return 25;
|
|
103
|
+
// Word boundary match (e.g., "MA" matches "Marketing Agent")
|
|
104
|
+
const words = lowerName.split(/\s+/);
|
|
105
|
+
for (const word of words) {
|
|
106
|
+
if (word.startsWith(lowerQuery))
|
|
107
|
+
return 40;
|
|
108
|
+
}
|
|
109
|
+
return 0; // No match
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get icon for agent based on type/name
|
|
113
|
+
*/
|
|
114
|
+
getAgentIcon(agent) {
|
|
115
|
+
// Use agent's icon if available, otherwise default based on type
|
|
116
|
+
if (agent.IconClass)
|
|
117
|
+
return agent.IconClass;
|
|
118
|
+
// Default icons based on agent name patterns
|
|
119
|
+
const name = agent.Name?.toLowerCase() || '';
|
|
120
|
+
if (name.includes('marketing'))
|
|
121
|
+
return 'fa-megaphone';
|
|
122
|
+
if (name.includes('data') || name.includes('analysis'))
|
|
123
|
+
return 'fa-chart-line';
|
|
124
|
+
if (name.includes('code') || name.includes('developer'))
|
|
125
|
+
return 'fa-code';
|
|
126
|
+
if (name.includes('design'))
|
|
127
|
+
return 'fa-palette';
|
|
128
|
+
if (name.includes('conversation') || name.includes('manager'))
|
|
129
|
+
return 'fa-comments';
|
|
130
|
+
return 'fa-robot'; // Default
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get available agents for parsing
|
|
134
|
+
*/
|
|
135
|
+
getAvailableAgents() {
|
|
136
|
+
return this.agentsCache;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get available users for parsing
|
|
140
|
+
*/
|
|
141
|
+
getAvailableUsers() {
|
|
142
|
+
return this.usersCache;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Refresh the caches
|
|
146
|
+
*/
|
|
147
|
+
async refresh(currentUser) {
|
|
148
|
+
this.isInitialized = false;
|
|
149
|
+
await this.initialize(currentUser);
|
|
150
|
+
}
|
|
151
|
+
static ɵfac = function MentionAutocompleteService_Factory(t) { return new (t || MentionAutocompleteService)(); };
|
|
152
|
+
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MentionAutocompleteService, factory: MentionAutocompleteService.ɵfac, providedIn: 'root' });
|
|
153
|
+
}
|
|
154
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MentionAutocompleteService, [{
|
|
155
|
+
type: Injectable,
|
|
156
|
+
args: [{
|
|
157
|
+
providedIn: 'root'
|
|
158
|
+
}]
|
|
159
|
+
}], () => [], null); })();
|
|
160
|
+
//# sourceMappingURL=mention-autocomplete.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mention-autocomplete.service.js","sourceRoot":"","sources":["../../../src/lib/services/mention-autocomplete.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Mention, MentionParseResult } from '../models/conversation-state.model';
|
|
2
|
+
import { AIAgentEntityExtended } from '@memberjunction/core-entities';
|
|
3
|
+
import { UserInfo } from '@memberjunction/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Service for parsing @mentions from message text
|
|
7
|
+
*/
|
|
8
|
+
export declare class MentionParserService {
|
|
9
|
+
private readonly MENTION_REGEX;
|
|
10
|
+
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* Parse mentions from message text
|
|
13
|
+
* @param text The message text to parse
|
|
14
|
+
* @param availableAgents List of available agents for matching
|
|
15
|
+
* @param availableUsers List of available users for matching (optional)
|
|
16
|
+
* @returns Parsed mentions with agent and user separation
|
|
17
|
+
*/
|
|
18
|
+
parseMentions(text: string, availableAgents: AIAgentEntityExtended[], availableUsers?: UserInfo[]): MentionParseResult;
|
|
19
|
+
/**
|
|
20
|
+
* Find an agent by name (case-insensitive)
|
|
21
|
+
* Uses exact match or starts-with match (no contains match to avoid ambiguity)
|
|
22
|
+
*/
|
|
23
|
+
private findAgent;
|
|
24
|
+
/**
|
|
25
|
+
* Find a user by name (case-insensitive)
|
|
26
|
+
* Uses exact match, email match, or starts-with match (no contains match to avoid ambiguity)
|
|
27
|
+
*/
|
|
28
|
+
private findUser;
|
|
29
|
+
/**
|
|
30
|
+
* Validate mentions - check if all mentions are valid
|
|
31
|
+
* Returns array of invalid mention names
|
|
32
|
+
*/
|
|
33
|
+
validateMentions(text: string, availableAgents: AIAgentEntityExtended[], availableUsers?: UserInfo[]): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Extract all mention names from text (raw strings)
|
|
36
|
+
*/
|
|
37
|
+
extractMentionNames(text: string): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Replace mentions in text with formatted versions
|
|
40
|
+
* Example: "@agent" -> "@Agent Name" (with proper casing)
|
|
41
|
+
*/
|
|
42
|
+
formatMentions(text: string, mentions: Mention[]): string;
|
|
43
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MentionParserService, never>;
|
|
44
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<MentionParserService>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=mention-parser.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mention-parser.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/mention-parser.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;;AAEhD;;GAEG;AACH,qBAGa,oBAAoB;IAE/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;;IAItD;;;;;;OAMG;IACH,aAAa,CACX,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,qBAAqB,EAAE,EACxC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAC1B,kBAAkB;IA4CrB;;;OAGG;IACH,OAAO,CAAC,SAAS;IA8BjB;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAkBhB;;;OAGG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,qBAAqB,EAAE,EACxC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAC1B,MAAM,EAAE;IAmBX;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAK3C;;;OAGG;IACH,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EAAE,GAClB,MAAM;yCA/JE,oBAAoB;6CAApB,oBAAoB;CAgLhC"}
|