@memori.ai/memori-react 7.8.7 → 7.9.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 (153) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/dist/components/Avatar/Avatar.d.ts +4 -0
  3. package/dist/components/Avatar/Avatar.js +6 -6
  4. package/dist/components/Avatar/Avatar.js.map +1 -1
  5. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +3 -0
  6. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +3 -3
  7. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  8. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js +1 -1
  9. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js.map +1 -1
  10. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +1 -1
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +48 -10
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.d.ts +4 -1
  14. package/dist/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.d.ts +17 -0
  15. package/dist/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js +73 -0
  16. package/dist/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js.map +1 -0
  17. package/dist/components/Avatar/AvatarView/AvatarComponent/components/PositionController.d.ts +19 -0
  18. package/dist/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js +60 -0
  19. package/dist/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js.map +1 -0
  20. package/dist/components/Avatar/AvatarView/AvatarComponent/components/constants.d.ts +18 -0
  21. package/dist/components/Avatar/AvatarView/AvatarComponent/components/constants.js +26 -0
  22. package/dist/components/Avatar/AvatarView/AvatarComponent/components/constants.js.map +1 -0
  23. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +8 -7
  24. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +65 -78
  25. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  26. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +99 -0
  27. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.d.ts +12 -0
  28. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js +98 -0
  29. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js.map +1 -0
  30. package/dist/components/Avatar/AvatarView/index.d.ts +4 -1
  31. package/dist/components/Avatar/AvatarView/index.js +36 -13
  32. package/dist/components/Avatar/AvatarView/index.js.map +1 -1
  33. package/dist/components/Avatar/AvatarView/utils/hideHands.d.ts +2 -0
  34. package/dist/components/Avatar/AvatarView/utils/hideHands.js +14 -0
  35. package/dist/components/Avatar/AvatarView/utils/hideHands.js.map +1 -0
  36. package/dist/components/Chat/Chat.d.ts +1 -0
  37. package/dist/components/Chat/Chat.js +5 -2
  38. package/dist/components/Chat/Chat.js.map +1 -1
  39. package/dist/components/ChatBubble/ChatBubble.js +19 -4
  40. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  41. package/dist/components/MemoriWidget/MemoriWidget.js +27 -4
  42. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  43. package/dist/components/SettingsDrawer/SettingsDrawer.css +4 -2
  44. package/dist/components/SettingsDrawer/SettingsDrawer.d.ts +6 -1
  45. package/dist/components/SettingsDrawer/SettingsDrawer.js +10 -4
  46. package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  47. package/dist/components/layouts/Totem.js +1 -1
  48. package/dist/components/layouts/Totem.js.map +1 -1
  49. package/dist/components/layouts/totem.css +9 -9
  50. package/dist/components/ui/Button.css +4 -0
  51. package/dist/components/ui/Button.d.ts +1 -0
  52. package/dist/components/ui/Button.js +2 -1
  53. package/dist/components/ui/Button.js.map +1 -1
  54. package/dist/components/ui/Slider.css +177 -0
  55. package/dist/components/ui/Slider.d.ts +12 -0
  56. package/dist/components/ui/Slider.js +78 -0
  57. package/dist/components/ui/Slider.js.map +1 -0
  58. package/dist/locales/en.json +11 -0
  59. package/dist/locales/it.json +11 -0
  60. package/dist/styles.css +1 -0
  61. package/esm/components/Avatar/Avatar.d.ts +4 -0
  62. package/esm/components/Avatar/Avatar.js +6 -6
  63. package/esm/components/Avatar/Avatar.js.map +1 -1
  64. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +3 -0
  65. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +3 -3
  66. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  67. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js +1 -1
  68. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js.map +1 -1
  69. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +1 -1
  70. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +45 -8
  71. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  72. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.d.ts +4 -1
  73. package/esm/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.d.ts +17 -0
  74. package/esm/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js +69 -0
  75. package/esm/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js.map +1 -0
  76. package/esm/components/Avatar/AvatarView/AvatarComponent/components/PositionController.d.ts +19 -0
  77. package/esm/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js +56 -0
  78. package/esm/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js.map +1 -0
  79. package/esm/components/Avatar/AvatarView/AvatarComponent/components/constants.d.ts +18 -0
  80. package/esm/components/Avatar/AvatarView/AvatarComponent/components/constants.js +23 -0
  81. package/esm/components/Avatar/AvatarView/AvatarComponent/components/constants.js.map +1 -0
  82. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +8 -7
  83. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +66 -80
  84. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  85. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +99 -0
  86. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.d.ts +12 -0
  87. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js +95 -0
  88. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js.map +1 -0
  89. package/esm/components/Avatar/AvatarView/index.d.ts +4 -1
  90. package/esm/components/Avatar/AvatarView/index.js +38 -15
  91. package/esm/components/Avatar/AvatarView/index.js.map +1 -1
  92. package/esm/components/Avatar/AvatarView/utils/hideHands.d.ts +2 -0
  93. package/esm/components/Avatar/AvatarView/utils/hideHands.js +10 -0
  94. package/esm/components/Avatar/AvatarView/utils/hideHands.js.map +1 -0
  95. package/esm/components/Chat/Chat.d.ts +1 -0
  96. package/esm/components/Chat/Chat.js +5 -2
  97. package/esm/components/Chat/Chat.js.map +1 -1
  98. package/esm/components/ChatBubble/ChatBubble.js +19 -4
  99. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  100. package/esm/components/MemoriWidget/MemoriWidget.js +27 -4
  101. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  102. package/esm/components/SettingsDrawer/SettingsDrawer.css +4 -2
  103. package/esm/components/SettingsDrawer/SettingsDrawer.d.ts +6 -1
  104. package/esm/components/SettingsDrawer/SettingsDrawer.js +10 -4
  105. package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  106. package/esm/components/layouts/Totem.js +1 -1
  107. package/esm/components/layouts/Totem.js.map +1 -1
  108. package/esm/components/layouts/totem.css +9 -9
  109. package/esm/components/ui/Button.css +4 -0
  110. package/esm/components/ui/Button.d.ts +1 -0
  111. package/esm/components/ui/Button.js +2 -1
  112. package/esm/components/ui/Button.js.map +1 -1
  113. package/esm/components/ui/Slider.css +177 -0
  114. package/esm/components/ui/Slider.d.ts +12 -0
  115. package/esm/components/ui/Slider.js +75 -0
  116. package/esm/components/ui/Slider.js.map +1 -0
  117. package/esm/locales/en.json +11 -0
  118. package/esm/locales/it.json +11 -0
  119. package/esm/styles.css +1 -0
  120. package/package.json +3 -2
  121. package/src/components/Avatar/Avatar.test.tsx +8 -0
  122. package/src/components/Avatar/Avatar.tsx +19 -6
  123. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +17 -8
  124. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.ts +1 -1
  125. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +69 -18
  126. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.ts +4 -1
  127. package/src/components/Avatar/AvatarView/AvatarComponent/components/PositionController.ts +83 -0
  128. package/src/components/Avatar/AvatarView/AvatarComponent/components/{FullbodyAvatar/constants.ts → constants.ts} +2 -1
  129. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +106 -124
  130. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +99 -0
  131. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.tsx +187 -0
  132. package/src/components/Avatar/AvatarView/index.tsx +115 -43
  133. package/src/components/Avatar/AvatarView/utils/hideHands.ts +11 -0
  134. package/src/components/Avatar/__snapshots__/Avatar.test.tsx.snap +32 -93
  135. package/src/components/Chat/Chat.test.tsx +11 -0
  136. package/src/components/Chat/Chat.tsx +8 -1
  137. package/src/components/ChatBubble/ChatBubble.tsx +46 -27
  138. package/src/components/MemoriWidget/MemoriWidget.tsx +42 -5
  139. package/src/components/SettingsDrawer/SettingsDrawer.css +4 -2
  140. package/src/components/SettingsDrawer/SettingsDrawer.test.tsx +24 -0
  141. package/src/components/SettingsDrawer/SettingsDrawer.tsx +76 -4
  142. package/src/components/layouts/Totem.tsx +1 -1
  143. package/src/components/layouts/layouts.stories.tsx +111 -3
  144. package/src/components/layouts/totem.css +9 -9
  145. package/src/components/ui/Button.css +4 -0
  146. package/src/components/ui/Button.tsx +3 -0
  147. package/src/components/ui/Slider.css +177 -0
  148. package/src/components/ui/Slider.stories.tsx +63 -0
  149. package/src/components/ui/Slider.tsx +142 -0
  150. package/src/locales/en.json +11 -0
  151. package/src/locales/it.json +11 -0
  152. package/src/styles.css +1 -0
  153. /package/src/components/Avatar/AvatarView/AvatarComponent/components/{FullbodyAvatar/MorhTargetController.ts → MorphTargetController.ts} +0 -0
