@memori.ai/memori-react 9.0.0-alpha.6 → 9.0.0-alpha.8
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 +20 -0
- package/dist/components/AgeVerificationModal/AgeVerificationModal.js +3 -1
- package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
- package/dist/components/Auth/Auth.js +3 -1
- package/dist/components/Auth/Auth.js.map +1 -1
- package/dist/components/Chat/Chat.js +3 -1
- package/dist/components/Chat/Chat.js.map +1 -1
- package/dist/components/ChatBubble/ChatBubble.js +3 -1
- package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
- package/dist/components/ChatHistoryDrawer/ChatHistory.js +3 -1
- package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
- package/dist/components/ContentPreviewModal/ContentPreviewModal.js +3 -1
- package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
- package/dist/components/ExpertsDrawer/ExpertsDrawer.js +3 -1
- package/dist/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
- package/dist/components/KnownFacts/KnownFacts.js +5 -3
- package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
- package/dist/components/LoginDrawer/LoginDrawer.js +3 -1
- package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +19 -5
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +4 -1
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
- package/dist/components/MemoriWidget/MemoriWidget.css +4 -2
- package/dist/components/MemoriWidget/MemoriWidget.js +139 -130
- package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/dist/components/SettingsDrawer/SettingsDrawer.js +3 -1
- package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
- package/dist/components/StartPanel/StartPanel.js +3 -1
- package/dist/components/StartPanel/StartPanel.js.map +1 -1
- package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +3 -1
- package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
- package/dist/components/UploadButton/UploadImages/UploadImages.js +3 -1
- package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
- package/dist/components/WhyThisAnswer/WhyThisAnswer.js +3 -1
- package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
- package/dist/components/layouts/HiddenChat.js +4 -223
- package/dist/components/layouts/HiddenChat.js.map +1 -1
- package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +3 -1
- package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
- package/dist/components/layouts/WebsiteAssistant/website-assistant.css +19 -0
- package/dist/components/layouts/chat.css +2 -1
- package/dist/components/layouts/fullpage.css +31 -8
- package/dist/components/layouts/hidden-chat.css +1 -6
- package/dist/components/layouts/totem.css +2 -1
- package/dist/components/layouts/zoomed-full-body.css +32 -7
- package/dist/context/widgetSurfaceContext.d.ts +3 -0
- package/dist/context/widgetSurfaceContext.js +11 -0
- package/dist/context/widgetSurfaceContext.js.map +1 -0
- package/dist/helpers/positionPopover.d.ts +1 -0
- package/dist/helpers/positionPopover.js +7 -0
- package/dist/helpers/positionPopover.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/esm/components/AgeVerificationModal/AgeVerificationModal.js +3 -1
- package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
- package/esm/components/Auth/Auth.js +3 -1
- package/esm/components/Auth/Auth.js.map +1 -1
- package/esm/components/Chat/Chat.js +3 -1
- package/esm/components/Chat/Chat.js.map +1 -1
- package/esm/components/ChatBubble/ChatBubble.js +3 -1
- package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
- package/esm/components/ChatHistoryDrawer/ChatHistory.js +3 -1
- package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
- package/esm/components/ContentPreviewModal/ContentPreviewModal.js +3 -1
- package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
- package/esm/components/ExpertsDrawer/ExpertsDrawer.js +3 -1
- package/esm/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
- package/esm/components/KnownFacts/KnownFacts.js +5 -3
- package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
- package/esm/components/LoginDrawer/LoginDrawer.js +3 -1
- package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +19 -5
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +4 -1
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
- package/esm/components/MemoriWidget/MemoriWidget.css +4 -2
- package/esm/components/MemoriWidget/MemoriWidget.js +139 -130
- package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/esm/components/SettingsDrawer/SettingsDrawer.js +3 -1
- package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
- package/esm/components/StartPanel/StartPanel.js +3 -1
- package/esm/components/StartPanel/StartPanel.js.map +1 -1
- package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +3 -1
- package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
- package/esm/components/UploadButton/UploadImages/UploadImages.js +3 -1
- package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
- package/esm/components/WhyThisAnswer/WhyThisAnswer.js +3 -1
- package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
- package/esm/components/layouts/HiddenChat.js +6 -225
- package/esm/components/layouts/HiddenChat.js.map +1 -1
- package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +3 -1
- package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
- package/esm/components/layouts/WebsiteAssistant/website-assistant.css +19 -0
- package/esm/components/layouts/chat.css +2 -1
- package/esm/components/layouts/fullpage.css +31 -8
- package/esm/components/layouts/hidden-chat.css +1 -6
- package/esm/components/layouts/totem.css +2 -1
- package/esm/components/layouts/zoomed-full-body.css +32 -7
- package/esm/context/widgetSurfaceContext.d.ts +3 -0
- package/esm/context/widgetSurfaceContext.js +7 -0
- package/esm/context/widgetSurfaceContext.js.map +1 -0
- package/esm/helpers/positionPopover.d.ts +1 -0
- package/esm/helpers/positionPopover.js +4 -0
- package/esm/helpers/positionPopover.js.map +1 -0
- package/esm/styles.css +1 -1
- package/esm/version.d.ts +1 -1
- package/esm/version.js +1 -1
- package/package.json +1 -1
- package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +3 -0
- package/src/components/Auth/Auth.tsx +3 -0
- package/src/components/Chat/Chat.tsx +3 -0
- package/src/components/ChatBubble/ChatBubble.tsx +3 -0
- package/src/components/ChatHistoryDrawer/ChatHistory.tsx +3 -0
- package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +3 -0
- package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +3 -0
- package/src/components/KnownFacts/KnownFacts.tsx +5 -0
- package/src/components/LoginDrawer/LoginDrawer.tsx +3 -0
- package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +19 -5
- package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +4 -0
- package/src/components/MemoriWidget/MemoriWidget.css +4 -2
- package/src/components/MemoriWidget/MemoriWidget.tsx +45 -22
- package/src/components/SettingsDrawer/SettingsDrawer.tsx +3 -0
- package/src/components/StartPanel/StartPanel.tsx +3 -0
- package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +3 -0
- package/src/components/UploadButton/UploadImages/UploadImages.tsx +3 -0
- package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +3 -0
- package/src/components/layouts/HiddenChat.tsx +3 -389
- package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.tsx +4 -0
- package/src/components/layouts/WebsiteAssistant/__snapshots__/WebsiteAssistant.test.tsx.snap +48 -44
- package/src/components/layouts/WebsiteAssistant/website-assistant.css +19 -0
- package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +533 -529
- package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +1058 -1050
- package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +406 -441
- package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +584 -580
- package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +528 -524
- package/src/components/layouts/chat.css +2 -1
- package/src/components/layouts/fullpage.css +31 -8
- package/src/components/layouts/hidden-chat.css +1 -6
- package/src/components/layouts/totem.css +2 -1
- package/src/components/layouts/zoomed-full-body.css +32 -7
- package/src/context/widgetSurfaceContext.tsx +14 -0
- package/src/helpers/positionPopover.test.ts +33 -0
- package/src/helpers/positionPopover.ts +13 -0
- package/src/styles.css +61 -1
- package/src/version.ts +1 -1
|
@@ -1,32 +1,13 @@
|
|
|
1
1
|
/* eslint-disable react/prop-types */
|
|
2
2
|
import React, { useState, useEffect, useRef, useMemo } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { Spin } from '@memori.ai/ui';
|
|
4
4
|
import { LayoutProps } from '../MemoriWidget/MemoriWidget';
|
|
5
5
|
import { useTranslation } from 'react-i18next';
|
|
6
6
|
import { useArtifact } from '../MemoriArtifactSystem/context/ArtifactContext';
|
|
7
|
-
import {
|
|
8
|
-
EllipsisVertical,
|
|
9
|
-
HelpCircle,
|
|
10
|
-
LogIn,
|
|
11
|
-
LogOut,
|
|
12
|
-
MapPin,
|
|
13
|
-
MessageCircle,
|
|
14
|
-
RefreshCw,
|
|
15
|
-
Settings,
|
|
16
|
-
Share2,
|
|
17
|
-
Trash2,
|
|
18
|
-
User,
|
|
19
|
-
Users,
|
|
20
|
-
Volume2,
|
|
21
|
-
VolumeX,
|
|
22
|
-
Maximize,
|
|
23
|
-
X,
|
|
24
|
-
} from 'lucide-react';
|
|
7
|
+
import { HelpCircle, X } from 'lucide-react';
|
|
25
8
|
import { getResourceUrl } from '../../helpers/media';
|
|
26
9
|
import ArtifactDrawer from '../MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer';
|
|
27
10
|
import ChatInputs from '../ChatInputs/ChatInputs';
|
|
28
|
-
import ShareButton from '../ShareButton/ShareButton';
|
|
29
|
-
import MobileSessionPanel from '../MobileSessionPanel/MobileSessionPanel';
|
|
30
11
|
import {
|
|
31
12
|
maxDocumentsPerMessage,
|
|
32
13
|
maxDocumentContentLength,
|
|
@@ -47,11 +28,10 @@ const HiddenChatLayout: React.FC<LayoutProps> = ({
|
|
|
47
28
|
StartPanel,
|
|
48
29
|
onSidebarToggle,
|
|
49
30
|
}) => {
|
|
50
|
-
const { t
|
|
31
|
+
const { t } = useTranslation();
|
|
51
32
|
const [isOpen, setIsOpen] = useState(false);
|
|
52
33
|
const [fullScreen, setFullScreen] = useState(false);
|
|
53
34
|
const [hasTriggeredAutostart, setHasTriggeredAutostart] = useState(false);
|
|
54
|
-
const [sessionPanelOpen, setSessionPanelOpen] = useState(false);
|
|
55
35
|
|
|
56
36
|
const { state, closeArtifact } = useArtifact();
|
|
57
37
|
const useSideArtifactChrome =
|
|
@@ -61,18 +41,6 @@ const HiddenChatLayout: React.FC<LayoutProps> = ({
|
|
|
61
41
|
const memori = headerProps?.memori;
|
|
62
42
|
const tenant = headerProps?.tenant;
|
|
63
43
|
const baseUrl = headerProps?.baseUrl;
|
|
64
|
-
const hasSustainabilityData = useMemo(
|
|
65
|
-
() =>
|
|
66
|
-
!!headerProps?.history?.some(
|
|
67
|
-
line =>
|
|
68
|
-
!!(
|
|
69
|
-
line as {
|
|
70
|
-
llmUsage?: { energyImpact?: unknown };
|
|
71
|
-
}
|
|
72
|
-
).llmUsage?.energyImpact
|
|
73
|
-
),
|
|
74
|
-
[headerProps?.history]
|
|
75
|
-
);
|
|
76
44
|
const hiddenChatHeaderProps = useMemo(() => {
|
|
77
45
|
if (!headerProps) return undefined;
|
|
78
46
|
return {
|
|
@@ -95,260 +63,8 @@ const HiddenChatLayout: React.FC<LayoutProps> = ({
|
|
|
95
63
|
};
|
|
96
64
|
}, [headerProps]);
|
|
97
65
|
|
|
98
|
-
const loggedUser =
|
|
99
|
-
headerProps?.loginToken && headerProps?.user ? headerProps.user : undefined;
|
|
100
|
-
const sharedUrl = useMemo(() => {
|
|
101
|
-
if (!headerProps?.memori || !headerProps?.sessionID) return undefined;
|
|
102
|
-
const currentLanguage = i18n.language === 'it' ? 'it' : 'en';
|
|
103
|
-
if (headerProps.memori.ownerUserID) {
|
|
104
|
-
return `${
|
|
105
|
-
headerProps.baseUrl ?? 'https://www.aisuru.com'
|
|
106
|
-
}/${currentLanguage}/shared/${headerProps.memori.ownerUserID}/${
|
|
107
|
-
headerProps.memori.memoriID
|
|
108
|
-
}/${headerProps.sessionID}`;
|
|
109
|
-
}
|
|
110
|
-
if (headerProps.memori.exposed) {
|
|
111
|
-
return `${
|
|
112
|
-
headerProps.baseUrl ?? 'https://www.aisuru.com'
|
|
113
|
-
}/${currentLanguage}/shared/${headerProps.memori.ownerUserName}/${
|
|
114
|
-
headerProps.memori.name
|
|
115
|
-
}/${headerProps.sessionID}`;
|
|
116
|
-
}
|
|
117
|
-
return window.location.href;
|
|
118
|
-
}, [headerProps, i18n.language]);
|
|
119
|
-
const loggedUserDisplayName = useMemo(() => {
|
|
120
|
-
if (!loggedUser) return '';
|
|
121
|
-
const enrichedUser = loggedUser as typeof loggedUser & {
|
|
122
|
-
name?: string;
|
|
123
|
-
surname?: string;
|
|
124
|
-
firstName?: string;
|
|
125
|
-
lastName?: string;
|
|
126
|
-
};
|
|
127
|
-
const fullName =
|
|
128
|
-
[enrichedUser.name, enrichedUser.surname]
|
|
129
|
-
.filter(Boolean)
|
|
130
|
-
.join(' ')
|
|
131
|
-
.trim() ||
|
|
132
|
-
[enrichedUser.firstName, enrichedUser.lastName]
|
|
133
|
-
.filter(Boolean)
|
|
134
|
-
.join(' ')
|
|
135
|
-
.trim();
|
|
136
|
-
return fullName || loggedUser.userName || loggedUser.eMail || '';
|
|
137
|
-
}, [loggedUser]);
|
|
138
|
-
const loggedUserInitial = useMemo(
|
|
139
|
-
() => (loggedUserDisplayName || 'U').charAt(0).toUpperCase(),
|
|
140
|
-
[loggedUserDisplayName]
|
|
141
|
-
);
|
|
142
66
|
const isSessionStarted = Boolean(sessionId && hasUserActivatedSpeak);
|
|
143
67
|
|
|
144
|
-
const handleOverflowActionClick = (
|
|
145
|
-
action:
|
|
146
|
-
| 'reload'
|
|
147
|
-
| 'clear'
|
|
148
|
-
| 'chatHistory'
|
|
149
|
-
| 'fullscreen'
|
|
150
|
-
| 'deepThought'
|
|
151
|
-
| 'experts'
|
|
152
|
-
| 'audio'
|
|
153
|
-
| 'settings'
|
|
154
|
-
| 'share'
|
|
155
|
-
| 'login'
|
|
156
|
-
) => {
|
|
157
|
-
if (!headerProps) return;
|
|
158
|
-
switch (action) {
|
|
159
|
-
case 'reload':
|
|
160
|
-
window.location.reload();
|
|
161
|
-
break;
|
|
162
|
-
case 'clear':
|
|
163
|
-
headerProps.clearHistory();
|
|
164
|
-
break;
|
|
165
|
-
case 'chatHistory':
|
|
166
|
-
headerProps.setShowChatHistoryDrawer(true);
|
|
167
|
-
break;
|
|
168
|
-
case 'fullscreen':
|
|
169
|
-
handleFullscreenToggle();
|
|
170
|
-
break;
|
|
171
|
-
case 'deepThought':
|
|
172
|
-
headerProps.setShowKnownFactsDrawer(true);
|
|
173
|
-
break;
|
|
174
|
-
case 'experts':
|
|
175
|
-
headerProps.setShowExpertsDrawer(true);
|
|
176
|
-
break;
|
|
177
|
-
case 'audio':
|
|
178
|
-
headerProps.setSpeakerMuted(!headerProps.speakerMuted);
|
|
179
|
-
break;
|
|
180
|
-
case 'settings':
|
|
181
|
-
headerProps.setShowSettingsDrawer(true);
|
|
182
|
-
break;
|
|
183
|
-
case 'share': {
|
|
184
|
-
const targetUrl = sharedUrl || window.location.href;
|
|
185
|
-
if (navigator.share) {
|
|
186
|
-
navigator
|
|
187
|
-
.share({
|
|
188
|
-
title: headerProps.memori?.name,
|
|
189
|
-
url: targetUrl,
|
|
190
|
-
})
|
|
191
|
-
.catch(() => {
|
|
192
|
-
// User dismissed share sheet or browser blocked it.
|
|
193
|
-
});
|
|
194
|
-
break;
|
|
195
|
-
}
|
|
196
|
-
if (navigator.clipboard?.writeText) {
|
|
197
|
-
navigator.clipboard.writeText(targetUrl).catch(() => {
|
|
198
|
-
const opened = window.open(targetUrl, '_blank');
|
|
199
|
-
if (!opened) window.location.assign(targetUrl);
|
|
200
|
-
});
|
|
201
|
-
break;
|
|
202
|
-
}
|
|
203
|
-
{
|
|
204
|
-
const opened = window.open(targetUrl, '_blank');
|
|
205
|
-
if (!opened) window.location.assign(targetUrl);
|
|
206
|
-
}
|
|
207
|
-
break;
|
|
208
|
-
}
|
|
209
|
-
case 'login':
|
|
210
|
-
if (loggedUser && headerProps.onLogout) {
|
|
211
|
-
headerProps.onLogout();
|
|
212
|
-
} else {
|
|
213
|
-
headerProps.setShowLoginDrawer(true);
|
|
214
|
-
}
|
|
215
|
-
break;
|
|
216
|
-
default:
|
|
217
|
-
break;
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
|
|
221
|
-
const handleEnableLocation = () => {
|
|
222
|
-
if (!headerProps) return;
|
|
223
|
-
if (!navigator.geolocation) {
|
|
224
|
-
headerProps.setPositionPopoverOpen(true);
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
navigator.geolocation.getCurrentPosition(
|
|
228
|
-
position => {
|
|
229
|
-
const latitude = position.coords.latitude;
|
|
230
|
-
const longitude = position.coords.longitude;
|
|
231
|
-
headerProps.setVenue({
|
|
232
|
-
latitude,
|
|
233
|
-
longitude,
|
|
234
|
-
placeName: `${latitude.toFixed(5)}, ${longitude.toFixed(5)}`,
|
|
235
|
-
uncertainty: position.coords.accuracy / 1000,
|
|
236
|
-
});
|
|
237
|
-
},
|
|
238
|
-
() => {
|
|
239
|
-
headerProps.setPositionPopoverOpen(true);
|
|
240
|
-
},
|
|
241
|
-
{ enableHighAccuracy: true, timeout: 15000, maximumAge: 0 }
|
|
242
|
-
);
|
|
243
|
-
};
|
|
244
|
-
|
|
245
|
-
const handleDisableLocation = () => {
|
|
246
|
-
headerProps?.setVenue({
|
|
247
|
-
latitude: 0,
|
|
248
|
-
longitude: 0,
|
|
249
|
-
placeName: '',
|
|
250
|
-
uncertainty: 0,
|
|
251
|
-
});
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
const sessionPanelActions = useMemo(
|
|
255
|
-
() => [
|
|
256
|
-
{
|
|
257
|
-
key: 'fullscreen',
|
|
258
|
-
icon: <Maximize size={18} />,
|
|
259
|
-
title: t('fullscreenEnter') || 'Full screen',
|
|
260
|
-
subtitle: t('widget.expandToImmersive') || 'Expand to immersive view',
|
|
261
|
-
onClick: () => {
|
|
262
|
-
handleFullscreenToggle();
|
|
263
|
-
setSessionPanelOpen(false);
|
|
264
|
-
},
|
|
265
|
-
},
|
|
266
|
-
...(headerProps?.loginToken
|
|
267
|
-
? [
|
|
268
|
-
{
|
|
269
|
-
key: 'chatHistory',
|
|
270
|
-
icon: <MessageCircle size={18} />,
|
|
271
|
-
title: t('write_and_speak.chatHistory') || 'Chat history',
|
|
272
|
-
onClick: () => {
|
|
273
|
-
handleOverflowActionClick('chatHistory');
|
|
274
|
-
setSessionPanelOpen(false);
|
|
275
|
-
},
|
|
276
|
-
},
|
|
277
|
-
]
|
|
278
|
-
: []),
|
|
279
|
-
{
|
|
280
|
-
key: 'share',
|
|
281
|
-
icon: <Share2 size={18} />,
|
|
282
|
-
title: t('widget.share') || 'Share chat',
|
|
283
|
-
subtitle:
|
|
284
|
-
t('widget.mobileSession.copyLinkOrDownload') ||
|
|
285
|
-
'Copy link or download',
|
|
286
|
-
view: 'share' as const,
|
|
287
|
-
},
|
|
288
|
-
{
|
|
289
|
-
key: 'location',
|
|
290
|
-
icon: <MapPin size={18} />,
|
|
291
|
-
title:
|
|
292
|
-
t('widget.mobileSession.locationTracking') || 'Location tracking',
|
|
293
|
-
subtitle:
|
|
294
|
-
headerProps?.position?.placeName ||
|
|
295
|
-
t('widget.mobileSession.currentlyOff') ||
|
|
296
|
-
'Currently off',
|
|
297
|
-
view: 'location' as const,
|
|
298
|
-
trailing: (
|
|
299
|
-
<span className="memori-mobile-session-panel--chevron">{'>'}</span>
|
|
300
|
-
),
|
|
301
|
-
},
|
|
302
|
-
...(headerProps?.showReload
|
|
303
|
-
? [
|
|
304
|
-
{
|
|
305
|
-
key: 'reload',
|
|
306
|
-
icon: <RefreshCw size={18} />,
|
|
307
|
-
title: t('reload') || 'Reload',
|
|
308
|
-
onClick: () => handleOverflowActionClick('reload'),
|
|
309
|
-
},
|
|
310
|
-
]
|
|
311
|
-
: []),
|
|
312
|
-
...(headerProps?.showClear
|
|
313
|
-
? [
|
|
314
|
-
{
|
|
315
|
-
key: 'clear',
|
|
316
|
-
icon: <Trash2 size={18} />,
|
|
317
|
-
title: t('clearHistory') || 'Clear chat',
|
|
318
|
-
onClick: () => handleOverflowActionClick('clear'),
|
|
319
|
-
},
|
|
320
|
-
]
|
|
321
|
-
: []),
|
|
322
|
-
// ...(headerProps?.memori?.enableBoardOfExperts
|
|
323
|
-
// ? [
|
|
324
|
-
// {
|
|
325
|
-
// key: 'experts',
|
|
326
|
-
// icon: <Users size={18} />,
|
|
327
|
-
// title:
|
|
328
|
-
// t('widget.showExpertsInTheBoard') || 'Experts in this board',
|
|
329
|
-
// disabled: !isSessionStarted,
|
|
330
|
-
// onClick: () => handleOverflowActionClick('experts'),
|
|
331
|
-
// },
|
|
332
|
-
// ]
|
|
333
|
-
// : []),
|
|
334
|
-
// ...(headerProps?.enableAudio
|
|
335
|
-
// ? [
|
|
336
|
-
// {
|
|
337
|
-
// key: 'audio',
|
|
338
|
-
// icon: headerProps?.speakerMuted ? (
|
|
339
|
-
// <VolumeX size={18} />
|
|
340
|
-
// ) : (
|
|
341
|
-
// <Volume2 size={18} />
|
|
342
|
-
// ),
|
|
343
|
-
// title: t('widget.sound') || 'Sound',
|
|
344
|
-
// onClick: () => handleOverflowActionClick('audio'),
|
|
345
|
-
// },
|
|
346
|
-
// ]
|
|
347
|
-
// : []),
|
|
348
|
-
],
|
|
349
|
-
[t, headerProps, isSessionStarted]
|
|
350
|
-
);
|
|
351
|
-
|
|
352
68
|
const brandAvatarSrc = memori
|
|
353
69
|
? memori.avatarURL && memori.avatarURL.length > 0
|
|
354
70
|
? getResourceUrl({
|
|
@@ -585,21 +301,6 @@ const HiddenChatLayout: React.FC<LayoutProps> = ({
|
|
|
585
301
|
{...hiddenChatHeaderProps}
|
|
586
302
|
buttonVariant="outline"
|
|
587
303
|
fullScreenHandler={handleFullscreenToggle}
|
|
588
|
-
extraActions={
|
|
589
|
-
<Button
|
|
590
|
-
variant="outline"
|
|
591
|
-
className={`memori-hidden-chat-layout--overflow-trigger ${
|
|
592
|
-
sessionPanelOpen ? 'memori-button--active' : ''
|
|
593
|
-
}`}
|
|
594
|
-
aria-label={
|
|
595
|
-
t('widget.moreActions') || 'More actions'
|
|
596
|
-
}
|
|
597
|
-
icon={<EllipsisVertical />}
|
|
598
|
-
onClick={() =>
|
|
599
|
-
setSessionPanelOpen(currentOpen => !currentOpen)
|
|
600
|
-
}
|
|
601
|
-
/>
|
|
602
|
-
}
|
|
603
304
|
/>
|
|
604
305
|
)}
|
|
605
306
|
</div>
|
|
@@ -607,93 +308,6 @@ const HiddenChatLayout: React.FC<LayoutProps> = ({
|
|
|
607
308
|
)}
|
|
608
309
|
</div>
|
|
609
310
|
<div className="memori-chat-layout--body">
|
|
610
|
-
{headerProps && (
|
|
611
|
-
<MobileSessionPanel
|
|
612
|
-
open={sessionPanelOpen}
|
|
613
|
-
onClose={() => setSessionPanelOpen(false)}
|
|
614
|
-
presentation="popover"
|
|
615
|
-
title={t('widget.mobileSession.session') || 'Session'}
|
|
616
|
-
loginToken={headerProps.loginToken}
|
|
617
|
-
user={headerProps.user}
|
|
618
|
-
apiClient={headerProps.apiClient}
|
|
619
|
-
userName={loggedUserDisplayName || memori?.name || 'User'}
|
|
620
|
-
userEmail={loggedUser?.eMail}
|
|
621
|
-
userInitial={loggedUserInitial}
|
|
622
|
-
avatarURL={loggedUser?.avatarURL}
|
|
623
|
-
birthDate={loggedUser?.birthDate}
|
|
624
|
-
actions={sessionPanelActions}
|
|
625
|
-
knownFactsPageTitle={t('knownFacts.title') || 'Known facts'}
|
|
626
|
-
sharePageTitle={t('widget.share') || 'Share'}
|
|
627
|
-
locationPageTitle={
|
|
628
|
-
t('widget.mobileSession.locationTracking') ||
|
|
629
|
-
'Location tracking'
|
|
630
|
-
}
|
|
631
|
-
backLabel={t('back') || 'Back'}
|
|
632
|
-
locationStatusLabel={
|
|
633
|
-
t('widget.mobileSession.locationStatus') || 'Status'
|
|
634
|
-
}
|
|
635
|
-
locationPlace={headerProps.position?.placeName}
|
|
636
|
-
locationUnknownLabel={
|
|
637
|
-
t('write_and_speak.unknownPosition') || 'Unknown position'
|
|
638
|
-
}
|
|
639
|
-
locationEnableLabel={
|
|
640
|
-
t('widget.shareLocation') || 'Share location'
|
|
641
|
-
}
|
|
642
|
-
locationDisableLabel={
|
|
643
|
-
t('widget.mobileSession.disableLocationSharing') ||
|
|
644
|
-
'Disable location sharing'
|
|
645
|
-
}
|
|
646
|
-
knownFactsDescription={
|
|
647
|
-
t('knownFacts.description', {
|
|
648
|
-
memoriName: memori?.name || '',
|
|
649
|
-
}) || ''
|
|
650
|
-
}
|
|
651
|
-
knownFactsCtaLabel={
|
|
652
|
-
t('widget.mobileSession.openKnownFacts') ||
|
|
653
|
-
'Open full known facts'
|
|
654
|
-
}
|
|
655
|
-
knownFactsCountLabel={
|
|
656
|
-
(t('widget.mobileSession.knownFactsMessages', {
|
|
657
|
-
count: headerProps.history?.length || 0,
|
|
658
|
-
}) as string) || ''
|
|
659
|
-
}
|
|
660
|
-
shareContent={
|
|
661
|
-
<ShareButton
|
|
662
|
-
tenant={headerProps?.tenant}
|
|
663
|
-
memori={headerProps?.memori}
|
|
664
|
-
sessionID={headerProps?.sessionID}
|
|
665
|
-
title={headerProps?.memori?.name}
|
|
666
|
-
baseUrl={headerProps?.baseUrl}
|
|
667
|
-
align="left"
|
|
668
|
-
history={headerProps?.history}
|
|
669
|
-
renderMode="inline"
|
|
670
|
-
/>
|
|
671
|
-
}
|
|
672
|
-
knownFactsDisabled={!isSessionStarted}
|
|
673
|
-
showSessionInfo={isSessionStarted}
|
|
674
|
-
history={headerProps.history ?? []}
|
|
675
|
-
isLoggedIn={!!loggedUser}
|
|
676
|
-
loginLabel={t('login.login') || 'Log in'}
|
|
677
|
-
onLogin={() => {
|
|
678
|
-
headerProps.setShowLoginDrawer(true);
|
|
679
|
-
setSessionPanelOpen(false);
|
|
680
|
-
}}
|
|
681
|
-
onKnownFactsOpen={() => {
|
|
682
|
-
if (!isSessionStarted) return;
|
|
683
|
-
headerProps.setShowKnownFactsDrawer(true);
|
|
684
|
-
setSessionPanelOpen(false);
|
|
685
|
-
}}
|
|
686
|
-
onLocationEnable={handleEnableLocation}
|
|
687
|
-
onLocationDisable={handleDisableLocation}
|
|
688
|
-
venue={headerProps.position}
|
|
689
|
-
setVenue={headerProps.setVenue}
|
|
690
|
-
logoutLabel={t('login.logout') || 'Log out'}
|
|
691
|
-
onLogout={() => {
|
|
692
|
-
handleOverflowActionClick('login');
|
|
693
|
-
setSessionPanelOpen(false);
|
|
694
|
-
}}
|
|
695
|
-
/>
|
|
696
|
-
)}
|
|
697
311
|
{sessionId && hasUserActivatedSpeak && Chat && chatProps ? (
|
|
698
312
|
<Chat {...chatProps} />
|
|
699
313
|
) : !autoStart && startPanelProps ? (
|
|
@@ -62,6 +62,10 @@ const WebsiteAssistantLayout: React.FC<LayoutProps> = ({
|
|
|
62
62
|
<div
|
|
63
63
|
className={`memori-website_assistant--${
|
|
64
64
|
collapsed ? 'collapsed' : 'expanded'
|
|
65
|
+
}${
|
|
66
|
+
useSideArtifactChrome
|
|
67
|
+
? ' memori-website_assistant--artifact-open'
|
|
68
|
+
: ''
|
|
65
69
|
}`}
|
|
66
70
|
>
|
|
67
71
|
{!collapsed && (
|
package/src/components/layouts/WebsiteAssistant/__snapshots__/WebsiteAssistant.test.tsx.snap
CHANGED
|
@@ -12,56 +12,60 @@ exports[`renders WEBSITE_ASSISTANT layout unchanged 1`] = `
|
|
|
12
12
|
style="height: 100vh;"
|
|
13
13
|
>
|
|
14
14
|
<div
|
|
15
|
-
class="memori-
|
|
15
|
+
class="memori-widget__surface"
|
|
16
16
|
>
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
aria-label="expand"
|
|
20
|
-
class="memori-button memori-button--ghost memori-button--md memori-button--circle memori-website_assistant--trigger-button"
|
|
21
|
-
tabindex="0"
|
|
22
|
-
title="expand"
|
|
23
|
-
type="button"
|
|
17
|
+
<div
|
|
18
|
+
class="memori-website_assistant--trigger"
|
|
24
19
|
>
|
|
25
|
-
<
|
|
26
|
-
|
|
20
|
+
<button
|
|
21
|
+
aria-expanded="false"
|
|
22
|
+
aria-label="expand"
|
|
23
|
+
class="memori-button memori-button--ghost memori-button--md memori-button--circle memori-website_assistant--trigger-button"
|
|
24
|
+
tabindex="0"
|
|
25
|
+
title="expand"
|
|
26
|
+
type="button"
|
|
27
27
|
>
|
|
28
|
-
<
|
|
29
|
-
class="memori-
|
|
28
|
+
<span
|
|
29
|
+
class="memori-button__content"
|
|
30
30
|
>
|
|
31
|
-
<figure>
|
|
32
|
-
<img
|
|
33
|
-
alt=""
|
|
34
|
-
role="presentation"
|
|
35
|
-
src="https://aisuru.com/images/aisuru/square_logo.png"
|
|
36
|
-
/>
|
|
37
|
-
</figure>
|
|
38
|
-
<div
|
|
39
|
-
class="mainDiv"
|
|
40
|
-
/>
|
|
41
|
-
<div
|
|
42
|
-
class="mainDiv"
|
|
43
|
-
/>
|
|
44
31
|
<div
|
|
45
|
-
class="
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
32
|
+
class="memori-blob"
|
|
33
|
+
>
|
|
34
|
+
<figure>
|
|
35
|
+
<img
|
|
36
|
+
alt=""
|
|
37
|
+
role="presentation"
|
|
38
|
+
src="https://aisuru.com/images/aisuru/square_logo.png"
|
|
39
|
+
/>
|
|
40
|
+
</figure>
|
|
41
|
+
<div
|
|
42
|
+
class="mainDiv"
|
|
43
|
+
/>
|
|
44
|
+
<div
|
|
45
|
+
class="mainDiv"
|
|
46
|
+
/>
|
|
47
|
+
<div
|
|
48
|
+
class="mainDiv"
|
|
49
|
+
/>
|
|
50
|
+
<div
|
|
51
|
+
class="mainDiv"
|
|
52
|
+
/>
|
|
53
|
+
<div
|
|
54
|
+
class="mainDiv"
|
|
55
|
+
/>
|
|
56
|
+
</div>
|
|
57
|
+
</span>
|
|
58
|
+
</button>
|
|
59
|
+
</div>
|
|
60
|
+
<div
|
|
61
|
+
class="memori-website_assistant--collapsed"
|
|
62
|
+
/>
|
|
63
|
+
<audio
|
|
64
|
+
id="memori-audio"
|
|
65
|
+
src="https://aisuru.com/intro.mp3"
|
|
66
|
+
style="display: none;"
|
|
67
|
+
/>
|
|
56
68
|
</div>
|
|
57
|
-
<div
|
|
58
|
-
class="memori-website_assistant--collapsed"
|
|
59
|
-
/>
|
|
60
|
-
<audio
|
|
61
|
-
id="memori-audio"
|
|
62
|
-
src="https://aisuru.com/intro.mp3"
|
|
63
|
-
style="display: none;"
|
|
64
|
-
/>
|
|
65
69
|
</div>
|
|
66
70
|
<div
|
|
67
71
|
aria-atomic="false"
|
|
@@ -195,6 +195,15 @@
|
|
|
195
195
|
pointer-events: all;
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
+
/*
|
|
199
|
+
* Keep in sync with ArtifactDrawer split width (46% / --memori-modal-size-md override).
|
|
200
|
+
* Same pairing as HiddenChat's `.memori-sidebar-toggle-artifact` → `right: 46%`.
|
|
201
|
+
*/
|
|
202
|
+
.memori-widget.memori-layout-website_assistant
|
|
203
|
+
.memori-website_assistant--expanded.memori-website_assistant--artifact-open {
|
|
204
|
+
right: 46%;
|
|
205
|
+
}
|
|
206
|
+
|
|
198
207
|
/* Tablet */
|
|
199
208
|
@media (min-width: 601px) {
|
|
200
209
|
.memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed,
|
|
@@ -205,6 +214,11 @@
|
|
|
205
214
|
border-radius: var(--memori-radius-box) 0 0 0;
|
|
206
215
|
}
|
|
207
216
|
|
|
217
|
+
.memori-widget.memori-layout-website_assistant
|
|
218
|
+
.memori-website_assistant--expanded.memori-website_assistant--artifact-open {
|
|
219
|
+
right: 46%;
|
|
220
|
+
}
|
|
221
|
+
|
|
208
222
|
.memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
|
|
209
223
|
height: min(75vh, calc(100vh - var(--memori-spacing-5xl)));
|
|
210
224
|
}
|
|
@@ -218,6 +232,11 @@
|
|
|
218
232
|
border-radius: var(--memori-radius-box) 0 0 0;
|
|
219
233
|
}
|
|
220
234
|
|
|
235
|
+
.memori-widget.memori-layout-website_assistant
|
|
236
|
+
.memori-website_assistant--expanded.memori-website_assistant--artifact-open {
|
|
237
|
+
right: 46%;
|
|
238
|
+
}
|
|
239
|
+
|
|
221
240
|
.memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
|
|
222
241
|
height: 100vh;
|
|
223
242
|
border-radius: 0;
|