@memori.ai/memori-react 7.7.1 → 7.8.0-rc.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 (172) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/components/Avatar/Avatar.js +2 -2
  3. package/dist/components/Avatar/Avatar.js.map +1 -1
  4. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +6 -3
  5. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +10 -6
  6. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  7. package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.d.ts +13 -17
  8. package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js +110 -111
  9. package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js.map +1 -1
  10. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +3 -4
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +77 -52
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  13. package/dist/components/Avatar/AvatarView/index.d.ts +7 -3
  14. package/dist/components/Avatar/AvatarView/index.js +2 -2
  15. package/dist/components/Avatar/AvatarView/index.js.map +1 -1
  16. package/dist/components/MemoriWidget/MemoriWidget.js +34 -22
  17. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  18. package/dist/components/layouts/ZoomedFullBody.js +1 -8
  19. package/dist/components/layouts/ZoomedFullBody.js.map +1 -1
  20. package/dist/components/layouts/zoomed-full-body.css +5 -1
  21. package/dist/context/visemeContext.d.ts +9 -15
  22. package/dist/context/visemeContext.js +73 -190
  23. package/dist/context/visemeContext.js.map +1 -1
  24. package/esm/components/Avatar/Avatar.js +2 -2
  25. package/esm/components/Avatar/Avatar.js.map +1 -1
  26. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +6 -3
  27. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +10 -6
  28. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  29. package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.d.ts +13 -17
  30. package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js +112 -113
  31. package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js.map +1 -1
  32. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +3 -4
  33. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +81 -55
  34. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  35. package/esm/components/Avatar/AvatarView/index.d.ts +7 -3
  36. package/esm/components/Avatar/AvatarView/index.js +2 -2
  37. package/esm/components/Avatar/AvatarView/index.js.map +1 -1
  38. package/esm/components/MemoriWidget/MemoriWidget.js +34 -22
  39. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  40. package/esm/components/layouts/ZoomedFullBody.js +1 -8
  41. package/esm/components/layouts/ZoomedFullBody.js.map +1 -1
  42. package/esm/components/layouts/zoomed-full-body.css +5 -1
  43. package/esm/context/visemeContext.d.ts +9 -15
  44. package/esm/context/visemeContext.js +74 -191
  45. package/esm/context/visemeContext.js.map +1 -1
  46. package/package.json +1 -1
  47. package/src/components/Avatar/Avatar.tsx +5 -5
  48. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +33 -19
  49. package/src/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.tsx +181 -158
  50. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +116 -71
  51. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +12 -24
  52. package/src/components/Avatar/AvatarView/index.tsx +9 -8
  53. package/src/components/MemoriWidget/MemoriWidget.tsx +45 -38
  54. package/src/components/layouts/ZoomedFullBody.tsx +6 -11
  55. package/src/components/layouts/zoomed-full-body.css +5 -1
  56. package/src/context/visemeContext.tsx +130 -283
  57. package/dist/components/AttachmentMediaModal/AttachmentMediaModal.d.ts +0 -14
  58. package/dist/components/AttachmentMediaModal/AttachmentMediaModal.js +0 -66
  59. package/dist/components/AttachmentMediaModal/AttachmentMediaModal.js.map +0 -1
  60. package/dist/components/Avatar/AvatarView/components/controls.d.ts +0 -23
  61. package/dist/components/Avatar/AvatarView/components/controls.js +0 -55
  62. package/dist/components/Avatar/AvatarView/components/controls.js.map +0 -1
  63. package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.d.ts +0 -19
  64. package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.js +0 -61
  65. package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.js.map +0 -1
  66. package/dist/components/Avatar/AvatarView/components/halfbodyAvatar.d.ts +0 -9
  67. package/dist/components/Avatar/AvatarView/components/halfbodyAvatar.js +0 -39
  68. package/dist/components/Avatar/AvatarView/components/halfbodyAvatar.js.map +0 -1
  69. package/dist/components/Avatar/AvatarView/components/loader.d.ts +0 -5
  70. package/dist/components/Avatar/AvatarView/components/loader.js +0 -12
  71. package/dist/components/Avatar/AvatarView/components/loader.js.map +0 -1
  72. package/dist/components/Avatar/AvatarView/utils/useMouthSpeaking.d.ts +0 -2
  73. package/dist/components/Avatar/AvatarView/utils/useMouthSpeaking.js +0 -68
  74. package/dist/components/Avatar/AvatarView/utils/useMouthSpeaking.js.map +0 -1
  75. package/dist/components/AvatarView/components/avatar.d.ts +0 -9
  76. package/dist/components/AvatarView/components/avatar.js +0 -35
  77. package/dist/components/AvatarView/components/avatar.js.map +0 -1
  78. package/dist/components/AvatarView/components/fullbodyAvatar.d.ts +0 -10
  79. package/dist/components/AvatarView/components/fullbodyAvatar.js +0 -62
  80. package/dist/components/AvatarView/components/fullbodyAvatar.js.map +0 -1
  81. package/dist/components/AvatarView/components/loader.d.ts +0 -5
  82. package/dist/components/AvatarView/components/loader.js +0 -12
  83. package/dist/components/AvatarView/components/loader.js.map +0 -1
  84. package/dist/components/AvatarView/index.d.ts +0 -17
  85. package/dist/components/AvatarView/index.js +0 -35
  86. package/dist/components/AvatarView/index.js.map +0 -1
  87. package/dist/components/AvatarView/utils/useEyeBlink.d.ts +0 -2
  88. package/dist/components/AvatarView/utils/useEyeBlink.js +0 -40
  89. package/dist/components/AvatarView/utils/useEyeBlink.js.map +0 -1
  90. package/dist/components/AvatarView/utils/useHeadMovement.d.ts +0 -2
  91. package/dist/components/AvatarView/utils/useHeadMovement.js +0 -53
  92. package/dist/components/AvatarView/utils/useHeadMovement.js.map +0 -1
  93. package/dist/components/AvatarView/utils/useLoadingMorphAnim.d.ts +0 -2
  94. package/dist/components/AvatarView/utils/useLoadingMorphAnim.js +0 -34
  95. package/dist/components/AvatarView/utils/useLoadingMorphAnim.js.map +0 -1
  96. package/dist/components/AvatarView/utils/useMouthSpeaking.d.ts +0 -2
  97. package/dist/components/AvatarView/utils/useMouthSpeaking.js +0 -60
  98. package/dist/components/AvatarView/utils/useMouthSpeaking.js.map +0 -1
  99. package/dist/components/AvatarView/utils/useSmile.d.ts +0 -2
  100. package/dist/components/AvatarView/utils/useSmile.js +0 -30
  101. package/dist/components/AvatarView/utils/useSmile.js.map +0 -1
  102. package/dist/components/AvatarView/utils/utils.d.ts +0 -13
  103. package/dist/components/AvatarView/utils/utils.js +0 -42
  104. package/dist/components/AvatarView/utils/utils.js.map +0 -1
  105. package/dist/components/ImageUpload/ImageUpload.css +0 -168
  106. package/dist/components/ImageUpload/ImageUpload.d.ts +0 -28
  107. package/dist/components/ImageUpload/ImageUpload.js +0 -163
  108. package/dist/components/ImageUpload/ImageUpload.js.map +0 -1
  109. package/dist/components/layouts/Default.d.ts +0 -17
  110. package/dist/components/layouts/Default.js +0 -8
  111. package/dist/components/layouts/Default.js.map +0 -1
  112. package/dist/components/ui/Message.d.ts +0 -17
  113. package/dist/components/ui/Message.js +0 -13
  114. package/dist/components/ui/Message.js.map +0 -1
  115. package/esm/components/AttachmentMediaModal/AttachmentMediaModal.d.ts +0 -14
  116. package/esm/components/AttachmentMediaModal/AttachmentMediaModal.js +0 -63
  117. package/esm/components/AttachmentMediaModal/AttachmentMediaModal.js.map +0 -1
  118. package/esm/components/Avatar/AvatarView/components/controls.d.ts +0 -23
  119. package/esm/components/Avatar/AvatarView/components/controls.js +0 -52
  120. package/esm/components/Avatar/AvatarView/components/controls.js.map +0 -1
  121. package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.d.ts +0 -19
  122. package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.js +0 -57
  123. package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.js.map +0 -1
  124. package/esm/components/Avatar/AvatarView/components/halfbodyAvatar.d.ts +0 -9
  125. package/esm/components/Avatar/AvatarView/components/halfbodyAvatar.js +0 -35
  126. package/esm/components/Avatar/AvatarView/components/halfbodyAvatar.js.map +0 -1
  127. package/esm/components/Avatar/AvatarView/components/loader.d.ts +0 -5
  128. package/esm/components/Avatar/AvatarView/components/loader.js +0 -9
  129. package/esm/components/Avatar/AvatarView/components/loader.js.map +0 -1
  130. package/esm/components/Avatar/AvatarView/utils/useMouthSpeaking.d.ts +0 -2
  131. package/esm/components/Avatar/AvatarView/utils/useMouthSpeaking.js +0 -65
  132. package/esm/components/Avatar/AvatarView/utils/useMouthSpeaking.js.map +0 -1
  133. package/esm/components/AvatarView/components/avatar.d.ts +0 -9
  134. package/esm/components/AvatarView/components/avatar.js +0 -31
  135. package/esm/components/AvatarView/components/avatar.js.map +0 -1
  136. package/esm/components/AvatarView/components/fullbodyAvatar.d.ts +0 -10
  137. package/esm/components/AvatarView/components/fullbodyAvatar.js +0 -58
  138. package/esm/components/AvatarView/components/fullbodyAvatar.js.map +0 -1
  139. package/esm/components/AvatarView/components/loader.d.ts +0 -5
  140. package/esm/components/AvatarView/components/loader.js +0 -9
  141. package/esm/components/AvatarView/components/loader.js.map +0 -1
  142. package/esm/components/AvatarView/index.d.ts +0 -17
  143. package/esm/components/AvatarView/index.js +0 -31
  144. package/esm/components/AvatarView/index.js.map +0 -1
  145. package/esm/components/AvatarView/utils/useEyeBlink.d.ts +0 -2
  146. package/esm/components/AvatarView/utils/useEyeBlink.js +0 -37
  147. package/esm/components/AvatarView/utils/useEyeBlink.js.map +0 -1
  148. package/esm/components/AvatarView/utils/useHeadMovement.d.ts +0 -2
  149. package/esm/components/AvatarView/utils/useHeadMovement.js +0 -50
  150. package/esm/components/AvatarView/utils/useHeadMovement.js.map +0 -1
  151. package/esm/components/AvatarView/utils/useLoadingMorphAnim.d.ts +0 -2
  152. package/esm/components/AvatarView/utils/useLoadingMorphAnim.js +0 -31
  153. package/esm/components/AvatarView/utils/useLoadingMorphAnim.js.map +0 -1
  154. package/esm/components/AvatarView/utils/useMouthSpeaking.d.ts +0 -2
  155. package/esm/components/AvatarView/utils/useMouthSpeaking.js +0 -57
  156. package/esm/components/AvatarView/utils/useMouthSpeaking.js.map +0 -1
  157. package/esm/components/AvatarView/utils/useSmile.d.ts +0 -2
  158. package/esm/components/AvatarView/utils/useSmile.js +0 -27
  159. package/esm/components/AvatarView/utils/useSmile.js.map +0 -1
  160. package/esm/components/AvatarView/utils/utils.d.ts +0 -13
  161. package/esm/components/AvatarView/utils/utils.js +0 -33
  162. package/esm/components/AvatarView/utils/utils.js.map +0 -1
  163. package/esm/components/ImageUpload/ImageUpload.css +0 -168
  164. package/esm/components/ImageUpload/ImageUpload.d.ts +0 -28
  165. package/esm/components/ImageUpload/ImageUpload.js +0 -160
  166. package/esm/components/ImageUpload/ImageUpload.js.map +0 -1
  167. package/esm/components/layouts/Default.d.ts +0 -17
  168. package/esm/components/layouts/Default.js +0 -5
  169. package/esm/components/layouts/Default.js.map +0 -1
  170. package/esm/components/ui/Message.d.ts +0 -17
  171. package/esm/components/ui/Message.js +0 -10
  172. package/esm/components/ui/Message.js.map +0 -1
