@memori.ai/memori-react 7.8.8 → 7.9.1

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 (190) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/dist/components/AccountForm/AccountForm.d.ts +3 -2
  3. package/dist/components/AccountForm/AccountForm.js +2 -4
  4. package/dist/components/AccountForm/AccountForm.js.map +1 -1
  5. package/dist/components/Avatar/Avatar.d.ts +4 -0
  6. package/dist/components/Avatar/Avatar.js +6 -6
  7. package/dist/components/Avatar/Avatar.js.map +1 -1
  8. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +3 -0
  9. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +3 -3
  10. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js +1 -1
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js.map +1 -1
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +1 -1
  14. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +48 -10
  15. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  16. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.d.ts +4 -1
  17. package/dist/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.d.ts +17 -0
  18. package/dist/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js +73 -0
  19. package/dist/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js.map +1 -0
  20. package/dist/components/Avatar/AvatarView/AvatarComponent/components/PositionController.d.ts +19 -0
  21. package/dist/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js +60 -0
  22. package/dist/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js.map +1 -0
  23. package/dist/components/Avatar/AvatarView/AvatarComponent/components/constants.d.ts +18 -0
  24. package/dist/components/Avatar/AvatarView/AvatarComponent/components/constants.js +26 -0
  25. package/dist/components/Avatar/AvatarView/AvatarComponent/components/constants.js.map +1 -0
  26. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +8 -7
  27. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +65 -78
  28. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  29. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +99 -0
  30. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.d.ts +12 -0
  31. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js +98 -0
  32. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js.map +1 -0
  33. package/dist/components/Avatar/AvatarView/index.d.ts +4 -1
  34. package/dist/components/Avatar/AvatarView/index.js +36 -13
  35. package/dist/components/Avatar/AvatarView/index.js.map +1 -1
  36. package/dist/components/Avatar/AvatarView/utils/hideHands.d.ts +2 -0
  37. package/dist/components/Avatar/AvatarView/utils/hideHands.js +14 -0
  38. package/dist/components/Avatar/AvatarView/utils/hideHands.js.map +1 -0
  39. package/dist/components/Chat/Chat.d.ts +1 -0
  40. package/dist/components/Chat/Chat.js +5 -2
  41. package/dist/components/Chat/Chat.js.map +1 -1
  42. package/dist/components/KnownFacts/KnownFacts.d.ts +3 -2
  43. package/dist/components/KnownFacts/KnownFacts.js +2 -4
  44. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  45. package/dist/components/LoginDrawer/LoginDrawer.d.ts +3 -2
  46. package/dist/components/LoginDrawer/LoginDrawer.js +4 -6
  47. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  48. package/dist/components/MemoriWidget/MemoriWidget.d.ts +3 -2
  49. package/dist/components/MemoriWidget/MemoriWidget.js +36 -10
  50. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  51. package/dist/components/SettingsDrawer/SettingsDrawer.css +4 -2
  52. package/dist/components/SettingsDrawer/SettingsDrawer.d.ts +6 -1
  53. package/dist/components/SettingsDrawer/SettingsDrawer.js +10 -4
  54. package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  55. package/dist/components/SignupForm/SignupForm.d.ts +3 -2
  56. package/dist/components/SignupForm/SignupForm.js +2 -4
  57. package/dist/components/SignupForm/SignupForm.js.map +1 -1
  58. package/dist/components/layouts/Totem.js +1 -1
  59. package/dist/components/layouts/Totem.js.map +1 -1
  60. package/dist/components/layouts/totem.css +9 -9
  61. package/dist/components/ui/Button.css +4 -0
  62. package/dist/components/ui/Button.d.ts +1 -0
  63. package/dist/components/ui/Button.js +2 -1
  64. package/dist/components/ui/Button.js.map +1 -1
  65. package/dist/components/ui/Slider.css +177 -0
  66. package/dist/components/ui/Slider.d.ts +12 -0
  67. package/dist/components/ui/Slider.js +78 -0
  68. package/dist/components/ui/Slider.js.map +1 -0
  69. package/dist/index.js +4 -1
  70. package/dist/index.js.map +1 -1
  71. package/dist/locales/en.json +11 -0
  72. package/dist/locales/it.json +11 -0
  73. package/dist/styles.css +1 -0
  74. package/esm/components/AccountForm/AccountForm.d.ts +3 -2
  75. package/esm/components/AccountForm/AccountForm.js +2 -4
  76. package/esm/components/AccountForm/AccountForm.js.map +1 -1
  77. package/esm/components/Avatar/Avatar.d.ts +4 -0
  78. package/esm/components/Avatar/Avatar.js +6 -6
  79. package/esm/components/Avatar/Avatar.js.map +1 -1
  80. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +3 -0
  81. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +3 -3
  82. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  83. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js +1 -1
  84. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js.map +1 -1
  85. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +1 -1
  86. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +45 -8
  87. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  88. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.d.ts +4 -1
  89. package/esm/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.d.ts +17 -0
  90. package/esm/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js +69 -0
  91. package/esm/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js.map +1 -0
  92. package/esm/components/Avatar/AvatarView/AvatarComponent/components/PositionController.d.ts +19 -0
  93. package/esm/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js +56 -0
  94. package/esm/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js.map +1 -0
  95. package/esm/components/Avatar/AvatarView/AvatarComponent/components/constants.d.ts +18 -0
  96. package/esm/components/Avatar/AvatarView/AvatarComponent/components/constants.js +23 -0
  97. package/esm/components/Avatar/AvatarView/AvatarComponent/components/constants.js.map +1 -0
  98. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +8 -7
  99. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +66 -80
  100. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  101. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +99 -0
  102. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.d.ts +12 -0
  103. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js +95 -0
  104. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js.map +1 -0
  105. package/esm/components/Avatar/AvatarView/index.d.ts +4 -1
  106. package/esm/components/Avatar/AvatarView/index.js +38 -15
  107. package/esm/components/Avatar/AvatarView/index.js.map +1 -1
  108. package/esm/components/Avatar/AvatarView/utils/hideHands.d.ts +2 -0
  109. package/esm/components/Avatar/AvatarView/utils/hideHands.js +10 -0
  110. package/esm/components/Avatar/AvatarView/utils/hideHands.js.map +1 -0
  111. package/esm/components/Chat/Chat.d.ts +1 -0
  112. package/esm/components/Chat/Chat.js +5 -2
  113. package/esm/components/Chat/Chat.js.map +1 -1
  114. package/esm/components/KnownFacts/KnownFacts.d.ts +3 -2
  115. package/esm/components/KnownFacts/KnownFacts.js +2 -4
  116. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  117. package/esm/components/LoginDrawer/LoginDrawer.d.ts +3 -2
  118. package/esm/components/LoginDrawer/LoginDrawer.js +4 -6
  119. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  120. package/esm/components/MemoriWidget/MemoriWidget.d.ts +3 -2
  121. package/esm/components/MemoriWidget/MemoriWidget.js +36 -10
  122. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  123. package/esm/components/SettingsDrawer/SettingsDrawer.css +4 -2
  124. package/esm/components/SettingsDrawer/SettingsDrawer.d.ts +6 -1
  125. package/esm/components/SettingsDrawer/SettingsDrawer.js +10 -4
  126. package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  127. package/esm/components/SignupForm/SignupForm.d.ts +3 -2
  128. package/esm/components/SignupForm/SignupForm.js +2 -4
  129. package/esm/components/SignupForm/SignupForm.js.map +1 -1
  130. package/esm/components/layouts/Totem.js +1 -1
  131. package/esm/components/layouts/Totem.js.map +1 -1
  132. package/esm/components/layouts/totem.css +9 -9
  133. package/esm/components/ui/Button.css +4 -0
  134. package/esm/components/ui/Button.d.ts +1 -0
  135. package/esm/components/ui/Button.js +2 -1
  136. package/esm/components/ui/Button.js.map +1 -1
  137. package/esm/components/ui/Slider.css +177 -0
  138. package/esm/components/ui/Slider.d.ts +12 -0
  139. package/esm/components/ui/Slider.js +75 -0
  140. package/esm/components/ui/Slider.js.map +1 -0
  141. package/esm/index.js +4 -1
  142. package/esm/index.js.map +1 -1
  143. package/esm/locales/en.json +11 -0
  144. package/esm/locales/it.json +11 -0
  145. package/esm/styles.css +1 -0
  146. package/package.json +3 -2
  147. package/src/components/AccountForm/AccountForm.test.tsx +2 -1
  148. package/src/components/AccountForm/AccountForm.tsx +3 -5
  149. package/src/components/Avatar/Avatar.test.tsx +8 -0
  150. package/src/components/Avatar/Avatar.tsx +19 -6
  151. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +17 -8
  152. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.ts +1 -1
  153. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +69 -18
  154. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.ts +4 -1
  155. package/src/components/Avatar/AvatarView/AvatarComponent/components/PositionController.ts +83 -0
  156. package/src/components/Avatar/AvatarView/AvatarComponent/components/{FullbodyAvatar/constants.ts → constants.ts} +2 -1
  157. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +106 -124
  158. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +99 -0
  159. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.tsx +187 -0
  160. package/src/components/Avatar/AvatarView/index.tsx +115 -43
  161. package/src/components/Avatar/AvatarView/utils/hideHands.ts +11 -0
  162. package/src/components/Avatar/__snapshots__/Avatar.test.tsx.snap +32 -93
  163. package/src/components/Chat/Chat.test.tsx +11 -0
  164. package/src/components/Chat/Chat.tsx +8 -1
  165. package/src/components/KnownFacts/KnownFacts.stories.tsx +5 -4
  166. package/src/components/KnownFacts/KnownFacts.test.tsx +6 -3
  167. package/src/components/KnownFacts/KnownFacts.tsx +3 -4
  168. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +2 -1
  169. package/src/components/LoginDrawer/LoginDrawer.test.tsx +9 -8
  170. package/src/components/LoginDrawer/LoginDrawer.tsx +5 -6
  171. package/src/components/MemoriWidget/MemoriWidget.tsx +56 -14
  172. package/src/components/SettingsDrawer/SettingsDrawer.css +4 -2
  173. package/src/components/SettingsDrawer/SettingsDrawer.test.tsx +24 -0
  174. package/src/components/SettingsDrawer/SettingsDrawer.tsx +76 -4
  175. package/src/components/SignupForm/SignupForm.test.tsx +3 -2
  176. package/src/components/SignupForm/SignupForm.tsx +3 -4
  177. package/src/components/layouts/Totem.tsx +1 -1
  178. package/src/components/layouts/layouts.stories.tsx +111 -3
  179. package/src/components/layouts/totem.css +9 -9
  180. package/src/components/ui/Button.css +4 -0
  181. package/src/components/ui/Button.tsx +3 -0
  182. package/src/components/ui/Slider.css +177 -0
  183. package/src/components/ui/Slider.stories.tsx +63 -0
  184. package/src/components/ui/Slider.tsx +142 -0
  185. package/src/index.stories.tsx +1 -1
  186. package/src/index.tsx +5 -1
  187. package/src/locales/en.json +11 -0
  188. package/src/locales/it.json +11 -0
  189. package/src/styles.css +1 -0
  190. /package/src/components/Avatar/AvatarView/AvatarComponent/components/{FullbodyAvatar/MorhTargetController.ts → MorphTargetController.ts} +0 -0
