@memori.ai/memori-react 8.8.5 → 8.9.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/CHANGELOG.md +38 -0
- package/README.md +28 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +0 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +0 -10
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js +0 -9
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js.map +1 -1
- package/dist/components/Chat/Chat.css +31 -0
- package/dist/components/Chat/Chat.js +18 -4
- package/dist/components/Chat/Chat.js.map +1 -1
- package/dist/components/ChatBubble/ChatBubble.js +1 -2
- package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
- package/dist/components/ChatInputs/ChatInputs.css +23 -0
- package/dist/components/ChatInputs/ChatInputs.d.ts +1 -0
- package/dist/components/ChatInputs/ChatInputs.js +37 -21
- package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
- package/dist/components/ChatTextArea/ChatTextArea.css +31 -0
- package/dist/components/ChatTextArea/ChatTextArea.d.ts +1 -0
- package/dist/components/ChatTextArea/ChatTextArea.js +9 -2
- package/dist/components/ChatTextArea/ChatTextArea.js.map +1 -1
- package/dist/components/FilePreview/FilePreview.css +39 -0
- package/dist/components/Header/Header.js +3 -16
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/MediaWidget/LinkItemWidget.js +1 -1
- package/dist/components/MediaWidget/LinkItemWidget.js.map +1 -1
- package/dist/components/MediaWidget/MediaItemWidget.js +5 -9
- package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
- package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +65 -51
- package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
- package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.d.ts +5 -0
- package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js +287 -0
- package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -0
- package/dist/components/MemoriWidget/MemoriWidget.d.ts +12 -0
- package/dist/components/MemoriWidget/MemoriWidget.js +12 -3
- package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/dist/components/Snippet/Snippet.js +4 -3
- package/dist/components/Snippet/Snippet.js.map +1 -1
- package/dist/components/StartPanel/StartPanel.css +14 -0
- package/dist/components/StartPanel/StartPanel.js +2 -2
- package/dist/components/StartPanel/StartPanel.js.map +1 -1
- package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +0 -21
- package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
- package/dist/components/VenueWidget/VenueWidget.js +0 -1
- package/dist/components/VenueWidget/VenueWidget.js.map +1 -1
- package/dist/components/layouts/HiddenChat.js +0 -15
- package/dist/components/layouts/HiddenChat.js.map +1 -1
- package/dist/components/layouts/chat.css +2 -2
- package/dist/context/visemeContext.js +0 -6
- package/dist/context/visemeContext.js.map +1 -1
- package/dist/helpers/constants.d.ts +11 -0
- package/dist/helpers/constants.js +24 -2
- package/dist/helpers/constants.js.map +1 -1
- package/dist/helpers/tts/useTTS.js +0 -3
- package/dist/helpers/tts/useTTS.js.map +1 -1
- package/dist/helpers/utils.d.ts +1 -0
- package/dist/helpers/utils.js +6 -1
- package/dist/helpers/utils.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/locales/de.json +2 -0
- package/dist/locales/en.json +2 -0
- package/dist/locales/es.json +2 -0
- package/dist/locales/fr.json +2 -0
- package/dist/locales/it.json +2 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +0 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +0 -10
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js +0 -9
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js.map +1 -1
- package/esm/components/Chat/Chat.css +31 -0
- package/esm/components/Chat/Chat.js +19 -5
- package/esm/components/Chat/Chat.js.map +1 -1
- package/esm/components/ChatBubble/ChatBubble.js +1 -2
- package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
- package/esm/components/ChatInputs/ChatInputs.css +23 -0
- package/esm/components/ChatInputs/ChatInputs.d.ts +1 -0
- package/esm/components/ChatInputs/ChatInputs.js +37 -21
- package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
- package/esm/components/ChatTextArea/ChatTextArea.css +31 -0
- package/esm/components/ChatTextArea/ChatTextArea.d.ts +1 -0
- package/esm/components/ChatTextArea/ChatTextArea.js +9 -2
- package/esm/components/ChatTextArea/ChatTextArea.js.map +1 -1
- package/esm/components/FilePreview/FilePreview.css +39 -0
- package/esm/components/Header/Header.js +3 -16
- package/esm/components/Header/Header.js.map +1 -1
- package/esm/components/MediaWidget/LinkItemWidget.js +1 -1
- package/esm/components/MediaWidget/LinkItemWidget.js.map +1 -1
- package/esm/components/MediaWidget/MediaItemWidget.js +5 -9
- package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
- package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +65 -51
- package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
- package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.d.ts +5 -0
- package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js +282 -0
- package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -0
- package/esm/components/MemoriWidget/MemoriWidget.d.ts +12 -0
- package/esm/components/MemoriWidget/MemoriWidget.js +12 -3
- package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/esm/components/Snippet/Snippet.js +4 -3
- package/esm/components/Snippet/Snippet.js.map +1 -1
- package/esm/components/StartPanel/StartPanel.css +14 -0
- package/esm/components/StartPanel/StartPanel.js +3 -3
- package/esm/components/StartPanel/StartPanel.js.map +1 -1
- package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +0 -21
- package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
- package/esm/components/VenueWidget/VenueWidget.js +0 -1
- package/esm/components/VenueWidget/VenueWidget.js.map +1 -1
- package/esm/components/layouts/HiddenChat.js +0 -15
- package/esm/components/layouts/HiddenChat.js.map +1 -1
- package/esm/components/layouts/chat.css +2 -2
- package/esm/context/visemeContext.js +0 -6
- package/esm/context/visemeContext.js.map +1 -1
- package/esm/helpers/constants.d.ts +11 -0
- package/esm/helpers/constants.js +22 -1
- package/esm/helpers/constants.js.map +1 -1
- package/esm/helpers/tts/useTTS.js +0 -3
- package/esm/helpers/tts/useTTS.js.map +1 -1
- package/esm/helpers/utils.d.ts +1 -0
- package/esm/helpers/utils.js +4 -0
- package/esm/helpers/utils.js.map +1 -1
- package/esm/index.js.map +1 -1
- package/esm/locales/de.json +2 -0
- package/esm/locales/en.json +2 -0
- package/esm/locales/es.json +2 -0
- package/esm/locales/fr.json +2 -0
- package/esm/locales/it.json +2 -0
- package/package.json +1 -1
- package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +0 -1
- package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +0 -17
- package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.ts +0 -20
- package/src/components/Chat/Chat.css +31 -0
- package/src/components/Chat/Chat.stories.tsx +503 -9
- package/src/components/Chat/Chat.tsx +23 -3
- package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +73 -73
- package/src/components/ChatBubble/ChatBubble.tsx +1 -2
- package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +25 -25
- package/src/components/ChatInputs/ChatInputs.css +23 -0
- package/src/components/ChatInputs/ChatInputs.tsx +36 -14
- package/src/components/ChatTextArea/ChatTextArea.css +31 -0
- package/src/components/ChatTextArea/ChatTextArea.tsx +11 -1
- package/src/components/FilePreview/FilePreview.css +39 -0
- package/src/components/Header/Header.tsx +0 -13
- package/src/components/MediaWidget/LinkItemWidget.tsx +1 -1
- package/src/components/MediaWidget/MediaItemWidget.stories.tsx +33 -0
- package/src/components/MediaWidget/MediaItemWidget.tsx +7 -10
- package/src/components/MediaWidget/__snapshots__/LinkItemWidget.test.tsx.snap +4 -4
- package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +6 -6
- package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +2 -2
- package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +766 -2
- package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +103 -89
- package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +307 -0
- package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.tsx +373 -0
- package/src/components/MemoriWidget/MemoriWidget.tsx +26 -4
- package/src/components/Snippet/Snippet.tsx +3 -2
- package/src/components/StartPanel/StartPanel.css +14 -0
- package/src/components/StartPanel/StartPanel.tsx +23 -10
- package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +206 -84
- package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +0 -23
- package/src/components/VenueWidget/VenueWidget.tsx +0 -1
- package/src/components/layouts/HiddenChat.tsx +0 -16
- package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +204 -82
- package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +408 -164
- package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +204 -82
- package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +204 -82
- package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +204 -82
- package/src/components/layouts/chat.css +2 -2
- package/src/context/visemeContext.tsx +0 -7
- package/src/helpers/constants.ts +28 -3
- package/src/helpers/tts/useTTS.ts +0 -2
- package/src/helpers/utils.ts +5 -0
- package/src/index.tsx +0 -1
- package/src/locales/de.json +2 -0
- package/src/locales/en.json +2 -0
- package/src/locales/es.json +2 -0
- package/src/locales/fr.json +2 -0
- package/src/locales/it.json +2 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect,
|
|
2
|
+
import React, { useEffect, useMemo, useCallback, memo } from 'react';
|
|
3
3
|
import { useArtifact } from '../../context/ArtifactContext';
|
|
4
4
|
import ChevronRight from '../../../icons/ChevronRight';
|
|
5
5
|
import ArtifactDrawer from '../ArtifactDrawer/ArtifactDrawer';
|
|
@@ -8,9 +8,8 @@ import ChevronLeft from '../../../icons/ChevronLeft';
|
|
|
8
8
|
import ChevronUp from '../../../icons/ChevronUp';
|
|
9
9
|
import { stripReasoningTags } from '../../../../helpers/utils';
|
|
10
10
|
const ArtifactHandler = ({ isChatlogPanel = false, message, }) => {
|
|
11
|
-
var _a
|
|
11
|
+
var _a;
|
|
12
12
|
const { openArtifact, state, closeArtifact } = useArtifact();
|
|
13
|
-
const [currentArtifact, setCurrentArtifact] = useState(null);
|
|
14
13
|
const messageText = useMemo(() => {
|
|
15
14
|
return message.translatedText || message.text || '';
|
|
16
15
|
}, [message.translatedText, message.text]);
|
|
@@ -27,9 +26,7 @@ const ArtifactHandler = ({ isChatlogPanel = false, message, }) => {
|
|
|
27
26
|
document.dispatchEvent(event);
|
|
28
27
|
}, [message]);
|
|
29
28
|
const detectArtifacts = useCallback((text, isFromUser) => {
|
|
30
|
-
console.log('Detecting artifacts from text:', (text === null || text === void 0 ? void 0 : text.substring(0, 100)) + '...');
|
|
31
29
|
if (!text || isFromUser) {
|
|
32
|
-
console.log('No text or message is from user, returning empty array');
|
|
33
30
|
return [];
|
|
34
31
|
}
|
|
35
32
|
text = stripReasoningTags(text);
|
|
@@ -39,40 +36,34 @@ const ArtifactHandler = ({ isChatlogPanel = false, message, }) => {
|
|
|
39
36
|
dataTitle: /data-title\s*=\s*["\']([^"']+)["\']/i,
|
|
40
37
|
htmlTitle: /<title>([^<]+)<\/title>/gi
|
|
41
38
|
};
|
|
42
|
-
const findTitle = (mimeType, content) => {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
const findTitle = (mimeType, content, outputTag) => {
|
|
40
|
+
const dataTitleMatch = outputTag.match(/data-title\s*=\s*["\']([^"']+)["\']/i);
|
|
41
|
+
if (dataTitleMatch) {
|
|
42
|
+
return dataTitleMatch[1];
|
|
43
|
+
}
|
|
44
|
+
const htmlTitleMatch = content.match(/<title>([^<]+)<\/title>/i);
|
|
45
|
+
if (htmlTitleMatch) {
|
|
46
|
+
return htmlTitleMatch[1];
|
|
47
|
+
}
|
|
48
|
+
return `${mimeType.toUpperCase()} Artifact`;
|
|
46
49
|
};
|
|
47
50
|
let match;
|
|
51
|
+
let artifactNum = 0;
|
|
48
52
|
while ((match = artifactRegex.exec(text)) !== null) {
|
|
49
|
-
|
|
53
|
+
artifactNum++;
|
|
50
54
|
const mimeType = match[1];
|
|
51
55
|
const content = match[2].trim();
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
};
|
|
63
|
-
console.log('Created artifact:', {
|
|
64
|
-
id: artifact.id,
|
|
65
|
-
mimeType: artifact.mimeType,
|
|
66
|
-
title: artifact.title,
|
|
67
|
-
size: artifact.size
|
|
68
|
-
});
|
|
69
|
-
artifacts.push(artifact);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
console.log('Skipping artifact - content too short');
|
|
73
|
-
}
|
|
56
|
+
const outputTag = match[0];
|
|
57
|
+
const artifact = {
|
|
58
|
+
id: `artifact-${Date.now()}-${artifactNum}-${Math.random().toString(36).substr(2, 9)}`,
|
|
59
|
+
content,
|
|
60
|
+
mimeType,
|
|
61
|
+
title: findTitle(mimeType, content, outputTag),
|
|
62
|
+
timestamp: new Date(),
|
|
63
|
+
size: content.length,
|
|
64
|
+
};
|
|
65
|
+
artifacts.push(artifact);
|
|
74
66
|
}
|
|
75
|
-
console.log('Detected artifacts:', artifacts.length);
|
|
76
67
|
return artifacts;
|
|
77
68
|
}, []);
|
|
78
69
|
const artifacts = useMemo(() => {
|
|
@@ -83,32 +74,55 @@ const ArtifactHandler = ({ isChatlogPanel = false, message, }) => {
|
|
|
83
74
|
artifacts.forEach(artifact => {
|
|
84
75
|
dispatchArtifactCreatedEvent(artifact);
|
|
85
76
|
});
|
|
86
|
-
if (isChatlogPanel) {
|
|
87
|
-
setCurrentArtifact(artifacts[0]);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
77
|
+
if (!isChatlogPanel) {
|
|
90
78
|
setTimeout(() => {
|
|
91
79
|
openArtifact(artifacts[0]);
|
|
92
|
-
setCurrentArtifact(artifacts[0]);
|
|
93
80
|
}, 100);
|
|
94
81
|
}
|
|
95
82
|
}
|
|
96
83
|
}, [messageId, artifacts, dispatchArtifactCreatedEvent, isChatlogPanel, openArtifact]);
|
|
84
|
+
const handleArtifactClick = useCallback((artifact) => {
|
|
85
|
+
var _a;
|
|
86
|
+
if (state.isDrawerOpen &&
|
|
87
|
+
((_a = state.currentArtifact) === null || _a === void 0 ? void 0 : _a.id) === artifact.id) {
|
|
88
|
+
closeArtifact();
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
openArtifact(artifact);
|
|
92
|
+
}
|
|
93
|
+
}, [state.isDrawerOpen, (_a = state.currentArtifact) === null || _a === void 0 ? void 0 : _a.id, closeArtifact, openArtifact]);
|
|
94
|
+
const getIconForMimeType = useCallback((mimeType) => {
|
|
95
|
+
if (mimeType.includes('html'))
|
|
96
|
+
return '🌐';
|
|
97
|
+
if (mimeType.includes('markdown'))
|
|
98
|
+
return '📝';
|
|
99
|
+
if (mimeType.includes('javascript') || mimeType.includes('typescript'))
|
|
100
|
+
return '📜';
|
|
101
|
+
if (mimeType.includes('python'))
|
|
102
|
+
return '🐍';
|
|
103
|
+
if (mimeType.includes('json'))
|
|
104
|
+
return '📊';
|
|
105
|
+
if (mimeType.includes('css'))
|
|
106
|
+
return '🎨';
|
|
107
|
+
if (mimeType.includes('xml'))
|
|
108
|
+
return '📋';
|
|
109
|
+
if (mimeType.includes('svg'))
|
|
110
|
+
return '🖼️';
|
|
111
|
+
return '📄';
|
|
112
|
+
}, []);
|
|
97
113
|
if (artifacts.length === 0)
|
|
98
114
|
return null;
|
|
99
|
-
return (
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
((_b = state.currentArtifact) === null || _b === void 0 ? void 0 : _b.id) === (currentArtifact === null || currentArtifact === void 0 ? void 0 : currentArtifact.id) ? (_jsx(ChevronLeft, { className: "memori-artifact-handler-action-icon" })) : (_jsx(ChevronRight, { className: "memori-artifact-handler-action-icon" })) })] }, currentArtifact === null || currentArtifact === void 0 ? void 0 : currentArtifact.id), state.isDrawerOpen &&
|
|
111
|
-
((_c = state.currentArtifact) === null || _c === void 0 ? void 0 : _c.id) === (currentArtifact === null || currentArtifact === void 0 ? void 0 : currentArtifact.id) && (_jsx(ArtifactDrawer, { isChatLogPanel: isChatlogPanel }))] }));
|
|
115
|
+
return (_jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: artifacts.map((artifact) => {
|
|
116
|
+
var _a, _b, _c, _d;
|
|
117
|
+
const isSelected = state.isDrawerOpen && ((_a = state.currentArtifact) === null || _a === void 0 ? void 0 : _a.id) === artifact.id;
|
|
118
|
+
return (_jsxs(React.Fragment, { children: [_jsxs("div", { className: `memori-artifact-handler${isSelected ? ' memori-artifact-handler--selected' : ''}`, onClick: () => handleArtifactClick(artifact), style: isSelected ? {
|
|
119
|
+
border: '2px solid var(--memori-primary, #3b82f6)',
|
|
120
|
+
boxShadow: '0 0 0 3px rgba(59, 130, 246, 0.1)',
|
|
121
|
+
} : undefined, children: [_jsx("div", { className: "memori-artifact-handler-icon", children: getIconForMimeType(artifact.mimeType) }), _jsxs("div", { className: "memori-artifact-handler-info", children: [_jsx("div", { className: "memori-artifact-handler-title", children: artifact.title }), _jsxs("div", { className: "memori-artifact-handler-meta", children: [artifact.mimeType, " \u2022", ' ', formatBytes(artifact.size || 0)] })] }), _jsx("div", { className: "memori-artifact-handler-action", children: isChatlogPanel ? (state.isDrawerOpen &&
|
|
122
|
+
((_b = state.currentArtifact) === null || _b === void 0 ? void 0 : _b.id) === artifact.id ? (_jsx(ChevronUp, { className: "memori-artifact-handler-action-icon" })) : (_jsx(ChevronDown, { className: "memori-artifact-handler-action-icon" }))) : state.isDrawerOpen &&
|
|
123
|
+
((_c = state.currentArtifact) === null || _c === void 0 ? void 0 : _c.id) === artifact.id ? (_jsx(ChevronLeft, { className: "memori-artifact-handler-action-icon" })) : (_jsx(ChevronRight, { className: "memori-artifact-handler-action-icon" })) })] }), state.isDrawerOpen &&
|
|
124
|
+
((_d = state.currentArtifact) === null || _d === void 0 ? void 0 : _d.id) === artifact.id && (_jsx(ArtifactDrawer, { isChatLogPanel: isChatlogPanel }))] }, artifact.id));
|
|
125
|
+
}) }));
|
|
112
126
|
};
|
|
113
127
|
const formatBytes = (bytes) => {
|
|
114
128
|
if (bytes === 0)
|
package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArtifactHandler.js","sourceRoot":"","sources":["../../../../../src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"ArtifactHandler.js","sourceRoot":"","sources":["../../../../../src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
import { useArtifact } from '../context/ArtifactContext';
|
|
3
|
+
const pendingCalls = [];
|
|
4
|
+
let isReady = false;
|
|
5
|
+
export const initMemoriArtifactAPI = () => {
|
|
6
|
+
if (typeof window === 'undefined')
|
|
7
|
+
return;
|
|
8
|
+
if (window.MemoriArtifactAPI) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
window.MemoriArtifactAPI = {
|
|
12
|
+
_isReady: () => isReady,
|
|
13
|
+
_setReady: (ready) => { isReady = ready; },
|
|
14
|
+
_getPendingCalls: () => pendingCalls,
|
|
15
|
+
_clearPendingCalls: () => { pendingCalls.length = 0; },
|
|
16
|
+
openArtifact: (artifact) => {
|
|
17
|
+
if (!isReady) {
|
|
18
|
+
pendingCalls.push({ method: 'openArtifact', args: [artifact] });
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
createAndOpenArtifact: (content, mimeType, title) => {
|
|
22
|
+
if (!isReady) {
|
|
23
|
+
pendingCalls.push({ method: 'createAndOpenArtifact', args: [content, mimeType, title] });
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
createFromOutputElement: (outputElement) => {
|
|
27
|
+
if (!isReady) {
|
|
28
|
+
pendingCalls.push({ method: 'createFromOutputElement', args: [outputElement] });
|
|
29
|
+
return 'pending';
|
|
30
|
+
}
|
|
31
|
+
return 'not-ready';
|
|
32
|
+
},
|
|
33
|
+
closeArtifact: () => {
|
|
34
|
+
if (!isReady) {
|
|
35
|
+
pendingCalls.push({ method: 'closeArtifact', args: [] });
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
toggleFullscreen: () => {
|
|
39
|
+
if (!isReady) {
|
|
40
|
+
pendingCalls.push({ method: 'toggleFullscreen', args: [] });
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
getState: () => {
|
|
44
|
+
if (!isReady) {
|
|
45
|
+
return { currentArtifact: null, isDrawerOpen: false, isFullscreen: false };
|
|
46
|
+
}
|
|
47
|
+
return { currentArtifact: null, isDrawerOpen: false, isFullscreen: false };
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
initMemoriArtifactAPI();
|
|
52
|
+
export const ArtifactAPIBridge = ({ pushMessage, }) => {
|
|
53
|
+
const { openArtifact, closeArtifact, toggleFullscreen, state } = useArtifact();
|
|
54
|
+
const apiRef = useRef(null);
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (typeof window !== 'undefined') {
|
|
57
|
+
const windowApi = window.MemoriArtifactAPI;
|
|
58
|
+
apiRef.current = {
|
|
59
|
+
openArtifact: (artifact) => {
|
|
60
|
+
openArtifact(artifact);
|
|
61
|
+
},
|
|
62
|
+
createAndOpenArtifact: (content, mimeType = 'html', title) => {
|
|
63
|
+
const autoTitle = title || getTitleFromMimeType(mimeType);
|
|
64
|
+
const artifact = {
|
|
65
|
+
id: `artifact-${Date.now()}-${Math.random()
|
|
66
|
+
.toString(36)
|
|
67
|
+
.substr(2, 9)}`,
|
|
68
|
+
content,
|
|
69
|
+
mimeType,
|
|
70
|
+
title: autoTitle,
|
|
71
|
+
timestamp: new Date(),
|
|
72
|
+
size: content.length,
|
|
73
|
+
};
|
|
74
|
+
let messageText = content;
|
|
75
|
+
if (!messageText.includes('<output class="memori-artifact">')) {
|
|
76
|
+
messageText = `<output class="memori-artifact" data-mimetype="${mimeType}" data-title="${autoTitle}">${content}</output>`;
|
|
77
|
+
}
|
|
78
|
+
pushMessage({
|
|
79
|
+
text: messageText,
|
|
80
|
+
timestamp: new Date().toISOString(),
|
|
81
|
+
fromUser: false,
|
|
82
|
+
media: [],
|
|
83
|
+
initial: false,
|
|
84
|
+
translatedText: undefined,
|
|
85
|
+
questionAnswered: undefined,
|
|
86
|
+
generatedByAI: false,
|
|
87
|
+
contextVars: undefined,
|
|
88
|
+
date: undefined,
|
|
89
|
+
placeName: undefined,
|
|
90
|
+
placeLatitude: undefined,
|
|
91
|
+
placeLongitude: undefined,
|
|
92
|
+
placeUncertaintyKm: undefined,
|
|
93
|
+
});
|
|
94
|
+
openArtifact(artifact);
|
|
95
|
+
},
|
|
96
|
+
createFromOutputElement: (outputElement) => {
|
|
97
|
+
const content = outputElement.innerHTML;
|
|
98
|
+
const mimeType = outputElement.getAttribute('data-mimetype') || 'html';
|
|
99
|
+
const title = outputElement.getAttribute('data-title') ||
|
|
100
|
+
getTitleFromMimeType(mimeType);
|
|
101
|
+
outputElement.style.display = 'none';
|
|
102
|
+
outputElement.setAttribute('data-memori-processed', 'true');
|
|
103
|
+
const artifact = {
|
|
104
|
+
id: `artifact-${Date.now()}-${Math.random()
|
|
105
|
+
.toString(36)
|
|
106
|
+
.substr(2, 9)}`,
|
|
107
|
+
content,
|
|
108
|
+
mimeType,
|
|
109
|
+
title,
|
|
110
|
+
timestamp: new Date(),
|
|
111
|
+
size: content.length,
|
|
112
|
+
};
|
|
113
|
+
let messageText = content;
|
|
114
|
+
if (!messageText.includes('<output class="memori-artifact">')) {
|
|
115
|
+
messageText = `<output class="memori-artifact" data-mimetype="${mimeType}" data-title="${title}">${content}</output>`;
|
|
116
|
+
}
|
|
117
|
+
pushMessage({
|
|
118
|
+
text: messageText,
|
|
119
|
+
timestamp: new Date().toISOString(),
|
|
120
|
+
fromUser: false,
|
|
121
|
+
media: [],
|
|
122
|
+
initial: false,
|
|
123
|
+
translatedText: undefined,
|
|
124
|
+
questionAnswered: undefined,
|
|
125
|
+
generatedByAI: false,
|
|
126
|
+
contextVars: undefined,
|
|
127
|
+
date: undefined,
|
|
128
|
+
placeName: undefined,
|
|
129
|
+
placeLatitude: undefined,
|
|
130
|
+
placeLongitude: undefined,
|
|
131
|
+
placeUncertaintyKm: undefined,
|
|
132
|
+
});
|
|
133
|
+
openArtifact(artifact);
|
|
134
|
+
return artifact.id;
|
|
135
|
+
},
|
|
136
|
+
closeArtifact: () => {
|
|
137
|
+
closeArtifact();
|
|
138
|
+
},
|
|
139
|
+
toggleFullscreen: () => {
|
|
140
|
+
toggleFullscreen();
|
|
141
|
+
},
|
|
142
|
+
getState: () => {
|
|
143
|
+
return {
|
|
144
|
+
currentArtifact: state.currentArtifact,
|
|
145
|
+
isDrawerOpen: state.isDrawerOpen,
|
|
146
|
+
isFullscreen: state.isFullscreen,
|
|
147
|
+
};
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
if (windowApi) {
|
|
151
|
+
windowApi.openArtifact = apiRef.current.openArtifact;
|
|
152
|
+
windowApi.createAndOpenArtifact = apiRef.current.createAndOpenArtifact;
|
|
153
|
+
windowApi.createFromOutputElement = apiRef.current.createFromOutputElement;
|
|
154
|
+
windowApi.closeArtifact = apiRef.current.closeArtifact;
|
|
155
|
+
windowApi.toggleFullscreen = apiRef.current.toggleFullscreen;
|
|
156
|
+
windowApi.getState = apiRef.current.getState;
|
|
157
|
+
windowApi._setReady(true);
|
|
158
|
+
const pendingCalls = windowApi._getPendingCalls();
|
|
159
|
+
if (pendingCalls.length > 0) {
|
|
160
|
+
pendingCalls.forEach((call) => {
|
|
161
|
+
try {
|
|
162
|
+
const method = apiRef.current[call.method];
|
|
163
|
+
if (method) {
|
|
164
|
+
method(...call.args);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
windowApi._clearPendingCalls();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
window.MemoriArtifactAPI = {
|
|
175
|
+
...apiRef.current,
|
|
176
|
+
_isReady: true,
|
|
177
|
+
_pendingCalls: [],
|
|
178
|
+
_setReady: (ready) => {
|
|
179
|
+
window.MemoriArtifactAPI._isReady = ready;
|
|
180
|
+
},
|
|
181
|
+
_getPendingCalls: () => {
|
|
182
|
+
return window.MemoriArtifactAPI._pendingCalls;
|
|
183
|
+
},
|
|
184
|
+
_clearPendingCalls: () => {
|
|
185
|
+
window.MemoriArtifactAPI._pendingCalls = [];
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return () => {
|
|
191
|
+
if (typeof window !== 'undefined') {
|
|
192
|
+
delete window.MemoriArtifactAPI;
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
}, [openArtifact, closeArtifact, toggleFullscreen, state, pushMessage]);
|
|
196
|
+
return null;
|
|
197
|
+
};
|
|
198
|
+
function getTitleFromMimeType(mimeType) {
|
|
199
|
+
if (mimeType.includes('html'))
|
|
200
|
+
return 'HTML Document';
|
|
201
|
+
if (mimeType.includes('markdown'))
|
|
202
|
+
return 'Markdown Document';
|
|
203
|
+
if (mimeType.includes('javascript'))
|
|
204
|
+
return 'JavaScript Code';
|
|
205
|
+
if (mimeType.includes('python'))
|
|
206
|
+
return 'Python Code';
|
|
207
|
+
if (mimeType.includes('json'))
|
|
208
|
+
return 'JSON Data';
|
|
209
|
+
if (mimeType.includes('css'))
|
|
210
|
+
return 'CSS Stylesheet';
|
|
211
|
+
if (mimeType.includes('typescript'))
|
|
212
|
+
return 'TypeScript Code';
|
|
213
|
+
if (mimeType.includes('xml'))
|
|
214
|
+
return 'XML Document';
|
|
215
|
+
if (mimeType.includes('svg'))
|
|
216
|
+
return 'SVG Image';
|
|
217
|
+
return 'Document';
|
|
218
|
+
}
|
|
219
|
+
function createArtifactHandler(content, mimeType, title) {
|
|
220
|
+
const handler = document.createElement('div');
|
|
221
|
+
handler.className = 'memori-artifact-handler';
|
|
222
|
+
handler.style.cssText = `
|
|
223
|
+
display: flex;
|
|
224
|
+
align-items: center;
|
|
225
|
+
gap: 12px;
|
|
226
|
+
padding: 16px;
|
|
227
|
+
margin: 12px 0;
|
|
228
|
+
background: white;
|
|
229
|
+
border: 1px solid #e5e7eb;
|
|
230
|
+
border-radius: 12px;
|
|
231
|
+
cursor: pointer;
|
|
232
|
+
transition: all 0.2s ease;
|
|
233
|
+
`;
|
|
234
|
+
const icon = getIconForMimeType(mimeType);
|
|
235
|
+
const size = `${(content.length / 1024).toFixed(1)} KB`;
|
|
236
|
+
handler.innerHTML = `
|
|
237
|
+
<div style="font-size: 32px;">${icon}</div>
|
|
238
|
+
<div style="flex: 1;">
|
|
239
|
+
<div style="font-weight: 600; margin-bottom: 4px;">${escapeHtml(title)}</div>
|
|
240
|
+
<div style="font-size: 13px; color: #6b7280;">${mimeType} • ${size}</div>
|
|
241
|
+
</div>
|
|
242
|
+
<div>
|
|
243
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
244
|
+
<polyline points="9 18 15 12 9 6"></polyline>
|
|
245
|
+
</svg>
|
|
246
|
+
</div>
|
|
247
|
+
`;
|
|
248
|
+
handler.addEventListener('mouseenter', () => {
|
|
249
|
+
handler.style.background = '#faf5ff';
|
|
250
|
+
handler.style.borderColor = '#9333ea';
|
|
251
|
+
});
|
|
252
|
+
handler.addEventListener('mouseleave', () => {
|
|
253
|
+
handler.style.background = 'white';
|
|
254
|
+
handler.style.borderColor = '#e5e7eb';
|
|
255
|
+
});
|
|
256
|
+
return handler;
|
|
257
|
+
}
|
|
258
|
+
function getIconForMimeType(mimeType) {
|
|
259
|
+
if (mimeType.includes('html'))
|
|
260
|
+
return '🌐';
|
|
261
|
+
if (mimeType.includes('markdown'))
|
|
262
|
+
return '📝';
|
|
263
|
+
if (mimeType.includes('javascript') || mimeType.includes('typescript'))
|
|
264
|
+
return '📜';
|
|
265
|
+
if (mimeType.includes('python'))
|
|
266
|
+
return '🐍';
|
|
267
|
+
if (mimeType.includes('json'))
|
|
268
|
+
return '📊';
|
|
269
|
+
if (mimeType.includes('css'))
|
|
270
|
+
return '🎨';
|
|
271
|
+
if (mimeType.includes('xml'))
|
|
272
|
+
return '📋';
|
|
273
|
+
if (mimeType.includes('svg'))
|
|
274
|
+
return '🖼️';
|
|
275
|
+
return '📄';
|
|
276
|
+
}
|
|
277
|
+
function escapeHtml(text) {
|
|
278
|
+
const div = document.createElement('div');
|
|
279
|
+
div.textContent = text;
|
|
280
|
+
return div.innerHTML;
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=ArtifactAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArtifactAPI.js","sourceRoot":"","sources":["../../../../src/components/MemoriArtifactSystem/utils/ArtifactAPI.tsx"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,18 @@ declare global {
|
|
|
46
46
|
typeMessage: typeof typeMessage;
|
|
47
47
|
typeMessageHidden: typeof typeMessageHidden;
|
|
48
48
|
typeBatchMessages: typeof typeBatchMessages;
|
|
49
|
+
MemoriArtifactAPI?: {
|
|
50
|
+
openArtifact: (artifact: ArtifactData) => void;
|
|
51
|
+
createAndOpenArtifact: (content: string, mimeType?: string, title?: string) => void;
|
|
52
|
+
createFromOutputElement: (outputElement: HTMLOutputElement) => string;
|
|
53
|
+
closeArtifact: () => void;
|
|
54
|
+
toggleFullscreen: () => void;
|
|
55
|
+
getState: () => {
|
|
56
|
+
currentArtifact: ArtifactData | null;
|
|
57
|
+
isDrawerOpen: boolean;
|
|
58
|
+
isFullscreen: boolean;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
49
61
|
}
|
|
50
62
|
}
|
|
51
63
|
export interface LayoutProps {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ArtifactAPIBridge } from '../MemoriArtifactSystem/utils/ArtifactAPI';
|
|
2
3
|
import { useState, useEffect, useCallback, useRef, useMemo, } from 'react';
|
|
3
4
|
import { useTranslation } from 'react-i18next';
|
|
4
5
|
import memoriApiClient from '@memori.ai/memori-api-client';
|
|
@@ -996,7 +997,6 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
|
|
|
996
997
|
const handleVisibilityChange = () => {
|
|
997
998
|
const isVisible = !document.hidden;
|
|
998
999
|
if (isVisible && !isTabVisible) {
|
|
999
|
-
console.log('Tab is now active/visible - starting date polling');
|
|
1000
1000
|
sendDateChangedEvent({
|
|
1001
1001
|
sessionID: sessionId,
|
|
1002
1002
|
state: currentDialogState,
|
|
@@ -1004,7 +1004,6 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
|
|
|
1004
1004
|
startDatePolling();
|
|
1005
1005
|
}
|
|
1006
1006
|
else if (!isVisible && isTabVisible) {
|
|
1007
|
-
console.log('Tab is now hidden - stopping date polling');
|
|
1008
1007
|
stopDatePolling();
|
|
1009
1008
|
}
|
|
1010
1009
|
isTabVisible = isVisible;
|
|
@@ -1862,7 +1861,17 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
|
|
|
1862
1861
|
}), "data-memori-name": memori === null || memori === void 0 ? void 0 : memori.name, "data-memori-id": memori === null || memori === void 0 ? void 0 : memori.engineMemoriID, "data-memori-secondary-id": memori === null || memori === void 0 ? void 0 : memori.memoriID, "data-memori-session-id": sessionId, "data-memori-integration": integration === null || integration === void 0 ? void 0 : integration.integrationID, "data-memori-engine-state": JSON.stringify({
|
|
1863
1862
|
...currentDialogState,
|
|
1864
1863
|
sessionID: sessionId,
|
|
1865
|
-
}), style: { height }, children: [_jsx(Layout, { Header: Header, headerProps: headerProps, Avatar: Avatar, avatarProps: avatarProps, Chat: Chat, chatProps: chatProps, StartPanel: StartPanel, startPanelProps: startPanelProps, integrationStyle: integrationStyle, integrationBackground: integrationBackground, poweredBy: poweredBy, autoStart: autoStart, sessionId: sessionId, hasUserActivatedSpeak: hasUserActivatedSpeak, loading: loading }), _jsx(
|
|
1864
|
+
}), style: { height }, children: [_jsx(Layout, { Header: Header, headerProps: headerProps, Avatar: Avatar, avatarProps: avatarProps, Chat: Chat, chatProps: chatProps, StartPanel: StartPanel, startPanelProps: startPanelProps, integrationStyle: integrationStyle, integrationBackground: integrationBackground, poweredBy: poweredBy, autoStart: autoStart, sessionId: sessionId, hasUserActivatedSpeak: hasUserActivatedSpeak, loading: loading }), _jsx(ArtifactAPIBridge, { pushMessage: (message) => {
|
|
1865
|
+
setHistory(history => {
|
|
1866
|
+
if (!history.length)
|
|
1867
|
+
return history;
|
|
1868
|
+
const lastMessage = history[history.length - 1];
|
|
1869
|
+
if (!lastMessage || lastMessage.fromUser)
|
|
1870
|
+
return history;
|
|
1871
|
+
const updatedLastMessage = { ...lastMessage, text: lastMessage.text + message.text };
|
|
1872
|
+
return [...history.slice(0, -1), updatedLastMessage];
|
|
1873
|
+
});
|
|
1874
|
+
} }), _jsx("audio", { id: "memori-audio", style: { display: 'none' }, src: "https://aisuru.com/intro.mp3" }), isClient && (_jsx(MemoriAuth, { withModal: true, pwdOrTokens: authModalState, openModal: !!authModalState, setPwdOrTokens: setAuthModalState, showTokens: memori.privacyType === 'SECRET', onFinish: async (values) => {
|
|
1866
1875
|
var _a, _b, _c, _d;
|
|
1867
1876
|
if (values['password'])
|
|
1868
1877
|
setMemoriPwd(values['password']);
|