@@ -96,8 +96,7 @@ Default.args = {
96
96
  headMovement: false,
97
97
  rotateAvatar: false,
98
98
  speaking: false,
99
- clearVisemes: () => {},
100
- setMeshRef: () => {},
99
+ updateCurrentViseme: () => {},
101
100
  url: 'https://assets.memori.ai/api/v2/asset/b791f77c-1a94-4272-829e-eca82fcc62b7.glb',
102
101
  fallbackImg:
103
102
  'https://assets.memori.ai/api/v2/asset/d8035229-08cf-42a7-a532-ab051df2603d.png',
@@ -105,8 +104,7 @@ Default.args = {
105
104
 
106
105
  export const EyeBlink = Template.bind({});
107
106
  EyeBlink.args = {
108
- clearVisemes: () => {},
109
- setMeshRef: () => {},
107
+ updateCurrentViseme: () => {},
110
108
  eyeBlink: true,
111
109
  headMovement: false,
112
110
  rotateAvatar: false,
@@ -118,8 +116,7 @@ EyeBlink.args = {
118
116
 
119
117
  export const HeadMovement = Template.bind({});
120
118
  HeadMovement.args = {
121
- clearVisemes: () => {},
122
- setMeshRef: () => {},
119
+ updateCurrentViseme: () => {},
123
120
  eyeBlink: false,
124
121
  headMovement: true,
125
122
  rotateAvatar: false,
@@ -131,8 +128,7 @@ HeadMovement.args = {
131
128
 
132
129
  export const RotateAvatar = Template.bind({});
133
130
  RotateAvatar.args = {
134
- clearVisemes: () => {},
135
- setMeshRef: () => {},
131
+ updateCurrentViseme: () => {},
136
132
  eyeBlink: false,
137
133
  headMovement: false,
138
134
  rotateAvatar: true,
@@ -144,8 +140,7 @@ RotateAvatar.args = {
144
140
 
145
141
  export const Speaking = Template.bind({});
146
142
  Speaking.args = {
147
- clearVisemes: () => {},
148
- setMeshRef: () => {},
143
+ updateCurrentViseme: () => {},
149
144
  eyeBlink: false,
150
145
  headMovement: false,
151
146
  rotateAvatar: false,
@@ -162,8 +157,7 @@ Fullbody.args = {
162
157
  headMovement: true,
163
158
  rotateAvatar: true,
164
159
  speaking: false,
165
- clearVisemes: () => {},
166
- setMeshRef: () => {},
160
+ updateCurrentViseme: () => {},
167
161
  url: 'https://models.readyplayer.me/63b55751f17e295642bf07a2.glb',
168
162
  fallbackImg:
169
163
  'https://assets.memori.ai/api/v2/asset/3049582f-db5f-452c-913d-e4340d4afd0a.png',
@@ -178,8 +172,7 @@ FullbodyZoomed.args = {
178
172
  rotateAvatar: true,
179
173
  speaking: false,
180
174
  isZoomed: true,
181
- clearVisemes: () => {},
182
- setMeshRef: () => {},
175
+ updateCurrentViseme: () => {},
183
176
  url: 'https://assets.memori.ai/api/v2/asset/3f5ef41c-6c4c-449c-888d-cf9c89782528.glb',
184
177
  fallbackImg:
185
178
  'https://assets.memori.ai/api/v2/asset/3049582f-db5f-452c-913d-e4340d4afd0a.png',
@@ -193,8 +186,7 @@ FullbodyAnimatedIdle.args = {
193
186
  headMovement: true,
194
187
  rotateAvatar: true,
195
188
  speaking: false,
196
- clearVisemes: () => {},
197
- setMeshRef: () => {},
189
+ updateCurrentViseme: () => {},
198
190
  url: 'https://models.readyplayer.me/63b55751f17e295642bf07a2.glb',
199
191
  fallbackImg:
200
192
  'https://assets.memori.ai/api/v2/asset/3049582f-db5f-452c-913d-e4340d4afd0a.png',
@@ -209,8 +201,7 @@ FullbodyAnimatedLoading.args = {
209
201
  headMovement: true,
210
202
  rotateAvatar: true,
211
203
  speaking: false,
212
- clearVisemes: () => {},
213
- setMeshRef: () => {},
204
+ updateCurrentViseme: () => {},
214
205
  url: 'https://models.readyplayer.me/63b55751f17e295642bf07a2.glb',
215
206
  fallbackImg:
216
207
  'https://assets.memori.ai/api/v2/asset/3049582f-db5f-452c-913d-e4340d4afd0a.png',
@@ -225,8 +216,7 @@ FullbodyAnimatedSpeaking.args = {
225
216
  headMovement: true,
226
217
  rotateAvatar: true,
227
218
  speaking: true,
228
- clearVisemes: () => {},
229
- setMeshRef: () => {},
219
+ updateCurrentViseme: () => {},
230
220
  url: 'https://models.readyplayer.me/63b55751f17e295642bf07a2.glb',
231
221
  fallbackImg:
232
222
  'https://assets.memori.ai/api/v2/asset/3049582f-db5f-452c-913d-e4340d4afd0a.png',
@@ -241,8 +231,7 @@ FullbodyFemale.args = {
241
231
  headMovement: true,
242
232
  rotateAvatar: true,
243
233
  speaking: false,
244
- clearVisemes: () => {},
245
- setMeshRef: () => {},
234
+ updateCurrentViseme: () => {},
246
235
  url: 'https://models.readyplayer.me/650d50c2663b19e0d2831b2b.glb',
247
236
  fallbackImg:
248
237
  'https://assets.memori.ai/api/v2/asset/3049582f-db5f-452c-913d-e4340d4afd0a.png',
@@ -256,8 +245,7 @@ FullbodyAnimatedFemale.args = {
256
245
  headMovement: true,
257
246
  rotateAvatar: true,
258
247
  speaking: true,
259
- clearVisemes: () => {},
260
- setMeshRef: () => {},
248
+ updateCurrentViseme: () => {},
261
249
  url: 'https://models.readyplayer.me/650d50c2663b19e0d2831b2b.glb',
262
250
  fallbackImg:
263
251
  'https://assets.memori.ai/api/v2/asset/3049582f-db5f-452c-913d-e4340d4afd0a.png',
@@ -23,8 +23,9 @@ export interface Props {
23
23
  isZoomed?: boolean;
24
24
  chatEmission?: any;
25
25
  setMeshRef?: any;
26
- clearVisemes: () => void;
27
- setEmotion: (emotion: string) => void;
26
+ stopProcessing: () => void;
27
+ resetVisemeQueue: () => void;
28
+ updateCurrentViseme: (currentTime: number) => { name: string; weight: number } | null;
28
29
  }
29
30
 
30
31
  const defaultStyles = {
@@ -88,9 +89,9 @@ export default function ContainerAvatarView({
88
89
  showControls = false,
89
90
  isZoomed,
90
91
  chatEmission,
91
- setMeshRef,
92
- clearVisemes,
93
- setEmotion,
92
+ stopProcessing,
93
+ resetVisemeQueue,
94
+ updateCurrentViseme,
94
95
  }: Props) {
95
96
  return (
96
97
  <Canvas
@@ -114,9 +115,9 @@ export default function ContainerAvatarView({
114
115
  speaking={speaking || false}
115
116
  halfBody={halfBody || false}
116
117
  chatEmission={chatEmission}
117
- setMeshRef={setMeshRef}
118
- clearVisemes={clearVisemes}
119
- setEmotion={setEmotion}
118
+ updateCurrentViseme={updateCurrentViseme}
119
+ stopProcessing={stopProcessing}
120
+ resetVisemeQueue={resetVisemeQueue}
120
121
  />
121
122
  </Suspense>
122
123
  </Canvas>
@@ -543,11 +543,13 @@ const MemoriWidget = ({
543
543
  const [hideEmissions, setHideEmissions] = useState(false);
544
544
 
545
545
  const {
546
- addVisemeToQueue,
547
- processVisemeQueue,
548
- clearVisemes,
549
- emotion,
550
- getAzureStyleForEmotion,
546
+ updateCurrentViseme,
547
+ startProcessing,
548
+ resetAndStartProcessing,
549
+ isProcessing,
550
+ addViseme,
551
+ stopProcessing,
552
+ resetVisemeQueue,
551
553
  } = useViseme();
552
554
 
553
555
  useEffect(() => {
@@ -1961,15 +1963,12 @@ const MemoriWidget = ({
1961
1963
  onEndSpeakStartListen();
1962
1964
  };
1963
1965
 
1964
- // Clear any existing visemes before starting new speech
1965
- clearVisemes();
1966
+ // Add this before starting new speech synthesis
1967
+ resetVisemeQueue();
1966
1968
 
1967
1969
  // Set up the viseme event handler
1968
1970
  speechSynthesizer.visemeReceived = function (_, e) {
1969
- addVisemeToQueue({
1970
- visemeId: e.visemeId,
1971
- audioOffset: e.audioOffset,
1972
- });
1971
+ addViseme(e.visemeId, e.audioOffset);
1973
1972
  };
1974
1973
 
1975
1974
  const textToSpeak = escapeHTML(
@@ -1979,31 +1978,33 @@ const MemoriWidget = ({
1979
1978
  speechSynthesizer.speakSsmlAsync(
1980
1979
  `<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xmlns:emo="http://www.w3.org/2009/10/emotionml" xml:lang="${getCultureCodeByLanguage(
1981
1980
  userLang
1982
- )}"><voice name="${getTTSVoice(
1983
- userLang
1984
- )}"><prosody rate="0.95"><mstts:express-as style="${getAzureStyleForEmotion(
1985
- emotion
1986
- )}"><s>${replaceTextWithPhonemes(
1981
+ )}"><voice name="${getTTSVoice(userLang)}"><s>${replaceTextWithPhonemes(
1987
1982
  textToSpeak,
1988
1983
  userLang.toLowerCase()
1989
- )}</s></mstts:express-as></prosody></voice></speak>`,
1984
+ )}</s></voice></speak>`,
1990
1985
  result => {
1991
1986
  if (result) {
1992
1987
  setIsPlayingAudio(true);
1993
1988
  memoriSpeaking = true;
1994
1989
 
1995
- // Process the viseme data
1996
- processVisemeQueue();
1997
-
1998
1990
  try {
1999
1991
  // Decode the audio data
2000
- audioContext.decodeAudioData(result.audioData, function (buffer) {
2001
- source.buffer = buffer;
2002
- source.connect(audioContext.destination);
2003
-
2004
- if (history.length < 1 || (isSafari && isIOS)) {
2005
- source.start(0);
2006
- }
1992
+ audioContext!.decodeAudioData(result.audioData, function (buffer) {
1993
+ console.log('decoded');
1994
+ const currentSource = audioContext!.createBufferSource();
1995
+ currentSource.buffer = buffer;
1996
+ currentSource.connect(audioContext!.destination);
1997
+ startProcessing();
1998
+ currentSource.start();
1999
+
2000
+ currentSource.onended = () => {
2001
+ console.log('ended');
2002
+ setIsPlayingAudio(false);
2003
+ memoriSpeaking = false;
2004
+ stopProcessing();
2005
+ resetVisemeQueue();
2006
+ emitEndSpeakEvent();
2007
+ };
2007
2008
  });
2008
2009
 
2009
2010
  // Handle the audio context state changes
@@ -2012,27 +2013,28 @@ const MemoriWidget = ({
2012
2013
  audioContext.state === 'suspended' ||
2013
2014
  audioContext.state === 'closed'
2014
2015
  ) {
2016
+ console.log('suspended');
2015
2017
  source.disconnect();
2016
2018
  setIsPlayingAudio(false);
2017
- clearVisemes();
2019
+ stopProcessing();
2020
+ resetVisemeQueue();
2018
2021
  memoriSpeaking = false;
2022
+ emitEndSpeakEvent();
2019
2023
  } else if ((audioContext.state as string) === 'interrupted') {
2024
+ console.log('interrupted');
2025
+ stopProcessing();
2026
+ resetVisemeQueue();
2027
+
2020
2028
  audioContext.resume();
2021
2029
  }
2022
2030
  };
2023
-
2024
- audioContext.resume();
2025
-
2026
- if (speechSynthesizer) {
2027
- speechSynthesizer.close();
2028
- speechSynthesizer = null;
2029
- }
2030
2031
  } catch (e) {
2031
2032
  console.warn('speak error: ', e);
2032
2033
  window.speechSynthesis.speak(new SpeechSynthesisUtterance(text));
2033
- clearVisemes();
2034
2034
  setIsPlayingAudio(false);
2035
2035
  memoriSpeaking = false;
2036
+ stopProcessing();
2037
+ resetVisemeQueue();
2036
2038
 
2037
2039
  if (speechSynthesizer) {
2038
2040
  speechSynthesizer.close();
@@ -2042,7 +2044,8 @@ const MemoriWidget = ({
2042
2044
  }
2043
2045
  } else {
2044
2046
  audioContext.resume();
2045
- clearVisemes();
2047
+ stopProcessing();
2048
+ resetVisemeQueue();
2046
2049
  setIsPlayingAudio(false);
2047
2050
  memoriSpeaking = false;
2048
2051
  emitEndSpeakEvent();
@@ -2053,6 +2056,8 @@ const MemoriWidget = ({
2053
2056
  window.speechSynthesis.speak(new SpeechSynthesisUtterance(text));
2054
2057
  setIsPlayingAudio(false);
2055
2058
  memoriSpeaking = false;
2059
+ stopProcessing();
2060
+ resetVisemeQueue();
2056
2061
  emitEndSpeakEvent();
2057
2062
  }
2058
2063
  );
@@ -2994,7 +2999,9 @@ const MemoriWidget = ({
2994
2999
 
2995
3000
  const showFullHistory =
2996
3001
  showOnlyLastMessages === undefined
2997
- ? layout !== 'TOTEM' && layout !== 'WEBSITE_ASSISTANT'
3002
+ ? layout !== 'TOTEM' &&
3003
+ layout !== 'WEBSITE_ASSISTANT' &&
3004
+ layout !== 'HIDDEN_CHAT'
2998
3005
  : !showOnlyLastMessages;
2999
3006
 
3000
3007
  const headerProps: HeaderProps = {
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useCallback } from 'react';
1
+ import React from 'react';
2
2
  import Spin from '../ui/Spin';
3
3
  import { LayoutProps } from '../MemoriWidget/MemoriWidget';
4
4
 
@@ -21,20 +21,15 @@ const ZoomedFullBodyLayout: React.FC<LayoutProps> = ({
21
21
  loading = false,
22
22
  poweredBy,
23
23
  }) => {
24
- useEffect(() => {
25
- document.body.style.overflow = 'hidden';
26
- return () => {
27
- document.body.style.overflow = '';
28
- };
29
- }, []);
30
-
31
24
  return (
32
25
  <>
33
26
  {integrationStyle}
34
27
  {integrationBackground}
35
28
 
36
- <Spin className="memori-spin--zoomed-full-body" spinning={loading}>
37
- {showInstruct && ChangeMode && changeModeProps && <ChangeMode {...changeModeProps} />}
29
+ <Spin className="memori-spin--zoomed-full-body" spinning={loading}>
30
+ {showInstruct && ChangeMode && changeModeProps && (
31
+ <ChangeMode {...changeModeProps} />
32
+ )}
38
33
 
39
34
  {Header && headerProps && <Header {...headerProps} />}
40
35
 
@@ -61,4 +56,4 @@ const ZoomedFullBodyLayout: React.FC<LayoutProps> = ({
61
56
  );
62
57
  };
63
58
 
64
- export default ZoomedFullBodyLayout;
59
+ export default ZoomedFullBodyLayout;
@@ -13,4 +13,8 @@
13
13
 
14
14
  .memori--grid-column--zoomed-full-body {
15
15
  max-height: calc(100% - 80px) !important;
16
- }
16
+ }
17
+
18
+ .memori.memori-widget.memori-layout-zoomed_full_body .memori--grid {
19
+ height: calc(100% - 25px);
20
+ }