@@ -0,0 +1,56 @@
1
+ import { Vector3, MathUtils } from 'three';
2
+ import { AVATAR_POSITION, AVATAR_POSITION_ZOOMED } from './constants';
3
+ export class AvatarPositionController {
4
+ constructor(defaultPosition = AVATAR_POSITION.clone(), zoomedPosition = AVATAR_POSITION_ZOOMED.clone(), initialCameraZ = 0.6) {
5
+ this.defaultPosition = defaultPosition;
6
+ this.zoomedPosition = zoomedPosition;
7
+ this.currentScale = new Vector3(1, 1, 1);
8
+ this.targetScale = new Vector3(1, 1, 1);
9
+ this.currentPosition = defaultPosition.clone();
10
+ this.basePosition = defaultPosition.clone();
11
+ this.initialCameraPosition = new Vector3(0, 0, initialCameraZ);
12
+ }
13
+ mapHeightToScale(sliderValue, isHalfBody) {
14
+ if (isHalfBody) {
15
+ return MathUtils.lerp(1.4, 2.1, sliderValue / 100);
16
+ }
17
+ else {
18
+ return MathUtils.lerp(0.5, 1.5, sliderValue / 100);
19
+ }
20
+ }
21
+ mapDepthToCamera(depthValue, isHalfBody) {
22
+ const baseZ = this.initialCameraPosition.z;
23
+ if (isHalfBody) {
24
+ return MathUtils.lerp(baseZ, baseZ + 3, depthValue / 100);
25
+ }
26
+ else {
27
+ return MathUtils.lerp(baseZ, baseZ + 3, depthValue / 100);
28
+ }
29
+ }
30
+ updateHeight(heightValue, isHalfBody) {
31
+ const heightScale = this.mapHeightToScale(heightValue, isHalfBody);
32
+ this.targetScale.set(heightScale, heightScale, heightScale);
33
+ }
34
+ updateDepth(depthValue, isHalfBody) {
35
+ return this.mapDepthToCamera(depthValue, isHalfBody);
36
+ }
37
+ updateBasePosition(isZoomed) {
38
+ const newPosition = isZoomed ? this.zoomedPosition : this.defaultPosition;
39
+ this.basePosition.copy(newPosition);
40
+ this.currentPosition.copy(newPosition);
41
+ }
42
+ updateScale(lerpFactor) {
43
+ this.currentScale.lerp(this.targetScale, lerpFactor);
44
+ return this.currentScale;
45
+ }
46
+ getPosition() {
47
+ return this.currentPosition;
48
+ }
49
+ reset() {
50
+ this.currentScale.set(1, 1, 1);
51
+ this.targetScale.set(1, 1, 1);
52
+ this.currentPosition.copy(this.defaultPosition);
53
+ this.basePosition.copy(this.defaultPosition);
54
+ }
55
+ }
56
+ //# sourceMappingURL=PositionController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PositionController.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/PositionController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Vector3, Euler } from 'three';
2
+ import { AnimationConfig } from './FullbodyAvatar/types';
3
+ export declare const AVATAR_POSITION: Vector3;
4
+ export declare const AVATAR_ROTATION: Euler;
5
+ export declare const AVATAR_POSITION_ZOOMED: Vector3;
6
+ export declare const SCALE_LERP_FACTOR = 0.1;
7
+ export declare const ANIMATION_URLS: {
8
+ MALE: string;
9
+ FEMALE: string;
10
+ };
11
+ export declare const BLINK_CONFIG: {
12
+ minInterval: number;
13
+ maxInterval: number;
14
+ blinkDuration: number;
15
+ };
16
+ export declare const DEFAULT_CONFIG: AnimationConfig;
17
+ export declare const EMOTION_SMOOTHING = 0.3;
18
+ export declare const VISEME_SMOOTHING = 0.5;
@@ -0,0 +1,23 @@
1
+ import { Vector3, Euler } from 'three';
2
+ export const AVATAR_POSITION = new Vector3(0, -1, 0);
3
+ export const AVATAR_ROTATION = new Euler(0.175, 0, 0);
4
+ export const AVATAR_POSITION_ZOOMED = new Vector3(0, -1.45, 0);
5
+ export const SCALE_LERP_FACTOR = 0.1;
6
+ export const ANIMATION_URLS = {
7
+ MALE: 'https://assets.memori.ai/api/v2/asset/2c5e88a4-cf62-408b-9ef0-518b099dfcb2.glb',
8
+ FEMALE: 'https://assets.memori.ai/api/v2/asset/2adc934b-24b2-45bd-94ad-ffec58d3cb32.glb',
9
+ };
10
+ export const BLINK_CONFIG = {
11
+ minInterval: 1000,
12
+ maxInterval: 5000,
13
+ blinkDuration: 150,
14
+ };
15
+ export const DEFAULT_CONFIG = {
16
+ fadeInDuration: 0.8,
17
+ fadeOutDuration: 0.8,
18
+ idleCount: 5,
19
+ timeScale: 1.0,
20
+ };
21
+ export const EMOTION_SMOOTHING = 0.3;
22
+ export const VISEME_SMOOTHING = 0.5;
23
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gFAAgF;IACtF,MAAM,EACJ,gFAAgF;CACnF,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,GAAG;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,cAAc,EAAE,GAAG;IACnB,eAAe,EAAE,GAAG;IACpB,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,GAAG;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC"}
@@ -1,14 +1,15 @@
1
1
  interface HalfBodyAvatarProps {
2
2
  url: string;
3
3
  setMorphTargetInfluences: (morphTargetInfluences: any) => void;
4
- headMovement?: boolean;
5
- speaking?: boolean;
6
- onLoaded?: () => void;
7
4
  setMorphTargetDictionary: (morphTargetDictionary: any) => void;
8
- eyeBlink?: boolean;
9
- morphTargetInfluences: any;
10
5
  updateCurrentViseme: (currentTime: number) => any;
11
- morphTargetSmoothing?: number;
6
+ eyeBlink?: boolean;
7
+ heightValue?: number;
8
+ avatarHeight: number;
9
+ avatarDepth: number;
10
+ onLoaded?: () => void;
11
+ onCameraZChange: (value: number) => void;
12
+ headMovement?: boolean;
12
13
  }