@@ -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,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VISEME_SMOOTHING = exports.EMOTION_SMOOTHING = exports.DEFAULT_CONFIG = exports.BLINK_CONFIG = exports.ANIMATION_URLS = exports.SCALE_LERP_FACTOR = exports.AVATAR_POSITION_ZOOMED = exports.AVATAR_ROTATION = exports.AVATAR_POSITION = void 0;
4
+ const three_1 = require("three");
5
+ exports.AVATAR_POSITION = new three_1.Vector3(0, -1, 0);
6
+ exports.AVATAR_ROTATION = new three_1.Euler(0.175, 0, 0);
7
+ exports.AVATAR_POSITION_ZOOMED = new three_1.Vector3(0, -1.45, 0);
8
+ exports.SCALE_LERP_FACTOR = 0.1;
9
+ exports.ANIMATION_URLS = {
10
+ MALE: 'https://assets.memori.ai/api/v2/asset/2c5e88a4-cf62-408b-9ef0-518b099dfcb2.glb',
11
+ FEMALE: 'https://assets.memori.ai/api/v2/asset/2adc934b-24b2-45bd-94ad-ffec58d3cb32.glb',
12
+ };
13
+ exports.BLINK_CONFIG = {
14
+ minInterval: 1000,
15
+ maxInterval: 5000,
16
+ blinkDuration: 150,
17
+ };
18
+ exports.DEFAULT_CONFIG = {
19
+ fadeInDuration: 0.8,
20
+ fadeOutDuration: 0.8,
21
+ idleCount: 5,
22
+ timeScale: 1.0,
23
+ };
24
+ exports.EMOTION_SMOOTHING = 0.3;
25
+ exports.VISEME_SMOOTHING = 0.5;
26
+ //# 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,iCAAuC;AAG1B,QAAA,eAAe,GAAG,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,QAAA,eAAe,GAAG,IAAI,aAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,QAAA,sBAAsB,GAAG,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAClD,QAAA,iBAAiB,GAAG,GAAG,CAAC;AAExB,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gFAAgF;IACtF,MAAM,EACJ,gFAAgF;CACnF,CAAC;AAEW,QAAA,YAAY,GAAG;IAC1B,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,GAAG;CACnB,CAAC;AAEW,QAAA,cAAc,GAAoB;IAC7C,cAAc,EAAE,GAAG;IACnB,eAAe,EAAE,GAAG;IACpB,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,GAAG;CACf,CAAC;AAEW,QAAA,iBAAiB,GAAG,GAAG,CAAC;AACxB,QAAA,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,102 +1,89 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
3
4
  const jsx_runtime_1 = require("react/jsx-runtime");
