@memori.ai/memori-react 7.11.3 → 7.12.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 +48 -0
  2. package/README.md +2 -1
  3. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +52 -75
  4. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  5. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js +2 -2
  6. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js.map +1 -1
  7. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +1 -1
  8. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +8 -2
  9. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  10. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.d.ts +1 -0
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js +6 -3
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js.map +1 -1
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js +1 -1
  14. package/dist/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js.map +1 -1
  15. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.d.ts +1 -1
  16. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.js +1 -1
  17. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.js.map +1 -1
  18. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +1 -1
  19. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  20. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +74 -0
  21. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +101 -0
  22. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -0
  23. package/dist/components/Chat/Chat.d.ts +10 -1
  24. package/dist/components/Chat/Chat.js +2 -10
  25. package/dist/components/Chat/Chat.js.map +1 -1
  26. package/dist/components/ChatBubble/ChatBubble.css +4 -0
  27. package/dist/components/ChatBubble/ChatBubble.js +14 -4
  28. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  29. package/dist/components/ChatInputs/ChatInputs.d.ts +11 -2
  30. package/dist/components/ChatInputs/ChatInputs.js +44 -6
  31. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  32. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.css +8 -0
  33. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js +75 -51
  34. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
  35. package/dist/components/ExpertsDrawer/ExpertsDrawer.js +1 -1
  36. package/dist/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  37. package/dist/components/FilePreview/FilePreview.css +155 -0
  38. package/dist/components/FilePreview/FilePreview.d.ts +12 -0
  39. package/dist/components/FilePreview/FilePreview.js +21 -0
  40. package/dist/components/FilePreview/FilePreview.js.map +1 -0
  41. package/dist/components/MemoriWidget/MemoriWidget.d.ts +3 -1
  42. package/dist/components/MemoriWidget/MemoriWidget.js +26 -11
  43. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  44. package/dist/components/UploadButton/UploadButton.css +38 -0
  45. package/dist/components/UploadButton/UploadButton.d.ts +8 -0
  46. package/dist/components/UploadButton/UploadButton.js +79 -0
  47. package/dist/components/UploadButton/UploadButton.js.map +1 -0
  48. package/dist/components/icons/Preview.d.ts +5 -0
  49. package/dist/components/icons/Preview.js +6 -0
  50. package/dist/components/icons/Preview.js.map +1 -0
  51. package/dist/components/icons/Upload.d.ts +5 -0
  52. package/dist/components/icons/Upload.js +6 -0
  53. package/dist/components/icons/Upload.js.map +1 -0
  54. package/dist/index.d.ts +1 -0
  55. package/dist/index.js +3 -2
  56. package/dist/index.js.map +1 -1
  57. package/dist/styles.css +2 -0
  58. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +52 -75
  59. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  60. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js +2 -2
  61. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js.map +1 -1
  62. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +1 -1
  63. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +8 -2
  64. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  65. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.d.ts +1 -0
  66. package/esm/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js +6 -3
  67. package/esm/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js.map +1 -1
  68. package/esm/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js +1 -1
  69. package/esm/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js.map +1 -1
  70. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.d.ts +1 -1
  71. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.js +1 -1
  72. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.js.map +1 -1
  73. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +1 -1
  74. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  75. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +74 -0
  76. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +98 -0
  77. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -0
  78. package/esm/components/Chat/Chat.d.ts +10 -1
  79. package/esm/components/Chat/Chat.js +2 -10
  80. package/esm/components/Chat/Chat.js.map +1 -1
  81. package/esm/components/ChatBubble/ChatBubble.css +4 -0
  82. package/esm/components/ChatBubble/ChatBubble.js +14 -4
  83. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  84. package/esm/components/ChatInputs/ChatInputs.d.ts +11 -2
  85. package/esm/components/ChatInputs/ChatInputs.js +45 -7
  86. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  87. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.css +8 -0
  88. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js +76 -52
  89. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
  90. package/esm/components/ExpertsDrawer/ExpertsDrawer.js +1 -1
  91. package/esm/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  92. package/esm/components/FilePreview/FilePreview.css +155 -0
  93. package/esm/components/FilePreview/FilePreview.d.ts +12 -0
  94. package/esm/components/FilePreview/FilePreview.js +18 -0
  95. package/esm/components/FilePreview/FilePreview.js.map +1 -0
  96. package/esm/components/MemoriWidget/MemoriWidget.d.ts +3 -1
  97. package/esm/components/MemoriWidget/MemoriWidget.js +26 -11
  98. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  99. package/esm/components/UploadButton/UploadButton.css +38 -0
  100. package/esm/components/UploadButton/UploadButton.d.ts +8 -0
  101. package/esm/components/UploadButton/UploadButton.js +76 -0
  102. package/esm/components/UploadButton/UploadButton.js.map +1 -0
  103. package/esm/components/icons/Preview.d.ts +5 -0
  104. package/esm/components/icons/Preview.js +4 -0
  105. package/esm/components/icons/Preview.js.map +1 -0
  106. package/esm/components/icons/Upload.d.ts +5 -0
  107. package/esm/components/icons/Upload.js +4 -0
  108. package/esm/components/icons/Upload.js.map +1 -0
  109. package/esm/index.d.ts +1 -0
  110. package/esm/index.js +3 -2
  111. package/esm/index.js.map +1 -1
  112. package/esm/styles.css +2 -0
  113. package/package.json +2 -1
  114. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +120 -153
  115. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.ts +3 -6
  116. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +11 -1
  117. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.ts +1 -0
  118. package/src/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.ts +33 -10
  119. package/src/components/Avatar/AvatarView/AvatarComponent/components/PositionController.ts +1 -1
  120. package/src/components/Avatar/AvatarView/AvatarComponent/components/controls.tsx +2 -2
  121. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +1 -1
  122. package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +127 -0
  123. package/src/components/Chat/Chat.tsx +16 -10
  124. package/src/components/ChatBubble/ChatBubble.css +4 -0
  125. package/src/components/ChatBubble/ChatBubble.stories.tsx +12 -0
  126. package/src/components/ChatBubble/ChatBubble.tsx +23 -2
  127. package/src/components/ChatInputs/ChatInputs.stories.tsx +5 -0
  128. package/src/components/ChatInputs/ChatInputs.test.tsx +6 -6
  129. package/src/components/ChatInputs/ChatInputs.tsx +91 -23
  130. package/src/components/CompletionProviderStatus/CompletionProviderStatus.css +8 -0
  131. package/src/components/CompletionProviderStatus/CompletionProviderStatus.stories.tsx +1 -1
  132. package/src/components/CompletionProviderStatus/CompletionProviderStatus.tsx +95 -66
  133. package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +3 -1
  134. package/src/components/FilePreview/FilePreview.css +155 -0
  135. package/src/components/FilePreview/FilePreview.stories.tsx +66 -0
  136. package/src/components/FilePreview/FilePreview.test.tsx +26 -0
  137. package/src/components/FilePreview/FilePreview.tsx +85 -0
  138. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +149 -0
  139. package/src/components/MemoriWidget/MemoriWidget.tsx +68 -3
  140. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +240 -0
  141. package/src/components/UploadButton/UploadButton.css +38 -0
  142. package/src/components/UploadButton/UploadButton.stories.tsx +62 -0
  143. package/src/components/UploadButton/UploadButton.test.tsx +11 -0
  144. package/src/components/UploadButton/UploadButton.tsx +126 -0
  145. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +31 -0
  146. package/src/components/icons/Preview.tsx +23 -0
  147. package/src/components/icons/Upload.tsx +23 -0
  148. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +24 -0
  149. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +24 -0
  150. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +24 -0
  151. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +24 -0
  152. package/src/components/layouts/layouts.stories.tsx +30 -46
  153. package/src/index.stories.tsx +68 -2
  154. package/src/index.tsx +4 -0
  155. package/src/styles.css +2 -0
  156. package/src/components/Avatar/AvatarView/AvatarComponent/components/constants.ts +0 -29