13
- export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, eyeBlink, onLoaded, morphTargetSmoothing, updateCurrentViseme, }: HalfBodyAvatarProps): JSX.Element;
14
+ export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, updateCurrentViseme, eyeBlink, avatarHeight, avatarDepth, headMovement, onLoaded, onCameraZChange, }: HalfBodyAvatarProps): JSX.Element;
14
15
  export {};
@@ -1,99 +1,85 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useEffect, useRef } from 'react';
3
- import { SkinnedMesh, Vector3 } from 'three';
2
+ import { useEffect, useMemo, useRef } from 'react';
3
+ import { SkinnedMesh } from 'three';
4
4
  import { useGLTF } from '@react-three/drei';
5
+ import { useGraph, useFrame, useThree } from '@react-three/fiber';
5
6
  import { correctMaterials, isSkinnedMesh } from '../../../../../helpers/utils';
6
- import { useGraph, useFrame } from '@react-three/fiber';
7
- import { AnimationMixer, MathUtils } from 'three';
8
- const AVATAR_POSITION = new Vector3(0, -0.6, 0);
9
- const BLINK_CONFIG = {
10
- minInterval: 1000,
11
- maxInterval: 5000,
12
- blinkDuration: 150,
13
- };
14
- export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, eyeBlink, onLoaded, morphTargetSmoothing = 0.5, updateCurrentViseme, }) {
7
+ import { MorphTargetController } from './MorphTargetController';
8
+ import { AvatarPositionController } from './PositionController';
9
+ import { AVATAR_POSITION, SCALE_LERP_FACTOR, AVATAR_POSITION_ZOOMED, } from './constants';
10
+ import { hideHands } from '../../utils/utils';
11
+ import useHeadMovement from '../../utils/useHeadMovement';
12
+ export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, updateCurrentViseme, eyeBlink = false, avatarHeight = 50, avatarDepth = 0, headMovement = false, onLoaded, onCameraZChange, }) {
13
+ var _a;
15
14
  const { scene } = useGLTF(url);
16
15
  const { nodes, materials } = useGraph(scene);
17
- const mixer = useRef(new AnimationMixer(scene));
18
- const avatarMeshRef = useRef(null);
19
- const lastBlinkTime = useRef(0);
20
- const nextBlinkTime = useRef(0);
21
- const isBlinking = useRef(false);
22
- const blinkStartTime = useRef(0);
23
- const headMeshRef = useRef();
24
- useEffect(() => {
25
- correctMaterials(materials);
26
- scene.traverse((object) => {
27
- if (object instanceof SkinnedMesh) {
28
- if (object.name === 'GBNL__Head' || object.name === 'Wolf3D_Avatar') {
29
- headMeshRef.current = object;
30
- if (object.morphTargetDictionary && object.morphTargetInfluences) {
31
- setMorphTargetDictionary(object.morphTargetDictionary);
32
- const initialInfluences = Object.keys(object.morphTargetDictionary).reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
33
- setMorphTargetInfluences(initialInfluences);
34
- }
35
- }
16
+ const { camera } = useThree();
17
+ const morphTargetControllerRef = useRef();
18
+ const positionControllerRef = useRef();
19
+ const targetCameraZRef = useRef(camera.position.z);
20
+ useHeadMovement(headMovement, nodes);
21
+ const blinkStateRef = useRef({
22
+ isBlinking: false,
23
+ lastBlinkTime: 0,
24
+ nextBlinkTime: 0,
25
+ blinkStartTime: 0,
26
+ });
27
+ const headMesh = useMemo(() => {
28
+ let foundMesh;
29
+ scene === null || scene === void 0 ? void 0 : scene.traverse((object) => {
30
+ if (object instanceof SkinnedMesh &&
31
+ (object.name === 'GBNL__Head' || object.name === 'Wolf3D_Avatar')) {
32
+ foundMesh = object;
36
33
  }
37
34
  });
35
+ return foundMesh;
36
+ }, [scene]);
37
+ useEffect(() => {
38
+ if (!positionControllerRef.current) {
39
+ positionControllerRef.current = new AvatarPositionController(AVATAR_POSITION, AVATAR_POSITION_ZOOMED);
40
+ }
41
+ if (headMesh) {
42
+ morphTargetControllerRef.current = new MorphTargetController(headMesh);
43
+ if (headMesh.morphTargetDictionary && headMesh.morphTargetInfluences) {
44
+ setMorphTargetDictionary(headMesh.morphTargetDictionary);
45
+ const initialInfluences = Object.keys(headMesh.morphTargetDictionary)
46
+ .reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
47
+ setMorphTargetInfluences(initialInfluences);
48
+ }
49
+ }
50
+ correctMaterials(materials);
38
51
  onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded();
52
+ hideHands(nodes);
39
53
  return () => {
40
54
  Object.values(materials).forEach(material => material.dispose());
41
55
  Object.values(nodes)
42
56
  .filter(isSkinnedMesh)
43
57
  .forEach(mesh => mesh.geometry.dispose());
44
58
  };
45
- }, [materials, nodes, url, onLoaded, scene]);
46
- useFrame(state => {
47
- if (headMeshRef.current &&
48
- headMeshRef.current.morphTargetDictionary &&
49
- headMeshRef.current.morphTargetInfluences) {
50
- const currentTime = state.clock.getElapsedTime() * 1000;
51
- let blinkValue = 0;
52
- if (eyeBlink) {
53
- if (currentTime >= nextBlinkTime.current && !isBlinking.current) {
54
- isBlinking.current = true;
55
- blinkStartTime.current = currentTime;
56
- lastBlinkTime.current = currentTime;
57
- nextBlinkTime.current =
58
- currentTime +
59
- Math.random() *
60
- (BLINK_CONFIG.maxInterval - BLINK_CONFIG.minInterval) +
61
- BLINK_CONFIG.minInterval;
62
- }
63
- if (isBlinking.current) {
64
- const blinkProgress = (currentTime - blinkStartTime.current) / BLINK_CONFIG.blinkDuration;
65
- if (blinkProgress <= 0.5) {
66
- blinkValue = blinkProgress * 2;
67
- }
68
- else if (blinkProgress <= 1) {
69
- blinkValue = 2 - blinkProgress * 2;
70
- }
71
- else {
72
- isBlinking.current = false;
73
- blinkValue = 0;
74
- }
75
- }
76
- }
59
+ }, [materials, nodes, url, onLoaded, scene, headMesh]);
60
+ useEffect(() => {
61
+ if (positionControllerRef.current) {
62
+ positionControllerRef.current.updateHeight(avatarHeight, true);
63
+ }
64
+ }, [avatarHeight]);
65
+ useEffect(() => {
66
+ if (positionControllerRef.current && onCameraZChange) {
67
+ const newCameraZ = positionControllerRef.current.updateDepth(avatarDepth, true);
68
+ onCameraZChange(newCameraZ);
69
+ }
70
+ }, [avatarDepth, onCameraZChange]);
71
+ useFrame((state) => {
72
+ const currentTime = state.clock.elapsedTime * 1000;
73
+ if (morphTargetControllerRef.current) {
77
74
  const currentViseme = updateCurrentViseme(currentTime / 1000);
78
- Object.entries(headMeshRef.current.morphTargetDictionary).forEach(([key, index]) => {
79
- if (typeof index === 'number') {
80
- let targetValue = 0;
81
- if (currentViseme && key === currentViseme.name) {
82
- targetValue += currentViseme.weight * 1.3;
83
- }
84
- if (key === 'eyesClosed' && eyeBlink) {
85
- targetValue += blinkValue;
86
- }
87
- targetValue = MathUtils.clamp(targetValue, 0, 1);
88
- if (headMeshRef.current &&
89
- headMeshRef.current.morphTargetInfluences) {
90
- headMeshRef.current.morphTargetInfluences[index] = MathUtils.lerp(headMeshRef.current.morphTargetInfluences[index], targetValue, morphTargetSmoothing);
91
- }
92
- }
93
- });
94
- mixer.current.update(0.01);
75
+ morphTargetControllerRef.current.updateMorphTargets(currentTime, {}, currentViseme, eyeBlink, blinkStateRef.current);
76
+ }
77
+ if (scene && positionControllerRef.current) {
78
+ const newScale = positionControllerRef.current.updateScale(SCALE_LERP_FACTOR);
79
+ scene.scale.copy(newScale);
95
80
  }
96
81
  });
97
- return (_jsx("group", { position: AVATAR_POSITION, children: _jsx("primitive", { object: scene }) }));
82
+ const position = ((_a = positionControllerRef.current) === null || _a === void 0 ? void 0 : _a.getPosition()) || AVATAR_POSITION;
83
+ return (_jsx("group", { position: position, children: _jsx("primitive", { object: scene }) }));
98
84
  }
99
85
  //# sourceMappingURL=halfbodyAvatar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"halfbodyAvatar.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"halfbodyAvatar.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ .memori--position-controls {
2
+ position: fixed;
3
+ z-index: 1000;
4
+ top: auto; /* Remove top positioning */
5
+ top: 65px; /* Position from bottom to avoid overlapping with buttons */
6
+ left: 15px; /* Remove left positioning */
7
+ display: flex;
8
+ width: 350px; /* Fixed width */
9
+ max-width: 90%; /* Maximum width relative to screen */
10
+ height: 300px;
11
+ flex-direction: column;
12
+ padding: 16px;
13
+ border-radius: 16px;
14
+ -webkit-backdrop-filter: blur(10px);
15
+ backdrop-filter: blur(10px);
16
+ background-color: var(--memori-inner-bg, #fff);
17
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
18
+ gap: 0.5rem;
19
+ text-align: left;
20
+ transform: none; /* Remove transform */
21
+ }
22
+
23
+ /* Slider adjustments */
24
+ .memori--slider-container {
25
+ display: flex;
26
+ flex-direction: column;
27
+ padding: 8px 0;
28
+ gap: 0.75rem;
29
+ }
30
+
31
+ .memori--slider-label {
32
+ margin-bottom: 4px;
33
+ font-size: 1rem;
34
+ }
35
+
36
+ /* Button adjustments */
37
+ .memori--preset-buttons {
38
+ display: flex;
39
+ flex-direction: row;
40
+ justify-content: space-between;
41
+ margin-top: 8px;
42
+ gap: 8px;
43
+ }
44
+
45
+ .memori--preset-buttons button {
46
+ min-height: 36px;
47
+ flex: 1;
48
+ padding: 8px 4px;
49
+ font-size: 0.9rem;
50
+ }
51
+
52
+ /* Close button */
53
+ .memori--position-controls-close {
54
+ position: absolute;
55
+ top: -25px;
56
+ right: -30px;
57
+ border-radius: 50%;
58
+ background-color: var(--memori-inner-bg, #fff);
59
+ }
60
+
61
+ .memori--position-controls-close-button {
62
+ min-width: 36px;
63
+ min-height: 36px;
64
+ padding: 8px;
65
+ }
66
+
67
+ /* Totem specific adjustments */
68
+ @media screen and (max-width: 480px) {
69
+ .memori--position-controls {
70
+ right: 10px;
71
+ bottom: 80px;
72
+ width: 280px;
73
+ }
74
+
75
+ .memori--preset-buttons button {
76
+ padding: 6px 4px;
77
+ font-size: 0.85rem;
78
+ }
79
+
80
+ .memori--slider-container {
81
+ padding: 6px 0;
82
+ }
83
+ }
84
+
85
+ /* Portrait/vertical orientation */
86
+ @media screen and (min-height: 800px) {
87
+ .memori--position-controls {
88
+ bottom: 120px;
89
+ }
90
+
91
+ .memori--slider-label {
92
+ font-size: 1.1rem;
93
+ }
94
+
95
+ .memori--preset-buttons button {
96
+ padding: 10px 6px;
97
+ font-size: 1rem;
98
+ }
99
+ }
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import './positionControls.css';
3
+ interface PositionControlsProps {
4
+ avatarHeight: number;
5
+ avatarDepth: number;
6
+ halfBody: boolean;
7
+ setAvatarHeight: (value: number) => void;
8
+ setAvatarDepth: (value: number) => void;
9
+ setEnablePositionControls: (value: boolean) => void;
10
+ }
11
+ declare const PositionControls: React.FC<PositionControlsProps>;
12
+ export default PositionControls;
@@ -0,0 +1,95 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from 'react';
3
+ import { setLocalConfig } from '../../../../../helpers/configuration';
4
+ import { useTranslation } from 'react-i18next';
5
+ import Slider from '../../../../../components/ui/Slider';
6
+ import './positionControls.css';
7
+ import Button from '../../../../ui/Button';
8
+ import Close from '../../../../icons/Close';
9
+ const PositionControls = ({ avatarHeight, avatarDepth, setAvatarHeight, setAvatarDepth, halfBody, setEnablePositionControls, }) => {
10
+ const normalPosition = halfBody ? { height: 80, depth: 50 } : { height: 25, depth: 25 };
11
+ const zoomedPosition = halfBody ? { height: 55, depth: 10 } : { height: 15, depth: 5 };
12
+ const farPosition = halfBody ? { height: 100, depth: 80 } : { height: 65, depth: 100 };
13
+ const settingsRef = useRef({
14
+ height: avatarHeight,
15
+ depth: avatarDepth,
16
+ zoomed: false,
17
+ normal: false,
18
+ far: false,
19
+ });
20
+ const { t } = useTranslation();
21
+ useEffect(() => {
22
+ settingsRef.current.height = avatarHeight;
23
+ settingsRef.current.depth = avatarDepth;
24
+ }, [avatarHeight, avatarDepth]);
25
+ useEffect(() => {
26
+ const handleKeyDown = (event) => {
27
+ if (event.key === '-' || event.key === '_' && settingsRef.current.depth < 100) {
28
+ const newValue = Math.min(settingsRef.current.depth + 10, 100);
29
+ setAvatarDepth(newValue);
30
+ setLocalConfig('avatarDepth', newValue);
31
+ }
32
+ else if ((event.key === '+' || event.key === '=') &&
33
+ settingsRef.current.depth > -100) {
34
+ const newValue = Math.max(settingsRef.current.depth - 10, -100);
35
+ setAvatarDepth(newValue);
36
+ setLocalConfig('avatarDepth', newValue);
37
+ }
38
+ };
39
+ window.addEventListener('keydown', handleKeyDown);
40
+ return () => {
41
+ window.removeEventListener('keydown', handleKeyDown);
42
+ };
43
+ }, [setAvatarDepth]);
44
+ useEffect(() => {
45
+ const handleArrowUp = (event) => {
46
+ if (event.key === 'ArrowUp' && settingsRef.current.height < 100) {
47
+ const newValue = settingsRef.current.height + 5;
48
+ setAvatarHeight(newValue);
49
+ setLocalConfig('avatarHeight', newValue);
50
+ }
51
+ };
52
+ const handleArrowDown = (event) => {
53
+ if (event.key === 'ArrowDown' && settingsRef.current.height > 0) {
54
+ const newValue = settingsRef.current.height - 5;
55
+ setAvatarHeight(newValue);
56
+ setLocalConfig('avatarHeight', newValue);
57
+ }
58
+ };
59
+ window.addEventListener('keydown', handleArrowUp);
60
+ window.addEventListener('keydown', handleArrowDown);
61
+ return () => {
62
+ window.removeEventListener('keydown', handleArrowUp);
63
+ window.removeEventListener('keydown', handleArrowDown);
64
+ };
65
+ }, [setAvatarHeight]);
66
+ return (_jsxs("div", { className: "memori--position-controls", children: [_jsx("div", { className: "memori--position-controls-close", children: _jsx(Button, { ghost: true, icon: _jsx(Close, {}), outlined: true, danger: true, shape: "circle", className: "memori--position-controls-close-button", onClick: () => {
67
+ setEnablePositionControls(false);
68
+ } }) }), _jsx("div", { className: "memori--slider-container", children: _jsx(Slider, { defaultValue: settingsRef.current.height, min: 0.5, max: 100, label: _jsx("label", { className: "memori--slider-label", children: t('write_and_speak.height') }), step: 1, onChange: (value) => {
69
+ setAvatarHeight(value);
70
+ setLocalConfig('avatarHeight', value);
71
+ } }) }), _jsx("div", { className: "memori--slider-container", children: _jsx(Slider, { defaultValue: settingsRef.current.depth, min: 0.5, max: 100, step: 5, label: _jsx("label", { className: "memori--slider-label", children: t('write_and_speak.depth') }), onChange: (value) => {
72
+ setAvatarDepth(value);
73
+ setLocalConfig('avatarDepth', value);
74
+ } }) }), _jsxs("div", { className: "memori--preset-buttons", children: [_jsx(Button, { outlined: true, isActive: avatarHeight === (halfBody ? zoomedPosition.height : normalPosition.height) &&
75
+ avatarDepth === (halfBody ? zoomedPosition.depth : normalPosition.depth), onClick: () => {
76
+ setAvatarHeight(zoomedPosition.height);
77
+ setAvatarDepth(zoomedPosition.depth);
78
+ setLocalConfig('avatarHeight', zoomedPosition.height);
79
+ setLocalConfig('avatarDepth', zoomedPosition.depth);
80
+ }, children: t('write_and_speak.zoomed') }), _jsx(Button, { outlined: true, isActive: avatarHeight === (halfBody ? normalPosition.height : zoomedPosition.height) &&
81
+ avatarDepth === (halfBody ? normalPosition.depth : zoomedPosition.depth), onClick: () => {
82
+ setAvatarHeight(normalPosition.height);
83
+ setAvatarDepth(normalPosition.depth);
84
+ setLocalConfig('avatarHeight', normalPosition.height);
85
+ setLocalConfig('avatarDepth', normalPosition.depth);
86
+ }, children: t('write_and_speak.normal') }), _jsx(Button, { outlined: true, isActive: avatarHeight === (halfBody ? farPosition.height : normalPosition.height) &&
87
+ avatarDepth === (halfBody ? farPosition.depth : normalPosition.depth), onClick: () => {
88
+ setAvatarHeight(farPosition.height);
89
+ setAvatarDepth(farPosition.depth);
90
+ setLocalConfig('avatarHeight', farPosition.height);
91
+ setLocalConfig('avatarDepth', farPosition.depth);
92
+ }, children: t('write_and_speak.far') })] })] }));
93
+ };
94
+ export default PositionControls;
95
+ //# sourceMappingURL=positionControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positionControls.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.tsx"],"names":[],"mappings":"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"}
@@ -16,6 +16,9 @@ export interface Props {
16
16
  showControls?: boolean;
17
17
  isZoomed?: boolean;
18
18
  chatEmission?: any;
19
+ enablePositionControls?: boolean;
20
+ setEnablePositionControls: (value: boolean) => void;
21
+ isTotem?: boolean;
19
22
  setMeshRef?: any;
20
23
  stopProcessing: () => void;
21
24
  resetVisemeQueue: () => void;
@@ -24,4 +27,4 @@ export interface Props {
24
27
  weight: number;
25
28
  } | null;
26
29
  }
27
- export default function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody, loading, animation, showControls, isZoomed, chatEmission, stopProcessing, resetVisemeQueue, updateCurrentViseme, }: Props): JSX.Element;
30
+ export default function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody, loading, animation, showControls, isZoomed, chatEmission, stopProcessing, resetVisemeQueue, updateCurrentViseme, enablePositionControls, setEnablePositionControls, isTotem, }: Props): JSX.Element;