@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.
Files changed (156) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +10 -2
  3. package/dist/components/Avatar/Avatar.d.ts +2 -0
  4. package/dist/components/Avatar/Avatar.js +11 -6
  5. package/dist/components/Avatar/Avatar.js.map +1 -1
  6. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +20 -0
  7. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +107 -0
  8. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -0
  9. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.d.ts +26 -0
  10. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.js +59 -0
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.js.map +1 -0
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.d.ts +30 -0
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js +148 -0
  14. package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js.map +1 -0
  15. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +15 -0
  16. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +77 -0
  17. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -0
  18. package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.d.ts +5 -0
  19. package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.js +12 -0
  20. package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.js.map +1 -0
  21. package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.d.ts +2 -1
  22. package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.js +3 -2
  23. package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.js.map +1 -1
  24. package/dist/components/Avatar/AvatarView/index.d.ts +6 -1
  25. package/dist/components/Avatar/AvatarView/index.js +14 -84
  26. package/dist/components/Avatar/AvatarView/index.js.map +1 -1
  27. package/dist/components/Avatar/AvatarView/utils/useEyeBlink.d.ts +16 -2
  28. package/dist/components/Avatar/AvatarView/utils/useEyeBlink.js +62 -38
  29. package/dist/components/Avatar/AvatarView/utils/useEyeBlink.js.map +1 -1
  30. package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.d.ts +16 -0
  31. package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.js +59 -0
  32. package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.js.map +1 -0
  33. package/dist/components/Avatar/AvatarView/utils/useSmile.js +1 -1
  34. package/dist/components/Avatar/AvatarView/utils/useSmile.js.map +1 -1
  35. package/dist/components/ChatBubble/ChatBubble.js +2 -3
  36. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  37. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.d.ts +1 -1
  38. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js +24 -3
  39. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
  40. package/dist/components/MemoriWidget/MemoriWidget.d.ts +1 -1
  41. package/dist/components/MemoriWidget/MemoriWidget.js +25 -3
  42. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  43. package/dist/components/StartPanel/StartPanel.js +1 -1
  44. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  45. package/dist/components/layouts/HiddenChat.d.ts +4 -0
  46. package/dist/components/layouts/HiddenChat.js +51 -0
  47. package/dist/components/layouts/HiddenChat.js.map +1 -0
  48. package/dist/components/layouts/ZoomedFullBody.d.ts +4 -0
  49. package/dist/components/layouts/ZoomedFullBody.js +8 -0
  50. package/dist/components/layouts/ZoomedFullBody.js.map +1 -0
  51. package/dist/components/layouts/hidden-chat.css +184 -0
  52. package/dist/context/visemeContext.d.ts +27 -0
  53. package/dist/context/visemeContext.js +221 -0
  54. package/dist/context/visemeContext.js.map +1 -0
  55. package/dist/helpers/utils.d.ts +7 -0
  56. package/dist/helpers/utils.js +51 -1
  57. package/dist/helpers/utils.js.map +1 -1
  58. package/dist/index.js +20 -16
  59. package/dist/index.js.map +1 -1
  60. package/dist/styles.css +1 -0
  61. package/esm/components/Avatar/Avatar.d.ts +2 -0
  62. package/esm/components/Avatar/Avatar.js +11 -6
  63. package/esm/components/Avatar/Avatar.js.map +1 -1
  64. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +20 -0
  65. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +102 -0
  66. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -0
  67. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.d.ts +26 -0
  68. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.js +56 -0
  69. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.js.map +1 -0
  70. package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.d.ts +30 -0
  71. package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js +145 -0
  72. package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js.map +1 -0
  73. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +15 -0
  74. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +73 -0
  75. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -0
  76. package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.d.ts +5 -0
  77. package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.js +9 -0
  78. package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.js.map +1 -0
  79. package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.d.ts +2 -1
  80. package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.js +3 -2
  81. package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.js.map +1 -1
  82. package/esm/components/Avatar/AvatarView/index.d.ts +6 -1
  83. package/esm/components/Avatar/AvatarView/index.js +15 -85
  84. package/esm/components/Avatar/AvatarView/index.js.map +1 -1
  85. package/esm/components/Avatar/AvatarView/utils/useEyeBlink.d.ts +16 -2
  86. package/esm/components/Avatar/AvatarView/utils/useEyeBlink.js +61 -38
  87. package/esm/components/Avatar/AvatarView/utils/useEyeBlink.js.map +1 -1
  88. package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.d.ts +16 -0
  89. package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.js +55 -0
  90. package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.js.map +1 -0
  91. package/esm/components/Avatar/AvatarView/utils/useSmile.js +1 -1
  92. package/esm/components/Avatar/AvatarView/utils/useSmile.js.map +1 -1
  93. package/esm/components/ChatBubble/ChatBubble.js +2 -3
  94. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  95. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.d.ts +1 -1
  96. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js +24 -3
  97. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
  98. package/esm/components/MemoriWidget/MemoriWidget.d.ts +1 -1
  99. package/esm/components/MemoriWidget/MemoriWidget.js +26 -4
  100. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  101. package/esm/components/StartPanel/StartPanel.js +1 -1
  102. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  103. package/esm/components/layouts/HiddenChat.d.ts +4 -0
  104. package/esm/components/layouts/HiddenChat.js +48 -0
  105. package/esm/components/layouts/HiddenChat.js.map +1 -0
  106. package/esm/components/layouts/ZoomedFullBody.d.ts +4 -0
  107. package/esm/components/layouts/ZoomedFullBody.js +5 -0
  108. package/esm/components/layouts/ZoomedFullBody.js.map +1 -0
  109. package/esm/components/layouts/hidden-chat.css +184 -0
  110. package/esm/context/visemeContext.d.ts +27 -0
  111. package/esm/context/visemeContext.js +216 -0
  112. package/esm/context/visemeContext.js.map +1 -0
  113. package/esm/helpers/utils.d.ts +7 -0
  114. package/esm/helpers/utils.js +45 -0
  115. package/esm/helpers/utils.js.map +1 -1
  116. package/esm/index.js +20 -16
  117. package/esm/index.js.map +1 -1
  118. package/esm/styles.css +1 -0
  119. package/package.json +2 -2
  120. package/src/components/Avatar/Avatar.test.tsx +28 -20
  121. package/src/components/Avatar/Avatar.tsx +19 -5
  122. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +222 -0
  123. package/src/components/Avatar/AvatarView/{components → AvatarComponent/components}/controls.tsx +16 -10
  124. package/src/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.tsx +234 -0
  125. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +123 -0
  126. package/src/components/Avatar/AvatarView/{components → AvatarComponent/components}/loader.tsx +1 -1
  127. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +47 -8
  128. package/src/components/Avatar/AvatarView/index.tsx +35 -167
  129. package/src/components/Avatar/AvatarView/utils/useEyeBlink.ts +89 -48
  130. package/src/components/Avatar/AvatarView/utils/useMouthAnimation.ts +93 -0
  131. package/src/components/Avatar/AvatarView/utils/useSmile.ts +1 -1
  132. package/src/components/ChatBubble/ChatBubble.tsx +3 -4
  133. package/src/components/CompletionProviderStatus/CompletionProviderStatus.tsx +33 -3
  134. package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +18 -0
  135. package/src/components/MemoriWidget/MemoriWidget.tsx +60 -5
  136. package/src/components/StartPanel/StartPanel.tsx +1 -1
  137. package/src/components/layouts/Chat.test.tsx +7 -5
  138. package/src/components/layouts/FullPage.test.tsx +11 -8
  139. package/src/components/layouts/HiddenChat.test.tsx +37 -0
  140. package/src/components/layouts/HiddenChat.tsx +108 -0
  141. package/src/components/layouts/Totem.test.tsx +6 -4
  142. package/src/components/layouts/WebsiteAssistant.test.tsx +7 -5
  143. package/src/components/layouts/ZoomedFullBody.test.tsx +37 -0
  144. package/src/components/layouts/ZoomedFullBody.tsx +55 -0
  145. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +210 -0
  146. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +444 -0
  147. package/src/components/layouts/hidden-chat.css +184 -0
  148. package/src/components/layouts/layouts.stories.tsx +135 -19
  149. package/src/context/visemeContext.tsx +328 -0
  150. package/src/helpers/utils.ts +73 -0
  151. package/src/index.stories.tsx +40 -17
  152. package/src/index.tsx +82 -78
  153. package/src/styles.css +1 -0
  154. package/src/components/Avatar/AvatarView/components/fullbodyAvatar.tsx +0 -120
  155. package/src/components/Avatar/AvatarView/components/halfbodyAvatar.tsx +0 -69
  156. 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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"}
@@ -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;
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"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"}
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
- const renderer = memori ? (_jsx(MemoriWidget, { layout: layout, customLayout: customLayout, height: height, baseUrl: baseURL ||
98
- (tenantID.startsWith('https://') ? tenantID : `https://${tenantID}`), apiUrl: apiURL, memori: {
99
- ...memori,
100
- secretToken,
101
- }, 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
102
- ? i.integrationID === integrationID
103
- : !!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: {
104
- display: 'flex',
105
- alignItems: 'center',
106
- justifyContent: 'center',
107
- }, children: _jsxs("p", { style: {
108
- textAlign: 'center',
109
- margin: '2rem auto',
110
- textTransform: 'capitalize',
111
- }, children: [t('loading') || 'Loading', "..."] }) }));
112
- return (_jsxs(I18nWrapper, { children: [_jsx(Toaster, { position: "top-center", reverseOrder: true }), renderer] }));
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,