package/esm/index.js CHANGED
@@ -25,7 +25,7 @@ const getPreferredLanguages = () => {
25
25
  fallbackLng: 'it',
26
26
  };
27
27
  };
28
- const Memori = ({ ownerUserName, ownerUserID, memoriName, memoriID, integrationID, tenantID, secretToken, sessionID, layout = 'DEFAULT', customLayout, showShare = true, showCopyButton = true, showTranslationOriginal = false, showSettings = true, showInstruct = false, showTypingText = false, showClear = false, showOnlyLastMessages = false, showInputs = true, showDates = false, showContextPerLine = false, showLogin, height = '100%', baseURL, apiURL = 'https://backend.memori.ai', engineURL = 'https://engine.memori.ai', tag, pin, context, initialQuestion, uiLang, spokenLang, multilingual, authToken, AZURE_COGNITIVE_SERVICES_TTS_KEY, enableAudio, defaultSpeakerActive = true, disableTextEnteredEvents = false, onStateChange, additionalInfo, customMediaRenderer, additionalSettings, userAvatar, useMathFormatting = false, }) => {
28
+ const Memori = ({ ownerUserName, ownerUserID, memoriName, memoriID, integrationID, tenantID, secretToken, sessionID, layout = 'DEFAULT', customLayout, showShare = true, showCopyButton = true, showTranslationOriginal = false, showSettings = true, showInstruct = false, showTypingText = false, showClear = false, showOnlyLastMessages = false, showInputs = true, showDates = false, showContextPerLine = false, showUpload = false, showLogin, height = '100%', baseURL, apiURL = 'https://backend.memori.ai', engineURL = 'https://engine.memori.ai', tag, pin, context, initialQuestion, uiLang, spokenLang, multilingual, authToken, AZURE_COGNITIVE_SERVICES_TTS_KEY, enableAudio, defaultSpeakerActive = true, disableTextEnteredEvents = false, onStateChange, additionalInfo, customMediaRenderer, additionalSettings, userAvatar, useMathFormatting = false, }) => {
29
29
  var _a, _b, _c;
30
30
  const [memori, setMemori] = useState();
31
31
  const [tenant, setTenant] = useState();
@@ -97,7 +97,7 @@ const Memori = ({ ownerUserName, ownerUserID, memoriName, memoriID, integrationI
97
97
  : `https://${tenantID}`), apiURL: apiURL, engineURL: engineURL, memori: {
98
98
  ...memori,
99
99
  secretToken,
100
- }, 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
100
+ }, 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, showUpload: showUpload, integration: (_c = memori === null || memori === void 0 ? void 0 : memori.integrations) === null || _c === void 0 ? void 0 : _c.find(i => integrationID
101
101
  ? i.integrationID === integrationID
102
102
  : !!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, useMathFormatting: useMathFormatting, ...(tag && pin ? { personification: { tag, pin } } : {}) })) : (_jsx("div", { style: {
103
103
  display: 'flex',
@@ -140,6 +140,7 @@ Memori.propTypes = {
140
140
  showOnlyLastMessages: PropTypes.bool,
141
141
  showTypingText: PropTypes.bool,
142
142
  showLogin: PropTypes.bool,
143
+ showUpload: PropTypes.bool,
143
144
  height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
144
145
  baseURL: PropTypes.string,
145
146
  apiURL: PropTypes.string,
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
package/esm/styles.css CHANGED
@@ -10,6 +10,8 @@
10
10
  @import url('./components/ui/Details.css');
11
11
  @import url('./components/ui/Expandable.css');
12
12
  @import url('./components/ui/Slider.css');
13
+ @import url('./components/UploadButton/UploadButton.css');
14
+ @import url('./components/FilePreview/FilePreview.css');
13
15
 
14
16
  @import url('./components/CompletionProviderStatus/CompletionProviderStatus.css');
15
17
  @import url('./components/PoweredBy/PoweredBy.css');
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "7.11.3",
2
+ "version": "7.12.0",
3
3
  "name": "@memori.ai/memori-react",
4
4
  "author": "Memori Srl",
5
5
  "main": "dist/index.js",
@@ -296,6 +296,7 @@
296
296
  "@react-three/drei": "8.20.2",
297
297
  "@react-three/fiber": "7.0.25",
298
298
  "classnames": "2.5.1",
299
+ "convertapi-js": "^1.0.8",
299
300
  "dompurify": "^3.2.1",
300
301
  "ellipsed": "1.6.0",
301
302
  "i18next": "22.0.6",
@@ -1,8 +1,15 @@
1
+ // Import required dependencies
1
2
  import React, { useState, useEffect, useCallback } from 'react';
2
3
  import AnimationControlPanel from './components/controls';
3
- import { FullbodyAvatar } from './components/FullbodyAvatar/fullbodyAvatar'
4
+ import { FullbodyAvatar } from './components/FullbodyAvatar/fullbodyAvatar';
4
5
  import HalfBodyAvatar from './components/halfbodyAvatar';
6
+ import {
7
+ BASE_ACTIONS,
8
+ MAPPING_BLEND_SHAPE_TO_EMOTION_CUSTOM_GLB,
9
+ MAPPING_BLEND_SHAPE_TO_EMOTION_RPM,
10
+ } from './constants';
5
11
 
12
+ // Props interface for AvatarView component
6
13
  interface Props {
7
14
  showControls: boolean;
8
15
  animation?: string;
@@ -18,43 +25,14 @@ interface Props {
18
25
  avatarDepth?: number;
19
26
  stopProcessing: () => void;
20
27
  resetVisemeQueue: () => void;
21
- updateCurrentViseme: (
22
- currentTime: number
23
- ) => { name: string; weight: number } | null;
28
+ updateCurrentViseme: (currentTime: number) => { name: string; weight: number } | null;
24
29
  setCameraZ: (value: number) => void;
25
30
  }
26
31
 
27
- interface BaseAction {
28
- weight: number;
29
- action?: string;
30
- }
31
-
32
- const baseActions: Record<string, BaseAction> = {
33
- Gioia1: { weight: 0 },
34
- Gioia2: { weight: 0 },
35
- Gioia3: { weight: 0 },
36
- Idle1: { weight: 1 },
37
- Idle2: { weight: 0 },
38
- Idle3: { weight: 0 },
39
- Idle4: { weight: 0 },
40
- Idle5: { weight: 0 },
41
- Rabbia1: { weight: 0 },
42
- Rabbia2: { weight: 0 },
43
- Rabbia3: { weight: 0 },
44
- Sorpresa1: { weight: 0 },
45
- Sorpresa2: { weight: 0 },
46
- Sorpresa3: { weight: 0 },
47
- Timore1: { weight: 0 },
48
- Timore2: { weight: 0 },
49
- Timore3: { weight: 0 },
50
- Tristezza1: { weight: 0 },
51
- Tristezza2: { weight: 0 },
52
- Tristezza3: { weight: 0 },
53
- Loading1: { weight: 0 },
54
- Loading2: { weight: 0 },
55
- Loading3: { weight: 0 },
56
- };
57
-
32
+ /**
33
+ * AvatarView Component
34
+ * Renders either a full body or half body 3D avatar with animations and morphing capabilities
35
+ */
58
36
  export const AvatarView: React.FC<Props & { halfBody: boolean }> = ({
59
37
  stopProcessing,
60
38
  chatEmission,
@@ -64,138 +42,137 @@ export const AvatarView: React.FC<Props & { halfBody: boolean }> = ({
64
42
  sex,
65
43
  eyeBlink,
66
44
  headMovement,
67
- // speaking,
68
45
  halfBody,
69
46
  loading,
70
- // isZoomed,
71
- avatarHeight,
72
- avatarDepth,
47
+ avatarHeight = 50,
48
+ avatarDepth = -50,
73
49
  updateCurrentViseme,
74
50
  resetVisemeQueue,
75
51
  setCameraZ,
76
52
  }) => {
53
+ // State management for avatar animations and morphing
77
54
  const [currentBaseAction, setCurrentBaseAction] = useState({
78
55
  action: animation || 'Idle1',
79
56
  weight: 1,
80
57
  });
81
-
82
- const [morphTargetInfluences, setMorphTargetInfluences] = useState<{
83
- [key: string]: number;
84
- }>({});
85
- const [morphTargetDictionary, setMorphTargetDictionary] = useState<{
86
- [key: string]: number;
87
- }>({});
88
- const [emotionMorphTargets, setEmotionMorphTargets] = useState<{
89
- [key: string]: number;
90
- }>({});
91
-
58
+ const [morphTargetInfluences, setMorphTargetInfluences] = useState<Record<string, number>>({});
59
+ const [morphTargetDictionary, setMorphTargetDictionary] = useState<Record<string, number>>({});
60
+ const [emotionMorphTargets, setEmotionMorphTargets] = useState<Record<string, number>>({});
61
+ const [isRPM, setIsRPM] = useState(false);
92
62
  const [timeScale, setTimeScale] = useState(0.8);
93
63
 
94
- // Set the morph target influences for the given emotions
95
- const setEmotionMorphTargetInfluences = useCallback((action: string) => {
96
- if (
97
- action === 'Loading1' ||
98
- action === 'Loading2' ||
99
- action === 'Loading3'
100
- ) {
64
+ // Map of basic emotions with their corresponding morph values
65
+ const emotionMap: Record<string, Record<string, number>> = {
66
+ Joy: { Joy: 1 },
67
+ Anger: { Anger: 1 },
68
+ Surprise: { Surprise: 1 },
69
+ Sadness: { Sadness: 1 },
70
+ Fear: { Fear: 1 },
71
+ };
72
+
73
+ // Helper function to get default emotion state (all set to 0)
74
+ const getDefaultEmotions = () =>
75
+ Object.keys(emotionMap).reduce((acc, key) => ({...acc, [key]: 0}), {});
76
+
77
+ // Handlers for different blend shape types
78
+ const handleRPMBlendShape = useCallback((outputContent: string) =>
79
+ MAPPING_BLEND_SHAPE_TO_EMOTION_RPM[outputContent as keyof typeof MAPPING_BLEND_SHAPE_TO_EMOTION_RPM],
80
+ []);
81
+
82
+ const handleCustomGLBBlendShape = useCallback((outputContent: string) =>
83
+ MAPPING_BLEND_SHAPE_TO_EMOTION_CUSTOM_GLB[outputContent as keyof typeof MAPPING_BLEND_SHAPE_TO_EMOTION_CUSTOM_GLB],
84
+ []);
85
+
86
+ // Handler for setting emotion morph target influences, used for RPM and GLB blend shapes
87
+ const setEmotionMorphTargetInfluences = useCallback((action: string, outputContent: string) => {
88
+ if (action.startsWith('Loading')) return;
89
+
90
+ const defaultEmotions = getDefaultEmotions();
91
+
92
+ // If output content is default, set default emotions
93
+ if (outputContent === 'default') {
94
+ setEmotionMorphTargets(defaultEmotions);
101
95
  return;
102
96
  }
103
97
 
104
- const emotionMap: Record<string, Record<string, number>> = {
105
- Gioia: { Gioria: 1 },
106
- Rabbia: { Rabbia: 1 },
107
- Sorpresa: { Sorpresa: 1 },
108
- Tristezza: { Tristezza: 1 },
109
- Timore: { Timore: 1 },
110
- };
111
-
112
- // Set all emotions to 0
113
- const defaultEmotions = Object.keys(emotionMap).reduce((acc, key) => {
114
- acc[key] = 0;
115
- return acc;
116
- }, {} as Record<string, number>);
117
-
118
- // Find the emotion that matches the action
119
- const emotion =
120
- Object.keys(emotionMap).find(key => action.startsWith(key)) || 'default';
121
-
122
- // Set the emotion values
123
- const emotionValues =
124
- emotion === 'default' ? defaultEmotions : emotionMap[emotion];
125
-
126
- setEmotionMorphTargets(_ => ({
127
- ...defaultEmotions,
128
- ...emotionValues,
129
- }));
130
- }, []);
98
+ // If RPM, convert emotion to blend shape
99
+ /*from the chat output, we get the emotion and we convert it to the blend shapes
100
+ * we map the emotion to the blend shape, example:
101
+ * Anger -> {browDownLeft: 1, browDownRight: 0}
102
+ * Joy -> {browUpLeft: 1, browUpRight: 0}
103
+ * Surprise -> {browUpLeft: 1, browUpRight: 0}
104
+ * Sadness -> {browDownLeft: 1, browDownRight: 0}
105
+ * Fear -> {browDownLeft: 1, browDownRight: 0}
106
+ */
107
+ if (isRPM) {
108
+ const emotion = handleRPMBlendShape(outputContent);
109
+ setEmotionMorphTargets((_) => ({...defaultEmotions, ...emotion}));
110
+ } else {
111
+ // If GLB, convert italian emotions to english ones
112
+ const emotion = handleCustomGLBBlendShape(outputContent);
113
+ const emotionValues = emotion === 'default' ? defaultEmotions : emotionMap[emotion];
114
+ setEmotionMorphTargets((_) => ({...defaultEmotions, ...emotionValues}));
115
+ }
116
+ }, [isRPM, handleRPMBlendShape, handleCustomGLBBlendShape]);
131
117
 
132
- const onBaseActionChange = useCallback((action: string) => {
133
- setEmotionMorphTargetInfluences(action);
134
- setCurrentBaseAction({
135
- action,
136
- weight: 1,
137
- });
138
- }, []);
118
+ // Callback handlers for various avatar state changes
119
+ const onBaseActionChange = useCallback((action: string, outputContent: string) => {
139
120
 
140
- const onMorphTargetInfluencesChange = useCallback(
141
- (influences: { [key: string]: number }) => {
142
- setMorphTargetInfluences(prevInfluences => ({
143
- ...prevInfluences,
144
- ...influences,
145
- }));
146
- },
147
- []
148
- );
121
+ // Set emotion morph target influences
122
+ setEmotionMorphTargetInfluences(action, outputContent);
149
123
 
150
- const onMorphTargetDictionaryChange = useCallback(
151
- (dictionary: { [key: string]: number }) => {
152
- setMorphTargetDictionary(dictionary);
153
- },
154
- []
155
- );
124
+ // Set current base action
125
+ setCurrentBaseAction({action, weight: 1});
126
+ }, [setEmotionMorphTargetInfluences]);
127
+
128
+ const onMorphTargetInfluencesChange = useCallback((influences: Record<string, number>) => {
129
+ // Set morph target influences
130
+ setMorphTargetInfluences(prev => ({...prev, ...influences}));
131
+ }, []);
156
132
 
157
- const modifyTimeScale = useCallback((value: number) => {
158
- setTimeScale(value);
133
+ const onMorphTargetDictionaryChange = useCallback((dictionary: Record<string, number>) => {
134
+ // Set morph target dictionary
135
+ setMorphTargetDictionary(dictionary);
159
136
  }, []);
160
137
 
161
- // Set the emotion based on the chatEmission
138
+ // Effect to handle animation changes based on loading state and chat emissions
162
139
  useEffect(() => {
163
- //Check if chatEmission has a tag
164
- const hasOutputTag = chatEmission?.includes(
165
- '<output class="memori-emotion">'
166
- );
140
+
141
+ // If loading, set a random loading animation
142
+ if (loading) {
143
+ const randomNumber = Math.floor(Math.random() * 3) + 1;
144
+ onBaseActionChange(`Loading${randomNumber}`, '');
145
+ return;
146
+ }
147
+
148
+ // If there's chat emission, set the corresponding emotion animation
149
+ const hasOutputTag = chatEmission?.includes('<output class="memori-emotion">');
167
150
  const outputContent = hasOutputTag
168
- ? chatEmission
169
- ?.split('<output class="memori-emotion">')[1]
170
- ?.split('</output>')[0]
171
- ?.trim()
151
+ ? chatEmission?.split('<output class="memori-emotion">')[1]?.split('</output>')[0]?.trim()
172
152
  : null;
173
153
 
154
+ // If there's an emotion, set the corresponding animation
174
155
  if (outputContent) {
175
- //Based on the outputContent, set the emotion
176
- //The outputContent could be: "Gioia", "Sorpresa", "Tristezza", "Rabbia", "Timore"
177
- //Choose a random number between 1 and 3
178
156
  const randomNumber = Math.floor(Math.random() * 3) + 1;
179
- const emotion = `${outputContent}${randomNumber}`;
180
-
181
- onBaseActionChange(emotion);
157
+ onBaseActionChange(`${outputContent}${randomNumber}`, outputContent);
182
158
  } else {
183
- //Set a random idle animation
184
159
  const randomNumber = Math.floor(Math.random() * 5) + 1;
185
- const animation = `Idle${randomNumber === 3 ? 4 : randomNumber}`;
186
- onBaseActionChange(animation);
160
+ onBaseActionChange(`Idle${randomNumber === 3 ? 4 : randomNumber}`, '');
187
161
  }
188
- }, [chatEmission]);
189
-
190
- useEffect(() => {
191
- if (loading) {
192
- //Choose a random number between 1 and 3
193
- const randomNumber = Math.floor(Math.random() * 3) + 1;
194
- const animation = `Loading${randomNumber}`;
195
- onBaseActionChange(animation);
196
- }
197
- }, [loading]);
198
-
162
+ }, [chatEmission, loading, onBaseActionChange]);
163
+
164
+ // Common props shared between full body and half body avatars
165
+ const commonAvatarProps = {
166
+ url,
167
+ onCameraZChange: setCameraZ,
168
+ setMorphTargetInfluences,
169
+ setMorphTargetDictionary,
170
+ updateCurrentViseme,
171
+ avatarHeight,
172
+ avatarDepth,
173
+ };
174
+
175
+ // Render avatar with controls
199
176
  return (
200
177
  <>
201
178
  {showControls && (
@@ -205,40 +182,30 @@ export const AvatarView: React.FC<Props & { halfBody: boolean }> = ({
205
182
  onBaseActionChange={onBaseActionChange}
206
183
  onMorphTargetInfluencesChange={onMorphTargetInfluencesChange}
207
184
  onMorphTargetDictionaryChange={onMorphTargetDictionaryChange}
208
- baseActions={baseActions}
185
+ baseActions={BASE_ACTIONS}
209
186
  currentBaseAction={currentBaseAction}
210
- modifyTimeScale={modifyTimeScale}
187
+ modifyTimeScale={setTimeScale}
211
188
  />
212
189
  )}
190
+
213
191
  {halfBody ? (
214
192
  <HalfBodyAvatar
215
- url={url}
216
- onCameraZChange={setCameraZ}
217
- setMorphTargetInfluences={setMorphTargetInfluences}
218
- setMorphTargetDictionary={setMorphTargetDictionary}
219
- updateCurrentViseme={updateCurrentViseme}
220
- avatarHeight={avatarHeight || 50}
221
- avatarDepth={avatarDepth || -50}
193
+ {...commonAvatarProps}
222
194
  headMovement={headMovement}
223
195
  />
224
196
  ) : (
225
197
  <FullbodyAvatar
226
- url={url}
198
+ {...commonAvatarProps}
227
199
  sex={sex}
200
+ setIsRpm={setIsRPM}
228
201
  resetVisemeQueue={resetVisemeQueue}
229
202
  eyeBlink={eyeBlink}
230
203
  currentBaseAction={currentBaseAction}
231
204
  timeScale={timeScale}
232
205
  morphTargetInfluences={morphTargetInfluences}
233
- updateCurrentViseme={updateCurrentViseme}
234
206
  stopProcessing={stopProcessing}
235
- setMorphTargetDictionary={setMorphTargetDictionary}
236
- setMorphTargetInfluences={setMorphTargetInfluences}
237
207
  emotionMorphTargets={emotionMorphTargets}
238
208
  halfBody={halfBody}
239
- onCameraZChange={setCameraZ}
240
- avatarHeight={avatarHeight || 50}
241
- avatarDepth={avatarDepth || -50}
242
209
  />
243
210
  )}
244
211
  </>
@@ -1,6 +1,6 @@
1
1
  import { AnimationState, AnimationConfig } from './types';
2
2
  import { AnimationAction, AnimationMixer, LoopOnce } from 'three';
3
- import { DEFAULT_CONFIG } from '../constants';
3
+ import { DEFAULT_CONFIG, MAX_IDLE_LOOPS_DEFAULT } from '../../constants';
4
4
 
5
5
  /**
6
6
  * Controller class for managing avatar animations and transitions between states
@@ -23,7 +23,7 @@ export class AnimationController {
23
23
  // Counter for number of times current idle has looped
24
24
  private currentIdleLoopCount: number = 0;
25
25
  // Maximum number of idle loops before forcing change
26
- private readonly MAX_IDLE_LOOPS = 5;
26
+ private readonly MAX_IDLE_LOOPS = MAX_IDLE_LOOPS_DEFAULT;
27
27
  // Timestamp of last animation frame
28
28
  private lastAnimationTime: number = 0;
29
29
  // Flag to check if chat has already started
@@ -60,9 +60,6 @@ export class AnimationController {
60
60
 
61
61
  // Force idle change after MAX_IDLE_LOOPS
62
62
  if (this.currentIdleLoopCount >= this.MAX_IDLE_LOOPS) {
63
- // console.log(
64
- // '[AnimationController] Max loops reached, changing idle animation'
65
- // );
66
63
  this.forceIdleChange();
67
64
  }
68
65
  }
@@ -74,7 +71,6 @@ export class AnimationController {
74
71
  * Forces transition to a new idle animation
75
72
  */
76
73
  private forceIdleChange() {
77
- // console.log('[AnimationController] Forcing idle change');
78
74
  this.currentIdleLoopCount = 0;
79
75
  this.lastAnimationTime = 0;
80
76
  this.transitionTo(AnimationState.IDLE);
@@ -133,6 +129,7 @@ export class AnimationController {
133
129
  try {
134
130
  let nextAction: AnimationAction | null = null;
135
131
 
132
+ // Select the next action based on the current state
136
133
  switch (state) {
137
134
  case AnimationState.LOADING:
138
135
  nextAction = this.actions[emotionName || 'Loading1'];
@@ -18,11 +18,12 @@ import {
18
18
  ANIMATION_URLS,
19
19
  DEFAULT_CONFIG,
20
20
  SCALE_LERP_FACTOR,
21
- } from '../constants';
21
+ } from '../../constants';
22
22
 
23
23
  export function FullbodyAvatar({
24
24
  url,
25
25
  sex,
26
+ setIsRpm,
26
27
  currentBaseAction,
27
28
  timeScale,
28
29
  eyeBlink,
@@ -65,12 +66,15 @@ export function FullbodyAvatar({
65
66
  );
66
67
 
67
68
  if (headMesh) {
69
+ // console.log('[FullbodyAvatar] Head mesh found:', headMesh.name);
68
70
  morphTargetControllerRef.current = new MorphTargetController(headMesh);
69
71
 
70
72
  if (headMesh.morphTargetDictionary && headMesh.morphTargetInfluences) {
73
+ // console.log('[FullbodyAvatar] Setting morph target dictionary and influences', headMesh.morphTargetDictionary, headMesh.morphTargetInfluences);
71
74
  setMorphTargetDictionary(headMesh.morphTargetDictionary);
72
75
  const initialInfluences = Object.keys(headMesh.morphTargetDictionary)
73
76
  .reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
77
+ // console.log('[FullbodyAvatar] Setting initial influences', initialInfluences);
74
78
  setMorphTargetInfluences(initialInfluences);
75
79
  }
76
80
  }
@@ -96,6 +100,12 @@ export function FullbodyAvatar({
96
100
  object instanceof SkinnedMesh &&
97
101
  (object.name === 'GBNL__Head' || object.name === 'Wolf3D_Avatar')
98
102
  ) {
103
+ // console.log('[FullbodyAvatar] Found head mesh:', object.name);
104
+ if(object.name === 'GBNL__Head') {
105
+ setIsRpm(false);
106
+ } else {
107
+ setIsRpm(true);
108
+ }
99
109
  foundMesh = object;
100
110
  }
101
111
  });
@@ -14,6 +14,7 @@ export interface AnimationConfig {
14
14
  export interface FullbodyAvatarProps {
15
15
  url: string;
16
16
  sex: 'MALE' | 'FEMALE';
17
+ setIsRpm: (value: boolean) => void;
17
18
  onLoaded?: () => void;
18
19
  currentBaseAction: {
19
20
  action: string;