@memori.ai/memori-react 7.5.1 → 7.6.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 +44 -0
- package/README.md +10 -2
- package/dist/components/Avatar/Avatar.d.ts +2 -0
- package/dist/components/Avatar/Avatar.js +11 -6
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +20 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +107 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.d.ts +26 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.js +59 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.js.map +1 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.d.ts +30 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js +148 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js.map +1 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +15 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +77 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.d.ts +5 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.js +12 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.js.map +1 -0
- package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.d.ts +2 -1
- package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.js +3 -2
- package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/index.d.ts +6 -1
- package/dist/components/Avatar/AvatarView/index.js +14 -84
- package/dist/components/Avatar/AvatarView/index.js.map +1 -1
- package/dist/components/Avatar/AvatarView/utils/useEyeBlink.d.ts +16 -2
- package/dist/components/Avatar/AvatarView/utils/useEyeBlink.js +62 -38
- package/dist/components/Avatar/AvatarView/utils/useEyeBlink.js.map +1 -1
- package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.d.ts +16 -0
- package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.js +59 -0
- package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.js.map +1 -0
- package/dist/components/Avatar/AvatarView/utils/useSmile.js +1 -1
- package/dist/components/Avatar/AvatarView/utils/useSmile.js.map +1 -1
- package/dist/components/ChatBubble/ChatBubble.js +2 -3
- package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
- package/dist/components/CompletionProviderStatus/CompletionProviderStatus.d.ts +1 -1
- package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js +24 -3
- package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
- package/dist/components/MemoriWidget/MemoriWidget.d.ts +1 -1
- package/dist/components/MemoriWidget/MemoriWidget.js +25 -3
- package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/dist/components/StartPanel/StartPanel.js +1 -1
- package/dist/components/StartPanel/StartPanel.js.map +1 -1
- package/dist/components/layouts/HiddenChat.d.ts +4 -0
- package/dist/components/layouts/HiddenChat.js +51 -0
- package/dist/components/layouts/HiddenChat.js.map +1 -0
- package/dist/components/layouts/ZoomedFullBody.d.ts +4 -0
- package/dist/components/layouts/ZoomedFullBody.js +8 -0
- package/dist/components/layouts/ZoomedFullBody.js.map +1 -0
- package/dist/components/layouts/hidden-chat.css +184 -0
- package/dist/context/visemeContext.d.ts +27 -0
- package/dist/context/visemeContext.js +221 -0
- package/dist/context/visemeContext.js.map +1 -0
- package/dist/helpers/utils.d.ts +7 -0
- package/dist/helpers/utils.js +51 -1
- package/dist/helpers/utils.js.map +1 -1
- package/dist/index.js +20 -16
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -0
- package/esm/components/Avatar/Avatar.d.ts +2 -0
- package/esm/components/Avatar/Avatar.js +11 -6
- package/esm/components/Avatar/Avatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +20 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +102 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.d.ts +26 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.js +56 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.js.map +1 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.d.ts +30 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js +145 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js.map +1 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +15 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +73 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.d.ts +5 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.js +9 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.js.map +1 -0
- package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.d.ts +2 -1
- package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.js +3 -2
- package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/index.d.ts +6 -1
- package/esm/components/Avatar/AvatarView/index.js +15 -85
- package/esm/components/Avatar/AvatarView/index.js.map +1 -1
- package/esm/components/Avatar/AvatarView/utils/useEyeBlink.d.ts +16 -2
- package/esm/components/Avatar/AvatarView/utils/useEyeBlink.js +61 -38
- package/esm/components/Avatar/AvatarView/utils/useEyeBlink.js.map +1 -1
- package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.d.ts +16 -0
- package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.js +55 -0
- package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.js.map +1 -0
- package/esm/components/Avatar/AvatarView/utils/useSmile.js +1 -1
- package/esm/components/Avatar/AvatarView/utils/useSmile.js.map +1 -1
- package/esm/components/ChatBubble/ChatBubble.js +2 -3
- package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
- package/esm/components/CompletionProviderStatus/CompletionProviderStatus.d.ts +1 -1
- package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js +24 -3
- package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
- package/esm/components/MemoriWidget/MemoriWidget.d.ts +1 -1
- package/esm/components/MemoriWidget/MemoriWidget.js +26 -4
- package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/esm/components/StartPanel/StartPanel.js +1 -1
- package/esm/components/StartPanel/StartPanel.js.map +1 -1
- package/esm/components/layouts/HiddenChat.d.ts +4 -0
- package/esm/components/layouts/HiddenChat.js +48 -0
- package/esm/components/layouts/HiddenChat.js.map +1 -0
- package/esm/components/layouts/ZoomedFullBody.d.ts +4 -0
- package/esm/components/layouts/ZoomedFullBody.js +5 -0
- package/esm/components/layouts/ZoomedFullBody.js.map +1 -0
- package/esm/components/layouts/hidden-chat.css +184 -0
- package/esm/context/visemeContext.d.ts +27 -0
- package/esm/context/visemeContext.js +216 -0
- package/esm/context/visemeContext.js.map +1 -0
- package/esm/helpers/utils.d.ts +7 -0
- package/esm/helpers/utils.js +45 -0
- package/esm/helpers/utils.js.map +1 -1
- package/esm/index.js +20 -16
- package/esm/index.js.map +1 -1
- package/esm/styles.css +1 -0
- package/package.json +2 -2
- package/src/components/Avatar/Avatar.test.tsx +28 -20
- package/src/components/Avatar/Avatar.tsx +19 -5
- package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +222 -0
- package/src/components/Avatar/AvatarView/{components → AvatarComponent/components}/controls.tsx +16 -10
- package/src/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.tsx +234 -0
- package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +123 -0
- package/src/components/Avatar/AvatarView/{components → AvatarComponent/components}/loader.tsx +1 -1
- package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +47 -8
- package/src/components/Avatar/AvatarView/index.tsx +35 -167
- package/src/components/Avatar/AvatarView/utils/useEyeBlink.ts +89 -48
- package/src/components/Avatar/AvatarView/utils/useMouthAnimation.ts +93 -0
- package/src/components/Avatar/AvatarView/utils/useSmile.ts +1 -1
- package/src/components/ChatBubble/ChatBubble.tsx +3 -4
- package/src/components/CompletionProviderStatus/CompletionProviderStatus.tsx +33 -3
- package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +18 -0
- package/src/components/MemoriWidget/MemoriWidget.tsx +60 -5
- package/src/components/StartPanel/StartPanel.tsx +1 -1
- package/src/components/layouts/Chat.test.tsx +7 -5
- package/src/components/layouts/FullPage.test.tsx +11 -8
- package/src/components/layouts/HiddenChat.test.tsx +37 -0
- package/src/components/layouts/HiddenChat.tsx +108 -0
- package/src/components/layouts/Totem.test.tsx +6 -4
- package/src/components/layouts/WebsiteAssistant.test.tsx +7 -5
- package/src/components/layouts/ZoomedFullBody.test.tsx +37 -0
- package/src/components/layouts/ZoomedFullBody.tsx +55 -0
- package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +210 -0
- package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +444 -0
- package/src/components/layouts/hidden-chat.css +184 -0
- package/src/components/layouts/layouts.stories.tsx +135 -19
- package/src/context/visemeContext.tsx +328 -0
- package/src/helpers/utils.ts +73 -0
- package/src/index.stories.tsx +40 -17
- package/src/index.tsx +82 -78
- package/src/styles.css +1 -0
- package/src/components/Avatar/AvatarView/components/fullbodyAvatar.tsx +0 -120
- package/src/components/Avatar/AvatarView/components/halfbodyAvatar.tsx +0 -69
- package/src/components/Avatar/AvatarView/utils/useMouthSpeaking.ts +0 -87
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
.sidebar-container {
|
|
2
|
+
position: fixed;
|
|
3
|
+
z-index: 1000;
|
|
4
|
+
top: 0;
|
|
5
|
+
right: 0;
|
|
6
|
+
height: 100%;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.sidebar-toggle {
|
|
10
|
+
display: none;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.sidebar-toggle-label {
|
|
14
|
+
position: absolute;
|
|
15
|
+
top: 50%;
|
|
16
|
+
right: 0;
|
|
17
|
+
display: flex;
|
|
18
|
+
width: auto;
|
|
19
|
+
height: 80px;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
padding: 10px 5px;
|
|
23
|
+
background-color: var(--memori-primary);
|
|
24
|
+
color: white;
|
|
25
|
+
cursor: pointer;
|
|
26
|
+
font-size: 18px;
|
|
27
|
+
font-weight: bold;
|
|
28
|
+
text-orientation: mixed;
|
|
29
|
+
transform: translateY(-50%);
|
|
30
|
+
transition: all 0.3s ease-in-out;
|
|
31
|
+
writing-mode: vertical-rl;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.open-label {
|
|
35
|
+
border-radius: 5px 0 0 5px;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.close-label {
|
|
39
|
+
right: 350px;
|
|
40
|
+
border-radius: 0 5px 5px 0;
|
|
41
|
+
opacity: 0;
|
|
42
|
+
pointer-events: none;
|
|
43
|
+
transform: rotate(180deg);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.sidebar {
|
|
47
|
+
position: fixed;
|
|
48
|
+
z-index: 1000;
|
|
49
|
+
top: 0;
|
|
50
|
+
right: -350px;
|
|
51
|
+
width: 350px;
|
|
52
|
+
height: 100%;
|
|
53
|
+
background-color: white;
|
|
54
|
+
box-shadow: -2px 0 5px rgba(0, 0, 0, 0.1);
|
|
55
|
+
transition: right 0.3s ease-in-out;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.sidebar-content h2 {
|
|
59
|
+
margin-bottom: 20px;
|
|
60
|
+
color: var(--memori-primary);
|
|
61
|
+
font-size: 24px;
|
|
62
|
+
font-weight: bold;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.sidebar-content ul {
|
|
66
|
+
padding: 0;
|
|
67
|
+
list-style-type: none;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.sidebar-content li {
|
|
71
|
+
margin-bottom: 10px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.sidebar-content a {
|
|
75
|
+
display: flex;
|
|
76
|
+
align-items: center;
|
|
77
|
+
color: #4b5563;
|
|
78
|
+
text-decoration: none;
|
|
79
|
+
transition: color 0.2s ease-in-out;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.sidebar-content a:hover {
|
|
83
|
+
color: var(--memori-primary);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.sidebar-content svg {
|
|
87
|
+
width: 20px;
|
|
88
|
+
height: 20px;
|
|
89
|
+
margin-right: 10px;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.sidebar-toggle:checked ~ .sidebar-container .sidebar {
|
|
93
|
+
right: 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.sidebar-toggle:checked ~ .sidebar-container .open-label {
|
|
97
|
+
opacity: 0;
|
|
98
|
+
pointer-events: none;
|
|
99
|
+
transform: translateY(-50%) translateX(350px);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.loading {
|
|
103
|
+
display: flex;
|
|
104
|
+
height: 100%;
|
|
105
|
+
align-items: center;
|
|
106
|
+
justify-content: center;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
.sidebar-content {
|
|
111
|
+
position: absolute;
|
|
112
|
+
top: -10px;
|
|
113
|
+
width: 100%;
|
|
114
|
+
padding: 20px;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.sidebar-toggle:checked ~ .sidebar-container .close-label {
|
|
118
|
+
opacity: 1;
|
|
119
|
+
pointer-events: auto;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.memori-hidden-chat-layout--controls {
|
|
123
|
+
display: flex;
|
|
124
|
+
height: 90%;
|
|
125
|
+
padding: 10px;
|
|
126
|
+
margin-top: 50px;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.memori-hidden-chat-layout-header--layout {
|
|
130
|
+
display: flex;
|
|
131
|
+
width: 100%;
|
|
132
|
+
align-items: center;
|
|
133
|
+
justify-content: flex-end;
|
|
134
|
+
padding: 10px;
|
|
135
|
+
margin: 0;
|
|
136
|
+
background-color: white;
|
|
137
|
+
color: white;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.memori-hidden-chat-layout-header--layout > button, .memori-hidden-chat-layout-header--layout > div > button {
|
|
141
|
+
display: flex;
|
|
142
|
+
width: 38px;
|
|
143
|
+
height: 38px;
|
|
144
|
+
align-items: center;
|
|
145
|
+
justify-content: center;
|
|
146
|
+
border-radius: 50%;
|
|
147
|
+
aspect-ratio: 1;
|
|
148
|
+
background-color: var(--memori-primary);
|
|
149
|
+
cursor: pointer;
|
|
150
|
+
transition: background-color 0.3s ease-in-out;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.memori-button--icon > svg {
|
|
154
|
+
margin: 0;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.icon,.icon-close {
|
|
158
|
+
width: 25px;
|
|
159
|
+
height: 25px;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.icon-close{
|
|
163
|
+
fill: white;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
@media (max-width: 768px) {
|
|
168
|
+
.sidebar-container {
|
|
169
|
+
display: none;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.sidebar {
|
|
173
|
+
right: -100%;
|
|
174
|
+
width: 100%;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.sidebar-toggle:checked ~ .sidebar-container .open-label {
|
|
178
|
+
transform: translateY(-50%) translateX(100%);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.close-label {
|
|
182
|
+
right: 100%;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SkinnedMesh } from 'three';
|
|
3
|
+
type AzureViseme = {
|
|
4
|
+
visemeId: number;
|
|
5
|
+
audioOffset: number;
|
|
6
|
+
};
|
|
7
|
+
type ProcessedViseme = {
|
|
8
|
+
name: string;
|
|
9
|
+
duration: number;
|
|
10
|
+
weight: number;
|
|
11
|
+
startTime: number;
|
|
12
|
+
};
|
|
13
|
+
interface VisemeContextType {
|
|
14
|
+
setMeshRef: (mesh: SkinnedMesh | null) => void;
|
|
15
|
+
addVisemeToQueue: (viseme: AzureViseme) => void;
|
|
16
|
+
processVisemeQueue: () => ProcessedViseme[];
|
|
17
|
+
clearVisemes: () => void;
|
|
18
|
+
isMeshSet: boolean;
|
|
19
|
+
setEmotion: (emotion: string) => void;
|
|
20
|
+
emotion: string;
|
|
21
|
+
getAzureStyleForEmotion: (emotion: string) => string;
|
|
22
|
+
}
|
|
23
|
+
export declare const VisemeProvider: React.FC<{
|
|
24
|
+
children: React.ReactNode;
|
|
25
|
+
}>;
|
|
26
|
+
export declare const useViseme: () => VisemeContextType;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useState, useCallback, useRef, useEffect, } from 'react';
|
|
3
|
+
const VisemeContext = createContext(undefined);
|
|
4
|
+
const VISEME_SMOOTHING = 0.5;
|
|
5
|
+
const DEFAULT_VISEME_DURATION = 0.1;
|
|
6
|
+
const MINIMUM_ELAPSED_TIME = 0.01;
|
|
7
|
+
const VISEME_SPEED_FACTOR = 1.0;
|
|
8
|
+
const AUDIO_PLAYBACK_RATE = 1.0;
|
|
9
|
+
const VISEME_BASE_SPEED = 1.0;
|
|
10
|
+
const VISEME_MAP = {
|
|
11
|
+
0: 'viseme_sil',
|
|
12
|
+
1: 'viseme_PP',
|
|
13
|
+
2: 'viseme_FF',
|
|
14
|
+
3: 'viseme_TH',
|
|
15
|
+
4: 'viseme_DD',
|
|
16
|
+
5: 'viseme_kk',
|
|
17
|
+
6: 'viseme_CH',
|
|
18
|
+
7: 'viseme_SS',
|
|
19
|
+
8: 'viseme_nn',
|
|
20
|
+
9: 'viseme_RR',
|
|
21
|
+
10: 'viseme_aa',
|
|
22
|
+
11: 'viseme_E',
|
|
23
|
+
12: 'viseme_I',
|
|
24
|
+
13: 'viseme_O',
|
|
25
|
+
14: 'viseme_U',
|
|
26
|
+
15: 'viseme_kk',
|
|
27
|
+
16: 'viseme_CH',
|
|
28
|
+
17: 'viseme_SS',
|
|
29
|
+
18: 'viseme_TH',
|
|
30
|
+
19: 'viseme_RR',
|
|
31
|
+
20: 'viseme_kk',
|
|
32
|
+
21: 'viseme_PP',
|
|
33
|
+
};
|
|
34
|
+
export const VisemeProvider = ({ children, }) => {
|
|
35
|
+
const [isMeshSet, setIsMeshSet] = useState(false);
|
|
36
|
+
const [emotion, setEmotion] = useState('Neutral');
|
|
37
|
+
const isAnimatingRef = useRef(false);
|
|
38
|
+
const currentVisemesRef = useRef([]);
|
|
39
|
+
const visemeQueueRef = useRef([]);
|
|
40
|
+
const animationFrameRef = useRef(null);
|
|
41
|
+
const startTimeRef = useRef(null);
|
|
42
|
+
const currentVisemeWeightRef = useRef({});
|
|
43
|
+
const meshRef = useRef(null);
|
|
44
|
+
const lerp = (start, end, alpha) => {
|
|
45
|
+
return start * (1 - alpha) + end * alpha;
|
|
46
|
+
};
|
|
47
|
+
const easeInOutCubic = (x) => {
|
|
48
|
+
return x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;
|
|
49
|
+
};
|
|
50
|
+
const setMeshRef = useCallback((mesh) => {
|
|
51
|
+
if (mesh && mesh.morphTargetDictionary && mesh.morphTargetInfluences) {
|
|
52
|
+
meshRef.current = mesh;
|
|
53
|
+
setIsMeshSet(true);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.error('Invalid mesh provided:', mesh);
|
|
57
|
+
}
|
|
58
|
+
}, [meshRef]);
|
|
59
|
+
const addVisemeToQueue = useCallback((viseme) => {
|
|
60
|
+
visemeQueueRef.current.push(viseme);
|
|
61
|
+
}, []);
|
|
62
|
+
const getCurrentViseme = useCallback((elapsedTime) => {
|
|
63
|
+
if (elapsedTime < MINIMUM_ELAPSED_TIME)
|
|
64
|
+
return null;
|
|
65
|
+
return currentVisemesRef.current.find((viseme, index) => {
|
|
66
|
+
const nextViseme = currentVisemesRef.current[index + 1];
|
|
67
|
+
return (elapsedTime >= viseme.startTime &&
|
|
68
|
+
(!nextViseme || elapsedTime < nextViseme.startTime));
|
|
69
|
+
});
|
|
70
|
+
}, []);
|
|
71
|
+
const getDynamicSpeedFactor = (visemeDuration) => {
|
|
72
|
+
const baseDuration = 0.1;
|
|
73
|
+
return (VISEME_BASE_SPEED * (baseDuration / visemeDuration) * AUDIO_PLAYBACK_RATE);
|
|
74
|
+
};
|
|
75
|
+
const applyViseme = useCallback((viseme, elapsedTime) => {
|
|
76
|
+
var _a;
|
|
77
|
+
if (!meshRef.current) {
|
|
78
|
+
console.error('Mesh not set');
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const visemeProgress = Math.min((elapsedTime - viseme.startTime) / viseme.duration, 1);
|
|
82
|
+
const dynamicSpeedFactor = getDynamicSpeedFactor(viseme.duration);
|
|
83
|
+
const adjustedProgress = visemeProgress * dynamicSpeedFactor;
|
|
84
|
+
const easedProgress = easeInOutCubic(adjustedProgress);
|
|
85
|
+
const targetWeight = Math.sin(easedProgress * Math.PI) * viseme.weight;
|
|
86
|
+
currentVisemeWeightRef.current[viseme.name] = lerp(currentVisemeWeightRef.current[viseme.name] || 0, targetWeight, VISEME_SMOOTHING);
|
|
87
|
+
const visemeIndex = (_a = meshRef.current.morphTargetDictionary) === null || _a === void 0 ? void 0 : _a[viseme.name];
|
|
88
|
+
if (typeof visemeIndex === 'number' &&
|
|
89
|
+
meshRef.current.morphTargetInfluences) {
|
|
90
|
+
meshRef.current.morphTargetInfluences[visemeIndex] =
|
|
91
|
+
currentVisemeWeightRef.current[viseme.name];
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
console.error(`Viseme not found in morph target dictionary: ${viseme.name}`);
|
|
95
|
+
}
|
|
96
|
+
}, []);
|
|
97
|
+
const animate = useCallback((time) => {
|
|
98
|
+
if (startTimeRef.current === null) {
|
|
99
|
+
startTimeRef.current = time;
|
|
100
|
+
}
|
|
101
|
+
const elapsedTime = ((time - startTimeRef.current) / 1000) * VISEME_SPEED_FACTOR;
|
|
102
|
+
const currentViseme = getCurrentViseme(elapsedTime);
|
|
103
|
+
if (currentViseme) {
|
|
104
|
+
applyViseme(currentViseme, elapsedTime);
|
|
105
|
+
}
|
|
106
|
+
if (currentVisemesRef.current.length > 0 &&
|
|
107
|
+
elapsedTime <
|
|
108
|
+
currentVisemesRef.current[currentVisemesRef.current.length - 1]
|
|
109
|
+
.startTime +
|
|
110
|
+
currentVisemesRef.current[currentVisemesRef.current.length - 1]
|
|
111
|
+
.duration) {
|
|
112
|
+
animationFrameRef.current = requestAnimationFrame(animate);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
clearVisemes();
|
|
116
|
+
}
|
|
117
|
+
}, [getCurrentViseme, applyViseme]);
|
|
118
|
+
const processVisemeQueue = useCallback(() => {
|
|
119
|
+
const azureVisemes = [...visemeQueueRef.current];
|
|
120
|
+
visemeQueueRef.current = [];
|
|
121
|
+
if (azureVisemes.length === 0) {
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
const processedVisemes = azureVisemes.map((currentViseme, i) => {
|
|
125
|
+
const nextViseme = azureVisemes[i + 1];
|
|
126
|
+
const duration = nextViseme
|
|
127
|
+
? (nextViseme.audioOffset - currentViseme.audioOffset) / 10000000
|
|
128
|
+
: DEFAULT_VISEME_DURATION;
|
|
129
|
+
const processedViseme = {
|
|
130
|
+
name: VISEME_MAP[currentViseme.visemeId] || 'viseme_sil',
|
|
131
|
+
duration,
|
|
132
|
+
weight: 1,
|
|
133
|
+
startTime: currentViseme.audioOffset / 10000000,
|
|
134
|
+
};
|
|
135
|
+
return processedViseme;
|
|
136
|
+
});
|
|
137
|
+
currentVisemesRef.current = processedVisemes;
|
|
138
|
+
if (!isAnimatingRef.current) {
|
|
139
|
+
isAnimatingRef.current = true;
|
|
140
|
+
startTimeRef.current = performance.now();
|
|
141
|
+
animationFrameRef.current = requestAnimationFrame(animate);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
if (startTimeRef.current !== null) {
|
|
145
|
+
const currentTime = performance.now();
|
|
146
|
+
const elapsedTime = ((currentTime - startTimeRef.current) / 1000) * VISEME_SPEED_FACTOR;
|
|
147
|
+
startTimeRef.current =
|
|
148
|
+
currentTime - (elapsedTime / VISEME_SPEED_FACTOR) * 1000;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return processedVisemes;
|
|
152
|
+
}, [isMeshSet, animate]);
|
|
153
|
+
const clearVisemes = useCallback(() => {
|
|
154
|
+
var _a, _b;
|
|
155
|
+
currentVisemesRef.current = [];
|
|
156
|
+
visemeQueueRef.current = [];
|
|
157
|
+
if (animationFrameRef.current !== null) {
|
|
158
|
+
cancelAnimationFrame(animationFrameRef.current);
|
|
159
|
+
animationFrameRef.current = null;
|
|
160
|
+
}
|
|
161
|
+
if (((_a = meshRef.current) === null || _a === void 0 ? void 0 : _a.morphTargetDictionary) &&
|
|
162
|
+
((_b = meshRef.current) === null || _b === void 0 ? void 0 : _b.morphTargetInfluences)) {
|
|
163
|
+
Object.values(meshRef.current.morphTargetDictionary).forEach(index => {
|
|
164
|
+
if (typeof index === 'number') {
|
|
165
|
+
meshRef.current.morphTargetInfluences[index] = 0;
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
currentVisemeWeightRef.current = {};
|
|
170
|
+
startTimeRef.current = null;
|
|
171
|
+
isAnimatingRef.current = false;
|
|
172
|
+
}, []);
|
|
173
|
+
const emotionMap = {
|
|
174
|
+
Gioia: { Gioria: 1 },
|
|
175
|
+
Rabbia: { Rabbia: 1 },
|
|
176
|
+
Sorpresa: { Sorpresa: 1 },
|
|
177
|
+
Tristezza: { Tristezza: 1 },
|
|
178
|
+
Timore: { Timore: 1 },
|
|
179
|
+
};
|
|
180
|
+
const emotionToAzureStyleMap = {
|
|
181
|
+
Gioia: 'cheerful',
|
|
182
|
+
Rabbia: 'angry',
|
|
183
|
+
Sorpresa: 'excited',
|
|
184
|
+
Tristezza: 'sad',
|
|
185
|
+
Timore: 'terrified',
|
|
186
|
+
};
|
|
187
|
+
function getAzureStyleForEmotion(emotion) {
|
|
188
|
+
return emotionToAzureStyleMap[emotion] || 'neutral';
|
|
189
|
+
}
|
|
190
|
+
useEffect(() => {
|
|
191
|
+
return () => {
|
|
192
|
+
if (animationFrameRef.current !== null) {
|
|
193
|
+
cancelAnimationFrame(animationFrameRef.current);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
}, []);
|
|
197
|
+
const contextValue = {
|
|
198
|
+
setMeshRef,
|
|
199
|
+
addVisemeToQueue,
|
|
200
|
+
processVisemeQueue,
|
|
201
|
+
clearVisemes,
|
|
202
|
+
isMeshSet,
|
|
203
|
+
setEmotion,
|
|
204
|
+
emotion,
|
|
205
|
+
getAzureStyleForEmotion,
|
|
206
|
+
};
|
|
207
|
+
return (_jsx(VisemeContext.Provider, { value: contextValue, children: children }));
|
|
208
|
+
};
|
|
209
|
+
export const useViseme = () => {
|
|
210
|
+
const context = useContext(VisemeContext);
|
|
211
|
+
if (context === undefined) {
|
|
212
|
+
throw new Error('useViseme must be used within a VisemeProvider');
|
|
213
|
+
}
|
|
214
|
+
return context;
|
|
215
|
+
};
|
|
216
|
+
//# sourceMappingURL=visemeContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visemeContext.js","sourceRoot":"","sources":["../../src/context/visemeContext.tsx"],"names":[],"mappings":"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"}
|
package/esm/helpers/utils.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Material, SkinnedMesh } from 'three';
|
|
1
2
|
export declare const hasTouchscreen: () => boolean;
|
|
2
3
|
export declare const isiOS: () => boolean;
|
|
3
4
|
export declare const isAndroid: () => boolean;
|
|
@@ -12,6 +13,7 @@ export declare const stripDuplicates: (text: string) => string;
|
|
|
12
13
|
export declare const stripEmojis: (text: string) => string;
|
|
13
14
|
export declare const stripMarkdown: (text: string) => string;
|
|
14
15
|
export declare const stripOutputTags: (text: string) => string;
|
|
16
|
+
export declare const stripHTML: (text: string) => string;
|
|
15
17
|
export declare const escapeHTML: (text: string) => string;
|
|
16
18
|
export declare const getFieldFromCustomData: (fieldName: string, data: string | undefined) => any;
|
|
17
19
|
export declare const stripObjNulls: (obj: {
|
|
@@ -54,3 +56,8 @@ export declare const mathJaxConfig: {
|
|
|
54
56
|
};
|
|
55
57
|
export declare const installMathJaxScript: () => void;
|
|
56
58
|
export declare const installMathJax: () => void;
|
|
59
|
+
export declare function correctMaterials(materials: {
|
|
60
|
+
[key: string]: Material;
|
|
61
|
+
}): void;
|
|
62
|
+
export declare function isSkinnedMesh(object: any): object is SkinnedMesh;
|
|
63
|
+
export declare function disposeObject(object: any): void;
|
package/esm/helpers/utils.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { useState, useEffect, useRef, useMemo } from 'react';
|
|
2
|
+
import { MeshStandardMaterial } from 'three';
|
|
3
|
+
import * as THREE from 'three';
|
|
2
4
|
export const hasTouchscreen = () => {
|
|
3
5
|
let hasTouchScreen = false;
|
|
4
6
|
if ('maxTouchPoints' in navigator) {
|
|
@@ -113,6 +115,7 @@ export const stripEmojis = (text) => {
|
|
|
113
115
|
return text.replaceAll(/[^\p{L}\p{N}\p{P}\p{Z}^$\n]/gu, '').trim();
|
|
114
116
|
};
|
|
115
117
|
export const stripMarkdown = (text) => {
|
|
118
|
+
text = text.replaceAll(/```*?```/g, '');
|
|
116
119
|
text = text.replaceAll(/```[\s\S]*?```/g, '');
|
|
117
120
|
text = text.replaceAll(/`[^`]*`/g, '');
|
|
118
121
|
text = text.replaceAll(/!\[[^\]]*\]\([^)]*\)/g, '');
|
|
@@ -141,6 +144,11 @@ export const stripOutputTags = (text) => {
|
|
|
141
144
|
let textAfter = output[1];
|
|
142
145
|
return stripOutputTags(textBefore + textAfter);
|
|
143
146
|
};
|
|
147
|
+
export const stripHTML = (text) => {
|
|
148
|
+
const el = document.createElement('div');
|
|
149
|
+
el.innerHTML = text;
|
|
150
|
+
return el.textContent || '';
|
|
151
|
+
};
|
|
144
152
|
export const escapeHTML = (text) => {
|
|
145
153
|
const el = document.createElement('textarea');
|
|
146
154
|
el.textContent = text;
|
|
@@ -235,4 +243,41 @@ export const installMathJax = () => {
|
|
|
235
243
|
window.MathJax = mathJaxConfig;
|
|
236
244
|
installMathJaxScript();
|
|
237
245
|
};
|
|
246
|
+
export function correctMaterials(materials) {
|
|
247
|
+
Object.values(materials).forEach(material => {
|
|
248
|
+
if (material instanceof MeshStandardMaterial) {
|
|
249
|
+
material.roughness = 0.8;
|
|
250
|
+
material.metalness = 0.1;
|
|
251
|
+
material.shadowSide = 2;
|
|
252
|
+
if (material.map) {
|
|
253
|
+
material.map.anisotropy = 16;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
export function isSkinnedMesh(object) {
|
|
259
|
+
return object.isSkinnedMesh === true;
|
|
260
|
+
}
|
|
261
|
+
export function disposeObject(object) {
|
|
262
|
+
if ('geometry' in object && object.geometry instanceof THREE.BufferGeometry) {
|
|
263
|
+
object.geometry.dispose();
|
|
264
|
+
}
|
|
265
|
+
if ('material' in object) {
|
|
266
|
+
if (Array.isArray(object.material)) {
|
|
267
|
+
if (Array.isArray(object.material)) {
|
|
268
|
+
object.material.forEach((material) => {
|
|
269
|
+
if (material instanceof THREE.Material) {
|
|
270
|
+
material.dispose();
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
else if (object && object.material instanceof THREE.Material) {
|
|
275
|
+
object.material.dispose();
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
if (object.children) {
|
|
280
|
+
object.children.forEach(disposeObject);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
238
283
|
//# sourceMappingURL=utils.js.map
|
package/esm/helpers/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"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"}
|
package/esm/index.js
CHANGED
|
@@ -9,6 +9,7 @@ import { installMathJax } from './helpers/utils';
|
|
|
9
9
|
import i18n from './i18n';
|
|
10
10
|
import { useTranslation } from 'react-i18next';
|
|
11
11
|
import I18nWrapper from './I18nWrapper';
|
|
12
|
+
import { VisemeProvider } from './context/visemeContext';
|
|
12
13
|
const getPreferredLanguages = () => {
|
|
13
14
|
const browserLanguage = navigator.language;
|
|
14
15
|
if (browserLanguage) {
|
|
@@ -94,22 +95,23 @@ const Memori = ({ ownerUserName, ownerUserID, memoriName, memoriID, integrationI
|
|
|
94
95
|
useEffect(() => {
|
|
95
96
|
installMathJax();
|
|
96
97
|
}, []);
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
98
|
+
return (_jsx(I18nWrapper, { children: _jsxs(VisemeProvider, { children: [_jsx(Toaster, { position: "top-center", reverseOrder: true }), memori ? (_jsx(MemoriWidget, { layout: layout, customLayout: customLayout, height: height, baseUrl: baseURL ||
|
|
99
|
+
(tenantID.startsWith('https://')
|
|
100
|
+
? tenantID
|
|
101
|
+
: `https://${tenantID}`), apiUrl: apiURL, memori: {
|
|
102
|
+
...memori,
|
|
103
|
+
secretToken,
|
|
104
|
+
}, ownerUserName: ownerUserName !== null && ownerUserName !== void 0 ? ownerUserName : memori.ownerUserName, ownerUserID: ownerUserID !== null && ownerUserID !== void 0 ? ownerUserID : memori.ownerUserID, tenantID: tenantID, memoriLang: spokenLang !== null && spokenLang !== void 0 ? spokenLang : (_b = (_a = memori.culture) === null || _a === void 0 ? void 0 : _a.split('-')) === null || _b === void 0 ? void 0 : _b[0], multilingual: multilingual, tenant: tenant, secret: secretToken, sessionID: sessionID, showShare: showShare, showCopyButton: showCopyButton, showTranslationOriginal: showTranslationOriginal, showSettings: showSettings, showInstruct: showInstruct, showTypingText: showTypingText, showClear: showClear, showOnlyLastMessages: showOnlyLastMessages, showInputs: showInputs, showDates: showDates, showContextPerLine: showContextPerLine, showLogin: showLogin !== null && showLogin !== void 0 ? showLogin : memori === null || memori === void 0 ? void 0 : memori.enableDeepThought, integration: (_c = memori === null || memori === void 0 ? void 0 : memori.integrations) === null || _c === void 0 ? void 0 : _c.find(i => integrationID
|
|
105
|
+
? i.integrationID === integrationID
|
|
106
|
+
: !!i.publish && i.type === 'LANDING_EXPERIENCE'), initialContextVars: context, initialQuestion: initialQuestion, authToken: authToken, AZURE_COGNITIVE_SERVICES_TTS_KEY: speechKey || AZURE_COGNITIVE_SERVICES_TTS_KEY, enableAudio: enableAudio, defaultSpeakerActive: defaultSpeakerActive, disableTextEnteredEvents: disableTextEnteredEvents, onStateChange: onStateChange, additionalInfo: additionalInfo, customMediaRenderer: customMediaRenderer, additionalSettings: additionalSettings, userAvatar: userAvatar, ...(tag && pin ? { personification: { tag, pin } } : {}) })) : (_jsx("div", { style: {
|
|
107
|
+
display: 'flex',
|
|
108
|
+
alignItems: 'center',
|
|
109
|
+
justifyContent: 'center',
|
|
110
|
+
}, children: _jsxs("p", { style: {
|
|
111
|
+
textAlign: 'center',
|
|
112
|
+
margin: '2rem auto',
|
|
113
|
+
textTransform: 'capitalize',
|
|
114
|
+
}, children: [t('loading') || 'Loading', "..."] }) }))] }) }));
|
|
113
115
|
};
|
|
114
116
|
Memori.propTypes = {
|
|
115
117
|
memoriName: PropTypes.string,
|
|
@@ -126,6 +128,8 @@ Memori.propTypes = {
|
|
|
126
128
|
'TOTEM',
|
|
127
129
|
'WEBSITE_ASSISTANT',
|
|
128
130
|
'CHAT',
|
|
131
|
+
'HIDDEN_CHAT',
|
|
132
|
+
'ZOOMED_FULL_BODY',
|
|
129
133
|
]),
|
|
130
134
|
customLayout: PropTypes.any,
|
|
131
135
|
showShare: PropTypes.bool,
|