4
5
  const react_1 = require("react");
5
6
  const three_1 = require("three");
6
7
  const drei_1 = require("@react-three/drei");
7
- const utils_1 = require("../../../../../helpers/utils");
8
8
  const fiber_1 = require("@react-three/fiber");
9
- const three_2 = require("three");
10
- const AVATAR_POSITION = new three_1.Vector3(0, -0.6, 0);
11
- const BLINK_CONFIG = {
12
- minInterval: 1000,
13
- maxInterval: 5000,
14
- blinkDuration: 150,
15
- };
16
- function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, eyeBlink, onLoaded, morphTargetSmoothing = 0.5, updateCurrentViseme, }) {
9
+ const utils_1 = require("../../../../../helpers/utils");
10
+ const MorphTargetController_1 = require("./MorphTargetController");
11
+ const PositionController_1 = require("./PositionController");
12
+ const constants_1 = require("./constants");
13
+ const utils_2 = require("../../utils/utils");
14
+ const useHeadMovement_1 = tslib_1.__importDefault(require("../../utils/useHeadMovement"));
15
+ function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, updateCurrentViseme, eyeBlink = false, avatarHeight = 50, avatarDepth = 0, headMovement = false, onLoaded, onCameraZChange, }) {
16
+ var _a;
17
17
  const { scene } = (0, drei_1.useGLTF)(url);
18
18
  const { nodes, materials } = (0, fiber_1.useGraph)(scene);
19
- const mixer = (0, react_1.useRef)(new three_2.AnimationMixer(scene));
20
- const avatarMeshRef = (0, react_1.useRef)(null);
21
- const lastBlinkTime = (0, react_1.useRef)(0);
22
- const nextBlinkTime = (0, react_1.useRef)(0);
23
- const isBlinking = (0, react_1.useRef)(false);
24
- const blinkStartTime = (0, react_1.useRef)(0);
25
- const headMeshRef = (0, react_1.useRef)();
26
- (0, react_1.useEffect)(() => {
27
- (0, utils_1.correctMaterials)(materials);
28
- scene.traverse((object) => {
29
- if (object instanceof three_1.SkinnedMesh) {
30
- if (object.name === 'GBNL__Head' || object.name === 'Wolf3D_Avatar') {
31
- headMeshRef.current = object;
32
- if (object.morphTargetDictionary && object.morphTargetInfluences) {
33
- setMorphTargetDictionary(object.morphTargetDictionary);
34
- const initialInfluences = Object.keys(object.morphTargetDictionary).reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
35
- setMorphTargetInfluences(initialInfluences);
36
- }
37
- }
19
+ const { camera } = (0, fiber_1.useThree)();
20
+ const morphTargetControllerRef = (0, react_1.useRef)();
21
+ const positionControllerRef = (0, react_1.useRef)();
22
+ const targetCameraZRef = (0, react_1.useRef)(camera.position.z);
23
+ (0, useHeadMovement_1.default)(headMovement, nodes);
24
+ const blinkStateRef = (0, react_1.useRef)({
25
+ isBlinking: false,
26
+ lastBlinkTime: 0,
27
+ nextBlinkTime: 0,
28
+ blinkStartTime: 0,
29
+ });
30
+ const headMesh = (0, react_1.useMemo)(() => {
31
+ let foundMesh;
32
+ scene === null || scene === void 0 ? void 0 : scene.traverse((object) => {
33
+ if (object instanceof three_1.SkinnedMesh &&
34
+ (object.name === 'GBNL__Head' || object.name === 'Wolf3D_Avatar')) {
35
+ foundMesh = object;
38
36
  }
39
37
  });
38
+ return foundMesh;
39
+ }, [scene]);
40
+ (0, react_1.useEffect)(() => {
41
+ if (!positionControllerRef.current) {
42
+ positionControllerRef.current = new PositionController_1.AvatarPositionController(constants_1.AVATAR_POSITION, constants_1.AVATAR_POSITION_ZOOMED);
43
+ }
44
+ if (headMesh) {
45
+ morphTargetControllerRef.current = new MorphTargetController_1.MorphTargetController(headMesh);
46
+ if (headMesh.morphTargetDictionary && headMesh.morphTargetInfluences) {
47
+ setMorphTargetDictionary(headMesh.morphTargetDictionary);
48
+ const initialInfluences = Object.keys(headMesh.morphTargetDictionary)
49
+ .reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
50
+ setMorphTargetInfluences(initialInfluences);
51
+ }
52
+ }
53
+ (0, utils_1.correctMaterials)(materials);
40
54
  onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded();
55
+ (0, utils_2.hideHands)(nodes);
41
56
  return () => {
42
57
  Object.values(materials).forEach(material => material.dispose());
43
58
  Object.values(nodes)
44
59
  .filter(utils_1.isSkinnedMesh)
45
60
  .forEach(mesh => mesh.geometry.dispose());
46
61
  };
47
- }, [materials, nodes, url, onLoaded, scene]);
48
- (0, fiber_1.useFrame)(state => {
49
- if (headMeshRef.current &&
50
- headMeshRef.current.morphTargetDictionary &&
51
- headMeshRef.current.morphTargetInfluences) {
52
- const currentTime = state.clock.getElapsedTime() * 1000;
53
- let blinkValue = 0;
54
- if (eyeBlink) {
55
- if (currentTime >= nextBlinkTime.current && !isBlinking.current) {
56
- isBlinking.current = true;
57
- blinkStartTime.current = currentTime;
58
- lastBlinkTime.current = currentTime;
59
- nextBlinkTime.current =
60
- currentTime +
61
- Math.random() *
62
- (BLINK_CONFIG.maxInterval - BLINK_CONFIG.minInterval) +
63
- BLINK_CONFIG.minInterval;
64
- }
65
- if (isBlinking.current) {
66
- const blinkProgress = (currentTime - blinkStartTime.current) / BLINK_CONFIG.blinkDuration;
67
- if (blinkProgress <= 0.5) {
68
- blinkValue = blinkProgress * 2;
69
- }
70
- else if (blinkProgress <= 1) {
71
- blinkValue = 2 - blinkProgress * 2;
72
- }
73
- else {
74
- isBlinking.current = false;
75
- blinkValue = 0;
76
- }
77
- }
78
- }
62
+ }, [materials, nodes, url, onLoaded, scene, headMesh]);
63
+ (0, react_1.useEffect)(() => {
64
+ if (positionControllerRef.current) {
65
+ positionControllerRef.current.updateHeight(avatarHeight, true);
66
+ }
67
+ }, [avatarHeight]);
68
+ (0, react_1.useEffect)(() => {
69
+ if (positionControllerRef.current && onCameraZChange) {
70
+ const newCameraZ = positionControllerRef.current.updateDepth(avatarDepth, true);
71
+ onCameraZChange(newCameraZ);
72
+ }
73
+ }, [avatarDepth, onCameraZChange]);
74
+ (0, fiber_1.useFrame)((state) => {
75
+ const currentTime = state.clock.elapsedTime * 1000;
76
+ if (morphTargetControllerRef.current) {
79
77
  const currentViseme = updateCurrentViseme(currentTime / 1000);
80
- Object.entries(headMeshRef.current.morphTargetDictionary).forEach(([key, index]) => {
81
- if (typeof index === 'number') {
82
- let targetValue = 0;
83
- if (currentViseme && key === currentViseme.name) {
84
- targetValue += currentViseme.weight * 1.3;
85
- }
86
- if (key === 'eyesClosed' && eyeBlink) {
87
- targetValue += blinkValue;
88
- }
89
- targetValue = three_2.MathUtils.clamp(targetValue, 0, 1);
90
- if (headMeshRef.current &&
91
- headMeshRef.current.morphTargetInfluences) {
92
- headMeshRef.current.morphTargetInfluences[index] = three_2.MathUtils.lerp(headMeshRef.current.morphTargetInfluences[index], targetValue, morphTargetSmoothing);
93
- }
94
- }
95
- });
96
- mixer.current.update(0.01);
78
+ morphTargetControllerRef.current.updateMorphTargets(currentTime, {}, currentViseme, eyeBlink, blinkStateRef.current);
79
+ }
80
+ if (scene && positionControllerRef.current) {
81
+ const newScale = positionControllerRef.current.updateScale(constants_1.SCALE_LERP_FACTOR);
82
+ scene.scale.copy(newScale);
97
83
  }
98
84
  });
99
- return ((0, jsx_runtime_1.jsx)("group", { position: AVATAR_POSITION, children: (0, jsx_runtime_1.jsx)("primitive", { object: scene }) }));
85
+ const position = ((_a = positionControllerRef.current) === null || _a === void 0 ? void 0 : _a.getPosition()) || constants_1.AVATAR_POSITION;
86
+ return ((0, jsx_runtime_1.jsx)("group", { position: position, children: (0, jsx_runtime_1.jsx)("primitive", { object: scene }) }));
100
87
  }
101
88
  exports.default = HalfBodyAvatar;
102
89
  //# 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,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const configuration_1 = require("../../../../../helpers/configuration");
7
+ const react_i18next_1 = require("react-i18next");
8
+ const Slider_1 = tslib_1.__importDefault(require("../../../../../components/ui/Slider"));
9
+ require("./positionControls.css");
10
+ const Button_1 = tslib_1.__importDefault(require("../../../../ui/Button"));
11
+ const Close_1 = tslib_1.__importDefault(require("../../../../icons/Close"));
12
+ const PositionControls = ({ avatarHeight, avatarDepth, setAvatarHeight, setAvatarDepth, halfBody, setEnablePositionControls, }) => {
13
+ const normalPosition = halfBody ? { height: 80, depth: 50 } : { height: 25, depth: 25 };
14
+ const zoomedPosition = halfBody ? { height: 55, depth: 10 } : { height: 15, depth: 5 };
15
+ const farPosition = halfBody ? { height: 100, depth: 80 } : { height: 65, depth: 100 };
16
+ const settingsRef = (0, react_1.useRef)({
17
+ height: avatarHeight,
18
+ depth: avatarDepth,
19
+ zoomed: false,
20
+ normal: false,
21
+ far: false,
22
+ });
23
+ const { t } = (0, react_i18next_1.useTranslation)();
24
+ (0, react_1.useEffect)(() => {
25
+ settingsRef.current.height = avatarHeight;
26
+ settingsRef.current.depth = avatarDepth;
27
+ }, [avatarHeight, avatarDepth]);
28
+ (0, react_1.useEffect)(() => {
29
+ const handleKeyDown = (event) => {
30
+ if (event.key === '-' || event.key === '_' && settingsRef.current.depth < 100) {
31
+ const newValue = Math.min(settingsRef.current.depth + 10, 100);
32
+ setAvatarDepth(newValue);
33
+ (0, configuration_1.setLocalConfig)('avatarDepth', newValue);
34
+ }
35
+ else if ((event.key === '+' || event.key === '=') &&
36
+ settingsRef.current.depth > -100) {
37
+ const newValue = Math.max(settingsRef.current.depth - 10, -100);
38
+ setAvatarDepth(newValue);
39
+ (0, configuration_1.setLocalConfig)('avatarDepth', newValue);
40
+ }
41
+ };
42
+ window.addEventListener('keydown', handleKeyDown);
43
+ return () => {
44
+ window.removeEventListener('keydown', handleKeyDown);
45
+ };
46
+ }, [setAvatarDepth]);
47
+ (0, react_1.useEffect)(() => {
48
+ const handleArrowUp = (event) => {
49
+ if (event.key === 'ArrowUp' && settingsRef.current.height < 100) {
50
+ const newValue = settingsRef.current.height + 5;
51
+ setAvatarHeight(newValue);
52
+ (0, configuration_1.setLocalConfig)('avatarHeight', newValue);
53
+ }
54
+ };
55
+ const handleArrowDown = (event) => {
56
+ if (event.key === 'ArrowDown' && settingsRef.current.height > 0) {
57
+ const newValue = settingsRef.current.height - 5;
58
+ setAvatarHeight(newValue);
59
+ (0, configuration_1.setLocalConfig)('avatarHeight', newValue);
60
+ }
61
+ };
62
+ window.addEventListener('keydown', handleArrowUp);
63
+ window.addEventListener('keydown', handleArrowDown);
64
+ return () => {
65
+ window.removeEventListener('keydown', handleArrowUp);
66
+ window.removeEventListener('keydown', handleArrowDown);
67
+ };
68
+ }, [setAvatarHeight]);
69
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "memori--position-controls", children: [(0, jsx_runtime_1.jsx)("div", { className: "memori--position-controls-close", children: (0, jsx_runtime_1.jsx)(Button_1.default, { ghost: true, icon: (0, jsx_runtime_1.jsx)(Close_1.default, {}), outlined: true, danger: true, shape: "circle", className: "memori--position-controls-close-button", onClick: () => {
70
+ setEnablePositionControls(false);
71
+ } }) }), (0, jsx_runtime_1.jsx)("div", { className: "memori--slider-container", children: (0, jsx_runtime_1.jsx)(Slider_1.default, { defaultValue: settingsRef.current.height, min: 0.5, max: 100, label: (0, jsx_runtime_1.jsx)("label", { className: "memori--slider-label", children: t('write_and_speak.height') }), step: 1, onChange: (value) => {
72
+ setAvatarHeight(value);
73
+ (0, configuration_1.setLocalConfig)('avatarHeight', value);
74
+ } }) }), (0, jsx_runtime_1.jsx)("div", { className: "memori--slider-container", children: (0, jsx_runtime_1.jsx)(Slider_1.default, { defaultValue: settingsRef.current.depth, min: 0.5, max: 100, step: 5, label: (0, jsx_runtime_1.jsx)("label", { className: "memori--slider-label", children: t('write_and_speak.depth') }), onChange: (value) => {
75
+ setAvatarDepth(value);
76
+ (0, configuration_1.setLocalConfig)('avatarDepth', value);
77
+ } }) }), (0, jsx_runtime_1.jsxs)("div", { className: "memori--preset-buttons", children: [(0, jsx_runtime_1.jsx)(Button_1.default, { outlined: true, isActive: avatarHeight === (halfBody ? zoomedPosition.height : normalPosition.height) &&
78
+ avatarDepth === (halfBody ? zoomedPosition.depth : normalPosition.depth), onClick: () => {
79
+ setAvatarHeight(zoomedPosition.height);
80
+ setAvatarDepth(zoomedPosition.depth);
81
+ (0, configuration_1.setLocalConfig)('avatarHeight', zoomedPosition.height);
82
+ (0, configuration_1.setLocalConfig)('avatarDepth', zoomedPosition.depth);
83
+ }, children: t('write_and_speak.zoomed') }), (0, jsx_runtime_1.jsx)(Button_1.default, { outlined: true, isActive: avatarHeight === (halfBody ? normalPosition.height : zoomedPosition.height) &&
84
+ avatarDepth === (halfBody ? normalPosition.depth : zoomedPosition.depth), onClick: () => {
85
+ setAvatarHeight(normalPosition.height);
86
+ setAvatarDepth(normalPosition.depth);
87
+ (0, configuration_1.setLocalConfig)('avatarHeight', normalPosition.height);
88
+ (0, configuration_1.setLocalConfig)('avatarDepth', normalPosition.depth);
89
+ }, children: t('write_and_speak.normal') }), (0, jsx_runtime_1.jsx)(Button_1.default, { outlined: true, isActive: avatarHeight === (halfBody ? farPosition.height : normalPosition.height) &&
90
+ avatarDepth === (halfBody ? farPosition.depth : normalPosition.depth), onClick: () => {
91
+ setAvatarHeight(farPosition.height);
92
+ setAvatarDepth(farPosition.depth);
93
+ (0, configuration_1.setLocalConfig)('avatarHeight', farPosition.height);
94
+ (0, configuration_1.setLocalConfig)('avatarDepth', farPosition.depth);
95
+ }, children: t('write_and_speak.far') })] })] }));
96
+ };
97
+ exports.default = PositionControls;
98
+ //# 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":";;;;AAAA,iCAA0C;AAC1C,wEAAsE;AACtE,iDAA+C;AAC/C,yFAAyD;AACzD,kCAAgC;AAChC,2EAA2C;AAC3C,4EAA4C;AAY5C,MAAM,gBAAgB,GAAoC,CAAC,EACzD,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,QAAQ,EACR,yBAAyB,GACH,EAAE,EAAE;IAC1B,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACxF,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACvF,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACvF,MAAM,WAAW,GAAG,IAAA,cAAM,EAAsB;QAC9C,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,KAAK;KACX,CAAC,CAAC;IACH,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAG/B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC;QAC1C,WAAW,CAAC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC;IAC1C,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IAGhC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC7C,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE;gBAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC/D,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACzB,IAAA,8BAAc,EAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;aACzC;iBAAM,IACL,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;gBACxC,WAAW,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,EAChC;gBACA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBAChE,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACzB,IAAA,8BAAc,EAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;aACzC;QACH,CAAC,CAAC;QAGF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAClD,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC7C,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE;gBAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChD,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC1B,IAAA,8BAAc,EAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;aAC1C;QACH,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC/C,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChD,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC1B,IAAA,8BAAc,EAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;aAC1C;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAClD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAEpD,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACrD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,OAAO,CACL,iCAAK,SAAS,EAAC,2BAA2B,aACxC,gCAAK,SAAS,EAAC,iCAAiC,YAC9C,uBAAC,gBAAM,IACL,KAAK,QACL,IAAI,EAAE,uBAAC,eAAK,KAAG,EACf,QAAQ,QACR,MAAM,QACN,KAAK,EAAC,QAAQ,EACd,SAAS,EAAC,wCAAwC,EAClD,OAAO,EAAE,GAAG,EAAE;wBACZ,yBAAyB,CAAC,KAAK,CAAC,CAAC;oBACnC,CAAC,GACD,GACE,EACN,gCAAK,SAAS,EAAC,0BAA0B,YACvC,uBAAC,gBAAM,IACL,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,EACxC,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,kCAAO,SAAS,EAAC,sBAAsB,YAAE,CAAC,CAAC,wBAAwB,CAAC,GAAS,EACpF,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC1B,eAAe,CAAC,KAAK,CAAC,CAAC;wBACvB,IAAA,8BAAc,EAAC,cAAc,EAAE,KAAK,CAAC,CAAC;oBACxC,CAAC,GACD,GACE,EACN,gCAAK,SAAS,EAAC,0BAA0B,YACvC,uBAAC,gBAAM,IACL,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,EACvC,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,kCAAO,SAAS,EAAC,sBAAsB,YAAE,CAAC,CAAC,uBAAuB,CAAC,GAAS,EACnF,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC1B,cAAc,CAAC,KAAK,CAAC,CAAC;wBACtB,IAAA,8BAAc,EAAC,aAAa,EAAE,KAAK,CAAC,CAAC;oBACvC,CAAC,GACD,GACE,EACN,iCAAK,SAAS,EAAC,wBAAwB,aACrC,uBAAC,gBAAM,IACL,QAAQ,QACR,QAAQ,EACN,YAAY,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;4BAC3E,WAAW,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,EAE1E,OAAO,EAAE,GAAG,EAAE;4BACZ,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;4BACvC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;4BACrC,IAAA,8BAAc,EAAC,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;4BACtD,IAAA,8BAAc,EAAC,aAAa,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;wBACtD,CAAC,YAEA,CAAC,CAAC,wBAAwB,CAAC,GACrB,EACT,uBAAC,gBAAM,IACL,QAAQ,QACR,QAAQ,EACN,YAAY,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;4BAC3E,WAAW,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,EAE1E,OAAO,EAAE,GAAG,EAAE;4BACZ,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;4BACvC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;4BACrC,IAAA,8BAAc,EAAC,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;4BACtD,IAAA,8BAAc,EAAC,aAAa,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;wBACtD,CAAC,YAEA,CAAC,CAAC,wBAAwB,CAAC,GACrB,EACT,uBAAC,gBAAM,IACL,QAAQ,QACR,QAAQ,EACN,YAAY,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;4BACxE,WAAW,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,EAEvE,OAAO,EAAE,GAAG,EAAE;4BACZ,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;4BACpC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;4BAClC,IAAA,8BAAc,EAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;4BACnD,IAAA,8BAAc,EAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;wBACnD,CAAC,YAEA,CAAC,CAAC,qBAAqB,CAAC,GAClB,IACL,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
@@ -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;
@@ -3,10 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
+ const react_2 = require("react");
6
7
  const fiber_1 = require("@react-three/fiber");
7
8
  const drei_1 = require("@react-three/drei");
8
9
  const utils_1 = require("../../../helpers/utils");
9
10
  const avatarComponent_1 = require("./AvatarComponent/avatarComponent");
11
+ const positionControls_1 = tslib_1.__importDefault(require("./AvatarComponent/positionControls/positionControls"));
12
+ const configuration_1 = require("../../../helpers/configuration");
10
13
  const loader_1 = tslib_1.__importDefault(require("./AvatarComponent/components/loader"));
11
14
  const defaultStyles = {
12
15
  halfBody: {
@@ -22,20 +25,40 @@ const defaultStyles = {
22
25
  backgroundColor: 'white',
23
26
  },
24
27
  };
25
- const getCameraSettings = (halfBody, isZoomed) => halfBody
26
- ? {
27
- fov: 40,
28
- position: [0, 0, 0.6],
29
- }
30
- : !halfBody && isZoomed
31
- ? {
32
- fov: 44,
33
- position: [0, 0, 1.25],
34
- }
35
- : { fov: 40, position: [0, 0.0000175, 3] };
36
28
  const getLightingComponent = () => (0, utils_1.isAndroid)() || (0, utils_1.isiOS)() ? ((0, jsx_runtime_1.jsx)(drei_1.SpotLight, { distance: 100, position: [-0.3, 0.2, 1.25], angle: Math.PI / 2, attenuation: 5, anglePower: 5 })) : ((0, jsx_runtime_1.jsx)(drei_1.Environment, { files: "https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/venice_sunset_1k.hdr" }));
37
- function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody = true, loading, animation, showControls = false, isZoomed, chatEmission, stopProcessing, resetVisemeQueue, updateCurrentViseme, }) {
38
- return ((0, jsx_runtime_1.jsx)(fiber_1.Canvas, { style: style || (halfBody ? defaultStyles.halfBody : defaultStyles.fullBody), camera: getCameraSettings(halfBody, isZoomed), children: (0, jsx_runtime_1.jsxs)(react_1.Suspense, { fallback: fallback || (0, jsx_runtime_1.jsx)(loader_1.default, { fallbackImg: fallbackImg }), children: [getLightingComponent(), rotateAvatar && (0, jsx_runtime_1.jsx)(drei_1.OrbitControls, { enablePan: false, enableZoom: false }), (0, jsx_runtime_1.jsx)(avatarComponent_1.AvatarView, { url: url, sex: sex, showControls: showControls, loading: loading || false, animation: animation, isZoomed: isZoomed || false, eyeBlink: eyeBlink || false, headMovement: headMovement || false, speaking: speaking || false, halfBody: halfBody || false, chatEmission: chatEmission, updateCurrentViseme: updateCurrentViseme, stopProcessing: stopProcessing, resetVisemeQueue: resetVisemeQueue })] }) }));
29
+ const getCameraSettings = (halfBody, isZoomed) => {
30
+ const baseZ = halfBody ? 0.6 : 3;
31
+ return {
32
+ fov: isZoomed ? 44 : 40,
33
+ position: [0, 0, baseZ],
34
+ target: [0, 0, 0],
35
+ };
36
+ };
37
+ function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody = true, loading, animation, showControls = false, isZoomed, chatEmission, stopProcessing, resetVisemeQueue, updateCurrentViseme, enablePositionControls, setEnablePositionControls, isTotem = false, }) {
38
+ const [cameraZ, setCameraZ] = (0, react_1.useState)(() => getCameraSettings(halfBody, isZoomed || false).position[2]);
39
+ const getAvatarHeight = () => {
40
+ if (isTotem) {
41
+ const height = (0, configuration_1.getLocalConfig)('avatarHeight', 50);
42
+ return height;
43
+ }
44
+ if (halfBody) {
45
+ return 80;
46
+ }
47
+ return isZoomed ? 16 : 65;
48
+ };
49
+ const getAvatarDepth = () => {
50
+ if (isTotem) {
51
+ const depth = (0, configuration_1.getLocalConfig)('avatarDepth', 50);
52
+ return depth;
53
+ }
54
+ if (halfBody) {
55
+ return 50;
56
+ }
57
+ return isZoomed ? 5 : 100;
58
+ };
59
+ const [avatarHeight, setAvatarHeight] = (0, react_1.useState)(getAvatarHeight());
60
+ const [avatarDepth, setAvatarDepth] = (0, react_1.useState)(getAvatarDepth());
61
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [enablePositionControls && ((0, jsx_runtime_1.jsx)(positionControls_1.default, { avatarHeight: avatarHeight, avatarDepth: avatarDepth, halfBody: halfBody, setAvatarHeight: setAvatarHeight, setAvatarDepth: setAvatarDepth, setEnablePositionControls: setEnablePositionControls })), (0, jsx_runtime_1.jsxs)(fiber_1.Canvas, { style: style || defaultStyles.fullBody, children: [(0, jsx_runtime_1.jsx)(drei_1.PerspectiveCamera, { makeDefault: true, position: [0, 0, cameraZ], fov: getCameraSettings(halfBody, isZoomed || false).fov }), rotateAvatar && ((0, jsx_runtime_1.jsx)(drei_1.OrbitControls, { enablePan: false, enableZoom: false, target: [0, 0, 0] })), (0, jsx_runtime_1.jsxs)(react_2.Suspense, { fallback: fallback || (0, jsx_runtime_1.jsx)(loader_1.default, { fallbackImg: fallbackImg }), children: [getLightingComponent(), (0, jsx_runtime_1.jsx)(avatarComponent_1.AvatarView, { url: url, sex: sex, showControls: showControls, loading: loading || false, animation: animation, isZoomed: isZoomed || false, eyeBlink: eyeBlink || false, headMovement: headMovement || false, speaking: speaking || false, halfBody: halfBody, chatEmission: chatEmission, updateCurrentViseme: updateCurrentViseme, stopProcessing: stopProcessing, resetVisemeQueue: resetVisemeQueue, setCameraZ: setCameraZ, avatarHeight: avatarHeight, avatarDepth: avatarDepth })] })] })] }));
39
62
  }
40
63
  exports.default = ContainerAvatarView;
41
64
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Avatar/AvatarView/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Avatar/AvatarView/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Nodes } from "./utils";
2
+ export declare const hideHands: (nodes: Nodes) => void;