@memori.ai/memori-react 7.5.0 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +10 -2
  3. package/dist/components/Avatar/Avatar.d.ts +2 -0
  4. package/dist/components/Avatar/Avatar.js +11 -6
  5. package/dist/components/Avatar/Avatar.js.map +1 -1
  6. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +20 -0
  7. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +107 -0
  8. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -0
  9. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.d.ts +26 -0
  10. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.js +59 -0
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.js.map +1 -0
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.d.ts +30 -0
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js +148 -0
  14. package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js.map +1 -0
  15. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +15 -0
  16. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +77 -0
  17. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -0
  18. package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.d.ts +5 -0
  19. package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.js +12 -0
  20. package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.js.map +1 -0
  21. package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.d.ts +2 -1
  22. package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.js +3 -2
  23. package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.js.map +1 -1
  24. package/dist/components/Avatar/AvatarView/index.d.ts +6 -1
  25. package/dist/components/Avatar/AvatarView/index.js +15 -83
  26. package/dist/components/Avatar/AvatarView/index.js.map +1 -1
  27. package/dist/components/Avatar/AvatarView/utils/useEyeBlink.d.ts +16 -2
  28. package/dist/components/Avatar/AvatarView/utils/useEyeBlink.js +62 -38
  29. package/dist/components/Avatar/AvatarView/utils/useEyeBlink.js.map +1 -1
  30. package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.d.ts +16 -0
  31. package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.js +59 -0
  32. package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.js.map +1 -0
  33. package/dist/components/Avatar/AvatarView/utils/useSmile.js +1 -1
  34. package/dist/components/Avatar/AvatarView/utils/useSmile.js.map +1 -1
  35. package/dist/components/ChatBubble/ChatBubble.js +2 -3
  36. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  37. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.d.ts +1 -1
  38. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js +24 -3
  39. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
  40. package/dist/components/MemoriWidget/MemoriWidget.d.ts +1 -1
  41. package/dist/components/MemoriWidget/MemoriWidget.js +25 -3
  42. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  43. package/dist/components/StartPanel/StartPanel.js +1 -1
  44. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  45. package/dist/components/layouts/HiddenChat.d.ts +4 -0
  46. package/dist/components/layouts/HiddenChat.js +51 -0
  47. package/dist/components/layouts/HiddenChat.js.map +1 -0
  48. package/dist/components/layouts/ZoomedFullBody.d.ts +4 -0
  49. package/dist/components/layouts/ZoomedFullBody.js +8 -0
  50. package/dist/components/layouts/ZoomedFullBody.js.map +1 -0
  51. package/dist/components/layouts/hidden-chat.css +184 -0
  52. package/dist/context/visemeContext.d.ts +27 -0
  53. package/dist/context/visemeContext.js +221 -0
  54. package/dist/context/visemeContext.js.map +1 -0
  55. package/dist/helpers/utils.d.ts +7 -0
  56. package/dist/helpers/utils.js +51 -1
  57. package/dist/helpers/utils.js.map +1 -1
  58. package/dist/index.js +20 -16
  59. package/dist/index.js.map +1 -1
  60. package/dist/styles.css +1 -0
  61. package/esm/components/Avatar/Avatar.d.ts +2 -0
  62. package/esm/components/Avatar/Avatar.js +11 -6
  63. package/esm/components/Avatar/Avatar.js.map +1 -1
  64. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +20 -0
  65. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +102 -0
  66. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -0
  67. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.d.ts +26 -0
  68. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.js +56 -0
  69. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.js.map +1 -0
  70. package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.d.ts +30 -0
  71. package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js +145 -0
  72. package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js.map +1 -0
  73. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +15 -0
  74. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +73 -0
  75. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -0
  76. package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.d.ts +5 -0
  77. package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.js +9 -0
  78. package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.js.map +1 -0
  79. package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.d.ts +2 -1
  80. package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.js +3 -2
  81. package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.js.map +1 -1
  82. package/esm/components/Avatar/AvatarView/index.d.ts +6 -1
  83. package/esm/components/Avatar/AvatarView/index.js +16 -84
  84. package/esm/components/Avatar/AvatarView/index.js.map +1 -1
  85. package/esm/components/Avatar/AvatarView/utils/useEyeBlink.d.ts +16 -2
  86. package/esm/components/Avatar/AvatarView/utils/useEyeBlink.js +61 -38
  87. package/esm/components/Avatar/AvatarView/utils/useEyeBlink.js.map +1 -1
  88. package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.d.ts +16 -0
  89. package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.js +55 -0
  90. package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.js.map +1 -0
  91. package/esm/components/Avatar/AvatarView/utils/useSmile.js +1 -1
  92. package/esm/components/Avatar/AvatarView/utils/useSmile.js.map +1 -1
  93. package/esm/components/ChatBubble/ChatBubble.js +2 -3
  94. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  95. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.d.ts +1 -1
  96. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js +24 -3
  97. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
  98. package/esm/components/MemoriWidget/MemoriWidget.d.ts +1 -1
  99. package/esm/components/MemoriWidget/MemoriWidget.js +26 -4
  100. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  101. package/esm/components/StartPanel/StartPanel.js +1 -1
  102. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  103. package/esm/components/layouts/HiddenChat.d.ts +4 -0
  104. package/esm/components/layouts/HiddenChat.js +48 -0
  105. package/esm/components/layouts/HiddenChat.js.map +1 -0
  106. package/esm/components/layouts/ZoomedFullBody.d.ts +4 -0
  107. package/esm/components/layouts/ZoomedFullBody.js +5 -0
  108. package/esm/components/layouts/ZoomedFullBody.js.map +1 -0
  109. package/esm/components/layouts/hidden-chat.css +184 -0
  110. package/esm/context/visemeContext.d.ts +27 -0
  111. package/esm/context/visemeContext.js +216 -0
  112. package/esm/context/visemeContext.js.map +1 -0
  113. package/esm/helpers/utils.d.ts +7 -0
  114. package/esm/helpers/utils.js +45 -0
  115. package/esm/helpers/utils.js.map +1 -1
  116. package/esm/index.js +20 -16
  117. package/esm/index.js.map +1 -1
  118. package/esm/styles.css +1 -0
  119. package/package.json +2 -2
  120. package/src/components/Avatar/Avatar.test.tsx +28 -20
  121. package/src/components/Avatar/Avatar.tsx +19 -5
  122. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +222 -0
  123. package/src/components/Avatar/AvatarView/{components → AvatarComponent/components}/controls.tsx +16 -10
  124. package/src/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.tsx +234 -0
  125. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +123 -0
  126. package/src/components/Avatar/AvatarView/{components → AvatarComponent/components}/loader.tsx +1 -1
  127. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +47 -8
  128. package/src/components/Avatar/AvatarView/index.tsx +47 -174
  129. package/src/components/Avatar/AvatarView/utils/useEyeBlink.ts +89 -48
  130. package/src/components/Avatar/AvatarView/utils/useMouthAnimation.ts +93 -0
  131. package/src/components/Avatar/AvatarView/utils/useSmile.ts +1 -1
  132. package/src/components/ChatBubble/ChatBubble.tsx +3 -4
  133. package/src/components/CompletionProviderStatus/CompletionProviderStatus.tsx +33 -3
  134. package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +18 -0
  135. package/src/components/MemoriWidget/MemoriWidget.tsx +60 -5
  136. package/src/components/StartPanel/StartPanel.tsx +1 -1
  137. package/src/components/layouts/Chat.test.tsx +7 -5
  138. package/src/components/layouts/FullPage.test.tsx +11 -8
  139. package/src/components/layouts/HiddenChat.test.tsx +37 -0
  140. package/src/components/layouts/HiddenChat.tsx +108 -0
  141. package/src/components/layouts/Totem.test.tsx +6 -4
  142. package/src/components/layouts/WebsiteAssistant.test.tsx +7 -5
  143. package/src/components/layouts/ZoomedFullBody.test.tsx +37 -0
  144. package/src/components/layouts/ZoomedFullBody.tsx +55 -0
  145. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +210 -0
  146. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +444 -0
  147. package/src/components/layouts/hidden-chat.css +184 -0
  148. package/src/components/layouts/layouts.stories.tsx +135 -19
  149. package/src/context/visemeContext.tsx +328 -0
  150. package/src/helpers/utils.test.ts +18 -0
  151. package/src/helpers/utils.ts +73 -0
  152. package/src/index.stories.tsx +40 -17
  153. package/src/index.tsx +82 -78
  154. package/src/styles.css +1 -0
  155. package/src/components/Avatar/AvatarView/components/fullbodyAvatar.tsx +0 -120
  156. package/src/components/Avatar/AvatarView/components/halfbodyAvatar.tsx +0 -69
  157. package/src/components/Avatar/AvatarView/utils/useMouthSpeaking.ts +0 -87
@@ -0,0 +1,77 @@
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 three_1 = require("three");
7
+ const drei_1 = require("@react-three/drei");
8
+ const utils_1 = require("../../../../../helpers/utils");
9
+ const fiber_1 = require("@react-three/fiber");
10
+ const useEyeBlink_1 = require("../../utils/useEyeBlink");
11
+ const useHeadMovement_1 = tslib_1.__importDefault(require("../../utils/useHeadMovement"));
12
+ const utils_2 = require("../../utils/utils");
13
+ const AVATAR_POSITION = new three_1.Vector3(0, -0.6, 0);
14
+ const lerp = (start, end, alpha) => {
15
+ return start * (1 - alpha) + end * alpha;
16
+ };
17
+ function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, headMovement, eyeBlink, setMeshRef, onLoaded, clearVisemes, morphTargetInfluences, }) {
18
+ const { scene } = (0, drei_1.useGLTF)(url);
19
+ const { nodes, materials } = (0, fiber_1.useGraph)(scene);
20
+ const avatarMeshRef = (0, react_1.useRef)(null);
21
+ (0, useEyeBlink_1.useAvatarBlink)({
22
+ enabled: eyeBlink || false,
23
+ setMorphTargetInfluences,
24
+ config: {
25
+ minInterval: 1500,
26
+ maxInterval: 4000,
27
+ blinkDuration: 120
28
+ }
29
+ });
30
+ (0, useHeadMovement_1.default)(headMovement, nodes);
31
+ (0, react_1.useEffect)(() => {
32
+ const setupAvatar = () => {
33
+ (0, utils_2.hideHands)(nodes);
34
+ (0, utils_1.correctMaterials)(materials);
35
+ const firstSkinnedMesh = Object.values(nodes).find(utils_1.isSkinnedMesh);
36
+ if (firstSkinnedMesh) {
37
+ setMeshRef(firstSkinnedMesh);
38
+ avatarMeshRef.current = firstSkinnedMesh;
39
+ if (firstSkinnedMesh.morphTargetDictionary && firstSkinnedMesh.morphTargetInfluences) {
40
+ setMorphTargetDictionary(firstSkinnedMesh.morphTargetDictionary);
41
+ const initialInfluences = Object.keys(firstSkinnedMesh.morphTargetDictionary).reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
42
+ setMorphTargetInfluences(initialInfluences);
43
+ }
44
+ }
45
+ onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded();
46
+ };
47
+ setupAvatar();
48
+ return () => {
49
+ const disposeObjects = () => {
50
+ Object.values(materials).forEach(fiber_1.dispose);
51
+ Object.values(nodes).filter(utils_1.isSkinnedMesh).forEach(fiber_1.dispose);
52
+ clearVisemes();
53
+ };
54
+ disposeObjects();
55
+ };
56
+ }, [materials, nodes, url, onLoaded, clearVisemes]);
57
+ const skinnedMeshes = (0, react_1.useMemo)(() => Object.values(nodes).filter(utils_1.isSkinnedMesh), [nodes]);
58
+ (0, fiber_1.useFrame)((_) => {
59
+ if (avatarMeshRef.current && avatarMeshRef.current.morphTargetDictionary) {
60
+ updateMorphTargetInfluences();
61
+ }
62
+ function updateMorphTargetInfluences() {
63
+ Object.entries(morphTargetInfluences).forEach(([key, value]) => {
64
+ const index = avatarMeshRef.current.morphTargetDictionary[key];
65
+ if (typeof index === 'number' &&
66
+ avatarMeshRef.current.morphTargetInfluences) {
67
+ const currentValue = avatarMeshRef.current.morphTargetInfluences[index];
68
+ const smoothValue = lerp(currentValue, value, 0.1);
69
+ avatarMeshRef.current.morphTargetInfluences[index] = smoothValue;
70
+ }
71
+ });
72
+ }
73
+ });
74
+ return ((0, jsx_runtime_1.jsxs)("group", { position: AVATAR_POSITION, children: [nodes.Hips && (0, jsx_runtime_1.jsx)("primitive", { object: nodes.Hips }, "armature"), skinnedMeshes.map((node) => node && ((0, jsx_runtime_1.jsx)("primitive", { object: node, receiveShadow: true, castShadow: true }, node.name)))] }));
75
+ }
76
+ exports.default = HalfBodyAvatar;
77
+ //# sourceMappingURL=halfbodyAvatar.js.map
@@ -0,0 +1 @@
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,5 @@
1
+ interface Props {
2
+ fallbackImg?: string;
3
+ }
4
+ declare const Loader: ({ fallbackImg }: Props) => JSX.Element;
5
+ export default Loader;
@@ -0,0 +1,12 @@
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 drei_1 = require("@react-three/drei");
6
+ const Spin_1 = tslib_1.__importDefault(require("../../../../ui/Spin"));
7
+ const Loader = ({ fallbackImg }) => {
8
+ const { progress } = (0, drei_1.useProgress)();
9
+ return ((0, jsx_runtime_1.jsx)(drei_1.Html, { center: true, className: "avatar-loader", children: (0, jsx_runtime_1.jsx)(Spin_1.default, { spinning: true, children: fallbackImg ? ((0, jsx_runtime_1.jsxs)("figure", { children: [(0, jsx_runtime_1.jsx)("img", { src: fallbackImg, alt: `${Math.round(progress)}% loaded`, title: `${Math.round(progress)}% loaded` }), (0, jsx_runtime_1.jsx)("figcaption", { children: `${Math.round(progress)}%` })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [Math.round(progress), " % loaded"] })) }) }));
10
+ };
11
+ exports.default = Loader;
12
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/loader.tsx"],"names":[],"mappings":";;;;AACA,4CAAsD;AACtD,uEAAuC;AAMvC,MAAM,MAAM,GAAG,CAAC,EAAE,WAAW,EAAS,EAAE,EAAE;IACxC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,kBAAW,GAAE,CAAC;IACnC,OAAO,CACL,uBAAC,WAAI,IAAC,MAAM,QAAC,SAAS,EAAC,eAAe,YACpC,uBAAC,cAAI,IAAC,QAAQ,kBACX,WAAW,CAAC,CAAC,CAAC,CACb,+CACE,gCACE,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EACtC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,GACxC,EACF,iDAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAc,IAC9C,CACV,CAAC,CAAC,CAAC,CACF,6DAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAa,CACrC,GACI,GACF,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,MAAM,CAAC"}
@@ -14,5 +14,6 @@ export interface FullbodyAvatarProps {
14
14
  timeScale: number;
15
15
  loading?: boolean;
16
16
  speaking?: boolean;
17
+ isZoomed?: boolean;
17
18
  }
18
- export default function FullbodyAvatar({ url, sex, onLoaded, currentBaseAction, additiveActions, timeScale }: FullbodyAvatarProps): JSX.Element;
19
+ export default function FullbodyAvatar({ url, sex, onLoaded, currentBaseAction, additiveActions, timeScale, isZoomed, }: FullbodyAvatarProps): JSX.Element;
@@ -13,11 +13,12 @@ const useHeadMovement_1 = tslib_1.__importDefault(require("../utils/useHeadMovem
13
13
  const useSmile_1 = tslib_1.__importDefault(require("../utils/useSmile"));
14
14
  const AVATAR_POSITION = new three_1.Vector3(0, -1, 0);
15
15
  const AVATAR_ROTATION = new three_1.Euler(0.175, 0, 0);
16
+ const AVATAR_POSITION_ZOOMED = new three_1.Vector3(0, -1.53, 0);
16
17
  const ANIMATION_URLS = {
17
18
  MALE: 'https://assets.memori.ai/api/v2/asset/5de7456f-0cd8-4e29-95a7-0cd0045a5325.glb',
18
19
  FEMALE: 'https://assets.memori.ai/api/v2/asset/84487a2b-377c-4565-800a-51459d580ec8.glb',
19
20
  };
20
- function FullbodyAvatar({ url, sex, onLoaded, currentBaseAction, additiveActions, timeScale }) {
21
+ function FullbodyAvatar({ url, sex, onLoaded, currentBaseAction, additiveActions, timeScale, isZoomed, }) {
21
22
  const { scene } = (0, drei_1.useGLTF)(url);
22
23
  const { animations } = (0, drei_1.useGLTF)(ANIMATION_URLS[sex]);
23
24
  const { nodes, materials } = (0, fiber_1.useGraph)(scene);
@@ -54,7 +55,7 @@ function FullbodyAvatar({ url, sex, onLoaded, currentBaseAction, additiveActions
54
55
  (0, fiber_1.useFrame)((_, delta) => {
55
56
  mixer.update(delta * 0.001);
56
57
  });
57
- return ((0, jsx_runtime_1.jsx)("group", { position: AVATAR_POSITION, rotation: AVATAR_ROTATION, children: (0, jsx_runtime_1.jsx)("primitive", { object: scene }) }));
58
+ return ((0, jsx_runtime_1.jsx)("group", { position: isZoomed ? AVATAR_POSITION_ZOOMED : AVATAR_POSITION, rotation: AVATAR_ROTATION, children: (0, jsx_runtime_1.jsx)("primitive", { object: scene }) }));
58
59
  }
59
60
  exports.default = FullbodyAvatar;
60
61
  //# sourceMappingURL=fullbodyAvatar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fullbodyAvatar.js","sourceRoot":"","sources":["../../../../../src/components/Avatar/AvatarView/components/fullbodyAvatar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fullbodyAvatar.js","sourceRoot":"","sources":["../../../../../src/components/Avatar/AvatarView/components/fullbodyAvatar.tsx"],"names":[],"mappings":"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"}
@@ -14,5 +14,10 @@ export interface Props {
14
14
  loading?: boolean;
15
15
  animation?: string;
16
16
  showControls?: boolean;
17
+ isZoomed?: boolean;
18
+ chatEmission?: any;
19
+ setMeshRef?: any;
20
+ clearVisemes: () => void;
21
+ setEmotion: (emotion: string) => void;
17
22
  }
18
- export default function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, halfBody, loading, animation, showControls, }: Props): JSX.Element;
23
+ export default function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody, loading, animation, showControls, isZoomed, chatEmission, setMeshRef, clearVisemes, setEmotion, }: Props): JSX.Element;
@@ -2,28 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const fullbodyAvatar_1 = tslib_1.__importDefault(require("./components/fullbodyAvatar"));
5
+ const react_1 = require("react");
6
6
  const fiber_1 = require("@react-three/fiber");
7
7
  const drei_1 = require("@react-three/drei");
8
8
  const utils_1 = require("../../../helpers/utils");
9
- const react_1 = require("react");
10
- const controls_1 = tslib_1.__importDefault(require("./components/controls"));
11
- const halfbodyAvatar_1 = tslib_1.__importDefault(require("./components/halfbodyAvatar"));
12
- const baseActions = {
13
- Idle: { weight: 1 },
14
- 'Idle 1': { weight: 0 },
15
- 'Idle 2': { weight: 0 },
16
- 'Idle 3': { weight: 0 },
17
- Loading: { weight: 0 },
18
- Sad: { weight: 0 },
19
- 'Talk 1': { weight: 0 },
20
- 'Talk 2': { weight: 0 },
21
- 'Talk 3': { weight: 0 },
22
- };
9
+ const avatarComponent_1 = require("./AvatarComponent/avatarComponent");
10
+ const loader_1 = tslib_1.__importDefault(require("./AvatarComponent/components/loader"));
23
11
  const defaultStyles = {
24
12
  halfBody: {
25
- width: '250px',
26
- height: '250px',
13
+ width: '100%',
14
+ height: '100%',
15
+ minHeight: '500px',
27
16
  backgroundColor: 'white',
28
17
  borderRadius: '100%',
29
18
  },
@@ -33,77 +22,20 @@ const defaultStyles = {
33
22
  backgroundColor: 'white',
34
23
  },
35
24
  };
36
- const getCameraSettings = (halfBody) => halfBody
25
+ const getCameraSettings = (halfBody, isZoomed) => halfBody
37
26
  ? {
38
27
  fov: 40,
39
28
  position: [0, 0, 0.6],
40
29
  }
41
- : { fov: 40, position: [0, 0.0000175, 3] };
42
- 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" }));
43
- const AvatarComponent = ({ animation, loading, halfBody, ...props }) => halfBody ? (0, jsx_runtime_1.jsx)(halfbodyAvatar_1.default, { ...props }) : (0, jsx_runtime_1.jsx)(fullbodyAvatar_1.default, { ...props });
44
- const AvatarView = ({ showControls, animation, loading, url, sex, eyeBlink, headMovement, speaking, halfBody, }) => {
45
- const [currentBaseAction, setCurrentBaseAction] = (0, react_1.useState)({
46
- action: animation || 'Idle',
47
- weight: 1,
48
- });
49
- const [additiveActions, setAdditiveActions] = (0, react_1.useState)({
50
- smile: { weight: 0 },
51
- blink: { weight: eyeBlink ? 1 : 0 },
52
- speak: { weight: speaking ? 1 : 0 },
53
- headMovement: { weight: headMovement ? 1 : 0 },
54
- });
55
- const [timeScale, setTimeScale] = (0, react_1.useState)(0.8);
56
- function onBaseActionChange(action) {
57
- setCurrentBaseAction({
58
- action,
59
- weight: 1,
60
- });
61
- }
62
- function onAdditiveActionChange(action, weight) {
63
- setAdditiveActions({
64
- ...additiveActions,
65
- [action]: { weight },
66
- });
67
- }
68
- function modifyTimeScale(value) {
69
- setTimeScale(value);
70
- }
71
- (0, react_1.useEffect)(() => {
72
- if (loading && currentBaseAction.action !== 'Loading' && !speaking) {
73
- setCurrentBaseAction({
74
- action: 'Loading',
75
- weight: 1,
76
- });
77
- return;
78
- }
79
- if (speaking) {
80
- const talkingAnimations = ['Talk 1', 'Talk 2', 'Talk 3'];
81
- const randomIndex = Math.floor(Math.random() * talkingAnimations.length);
82
- const randomTalkingAnimation = talkingAnimations[randomIndex];
83
- setAdditiveActions({
84
- ...additiveActions,
85
- speak: { weight: 1 },
86
- });
87
- setCurrentBaseAction({
88
- action: randomTalkingAnimation,
89
- weight: 1,
90
- });
91
- }
92
- else if (!speaking && additiveActions.speak.weight !== 0) {
93
- setAdditiveActions({
94
- ...additiveActions,
95
- speak: { weight: 0 },
96
- });
97
- setCurrentBaseAction({
98
- action: 'Idle',
99
- weight: 1,
100
- });
30
+ : !halfBody && isZoomed
31
+ ? {
32
+ fov: 44,
33
+ position: [0, 0, 1.25],
101
34
  }
102
- }, [speaking, loading]);
103
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [showControls && ((0, jsx_runtime_1.jsx)(controls_1.default, { timeScale: timeScale, onBaseActionChange: onBaseActionChange, onAdditiveActionChange: onAdditiveActionChange, baseActions: baseActions, additiveActions: additiveActions, currentBaseAction: currentBaseAction, modifyTimeScale: modifyTimeScale })), (0, jsx_runtime_1.jsx)(AvatarComponent, { halfBody: halfBody, url: url, sex: sex, eyeBlink: eyeBlink, headMovement: headMovement, speaking: speaking, additiveActions: additiveActions, baseActions: baseActions, loading: loading || false, currentBaseAction: currentBaseAction, timeScale: timeScale, animation: animation })] }));
104
- };
105
- function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, halfBody = true, loading, animation, showControls = false, }) {
106
- return ((0, jsx_runtime_1.jsxs)(fiber_1.Canvas, { style: style || (halfBody ? defaultStyles.halfBody : defaultStyles.fullBody), camera: getCameraSettings(halfBody), children: [getLightingComponent(), rotateAvatar && (0, jsx_runtime_1.jsx)(drei_1.OrbitControls, { enablePan: false, enableZoom: false }), (0, jsx_runtime_1.jsx)(AvatarView, { halfBody: halfBody, url: url, sex: sex, eyeBlink: eyeBlink, headMovement: headMovement, speaking: speaking, loading: loading, animation: animation, showControls: showControls })] }));
35
+ : { fov: 40, position: [0, 0.0000175, 3] };
36
+ 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, setMeshRef, clearVisemes, setEmotion, }) {
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, setMeshRef: setMeshRef, clearVisemes: clearVisemes, setEmotion: setEmotion })] }) }));
107
39
  }
108
40
  exports.default = ContainerAvatarView;
109
41
  //# 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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"}
@@ -1,2 +1,16 @@
1
- import { Nodes } from './utils';
2
- export default function useEyeBlink(enabled: boolean | undefined, nodes: Nodes): void;
1
+ interface BlinkConfig {
2
+ minInterval: number;
3
+ maxInterval: number;
4
+ blinkDuration: number;
5
+ }
6
+ interface UseAvatarBlinkProps {
7
+ enabled: boolean;
8
+ setMorphTargetInfluences: (morphTargetInfluences: any) => void;
9
+ config?: Partial<BlinkConfig>;
10
+ }
11
+ export declare function useAvatarBlink({ enabled, setMorphTargetInfluences, config }: UseAvatarBlinkProps): {
12
+ isBlinking: boolean;
13
+ lastBlinkTime: number;
14
+ triggerBlink: () => void;
15
+ };
16
+ export {};
@@ -1,47 +1,71 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useAvatarBlink = void 0;
3
4
  const react_1 = require("react");
4
- const fiber_1 = require("@react-three/fiber");
5
- const BLINK_DURATION = 2;
6
- const BLINK_INTERVAL_MIN = 2000;
7
- const BLINK_INTERVAL_MAX = 7000;
8
- function useEyeBlink(enabled, nodes) {
9
- const blinkStateRef = (0, react_1.useRef)({
10
- blinkTime: 999,
11
- headMesh: null,
12
- morphIndex: 0,
13
- });
14
- const setNextBlink = (0, react_1.useCallback)(() => {
15
- blinkStateRef.current.blinkTime = 0;
16
- const nextBlinkDelay = Math.random() * (BLINK_INTERVAL_MAX - BLINK_INTERVAL_MIN) + BLINK_INTERVAL_MIN;
17
- setTimeout(setNextBlink, nextBlinkDelay);
18
- }, []);
19
- (0, react_1.useEffect)(() => {
20
- if (!enabled)
5
+ const DEFAULT_BLINK_CONFIG = {
6
+ minInterval: 1000,
7
+ maxInterval: 5000,
8
+ blinkDuration: 150,
9
+ };
10
+ function useAvatarBlink({ enabled, setMorphTargetInfluences, config = {} }) {
11
+ const blinkTimeoutRef = (0, react_1.useRef)();
12
+ const isBlinkingRef = (0, react_1.useRef)(false);
13
+ const lastBlinkTime = (0, react_1.useRef)(0);
14
+ const blinkConfig = {
15
+ ...DEFAULT_BLINK_CONFIG,
16
+ ...config
17
+ };
18
+ const blink = (0, react_1.useCallback)(() => {
19
+ if (!enabled || isBlinkingRef.current)
21
20
  return;
22
- const headMesh = (nodes.Wolf3D_Head || nodes.Wolf3D_Avatar);
23
- blinkStateRef.current.headMesh = headMesh;
24
- if ((headMesh === null || headMesh === void 0 ? void 0 : headMesh.morphTargetDictionary) && (headMesh === null || headMesh === void 0 ? void 0 : headMesh.morphTargetInfluences)) {
25
- blinkStateRef.current.morphIndex = headMesh.morphTargetDictionary.eyesClosed;
21
+ isBlinkingRef.current = true;
22
+ setMorphTargetInfluences((prev) => ({
23
+ ...prev,
24
+ eyesClosed: 1
25
+ }));
26
+ setTimeout(() => {
27
+ setMorphTargetInfluences((prev) => ({
28
+ ...prev,
29
+ eyesClosed: 0
30
+ }));
31
+ isBlinkingRef.current = false;
32
+ lastBlinkTime.current = Date.now();
33
+ scheduleNextBlink();
34
+ }, blinkConfig.blinkDuration);
35
+ }, [enabled, blinkConfig.blinkDuration, setMorphTargetInfluences]);
36
+ const scheduleNextBlink = (0, react_1.useCallback)(() => {
37
+ if (blinkTimeoutRef.current) {
38
+ clearTimeout(blinkTimeoutRef.current);
26
39
  }
27
- const initialBlinkDelay = setTimeout(setNextBlink, 3000);
28
- return () => {
29
- clearTimeout(initialBlinkDelay);
30
- };
31
- }, [nodes, enabled, setNextBlink]);
32
- (0, fiber_1.useFrame)((_, delta) => {
33
- if (!enabled)
34
- return;
35
- const { blinkTime, headMesh, morphIndex } = blinkStateRef.current;
36
- if (blinkTime < BLINK_DURATION && (headMesh === null || headMesh === void 0 ? void 0 : headMesh.morphTargetInfluences)) {
37
- const value = Math.abs(Math.sin((blinkTime * Math.PI) / 2));
38
- blinkStateRef.current.blinkTime += delta * 10;
39
- headMesh.morphTargetInfluences[morphIndex] = value;
40
+ const nextBlinkDelay = Math.random() *
41
+ (blinkConfig.maxInterval - blinkConfig.minInterval) +
42
+ blinkConfig.minInterval;
43
+ blinkTimeoutRef.current = setTimeout(blink, nextBlinkDelay);
44
+ }, [blink, blinkConfig.maxInterval, blinkConfig.minInterval]);
45
+ (0, react_1.useEffect)(() => {
46
+ if (enabled) {
47
+ scheduleNextBlink();
40
48
  }
41
- else if (headMesh === null || headMesh === void 0 ? void 0 : headMesh.morphTargetInfluences) {
42
- headMesh.morphTargetInfluences[morphIndex] = 0;
49
+ else {
50
+ if (blinkTimeoutRef.current) {
51
+ clearTimeout(blinkTimeoutRef.current);
52
+ }
53
+ setMorphTargetInfluences((prevInfluences) => ({
54
+ ...prevInfluences,
55
+ eyesClosed: 0
56
+ }));
43
57
  }
44
- });
58
+ return () => {
59
+ if (blinkTimeoutRef.current) {
60
+ clearTimeout(blinkTimeoutRef.current);
61
+ }
62
+ };
63
+ }, [enabled, scheduleNextBlink, setMorphTargetInfluences]);
64
+ return {
65
+ isBlinking: isBlinkingRef.current,
66
+ lastBlinkTime: lastBlinkTime.current,
67
+ triggerBlink: blink
68
+ };
45
69
  }
46
- exports.default = useEyeBlink;
70
+ exports.useAvatarBlink = useAvatarBlink;
47
71
  //# sourceMappingURL=useEyeBlink.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEyeBlink.js","sourceRoot":"","sources":["../../../../../src/components/Avatar/AvatarView/utils/useEyeBlink.ts"],"names":[],"mappings":";;AAEA,iCAAuD;AACvD,8CAA8C;AAQ9C,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,SAAwB,WAAW,CAAC,OAA4B,EAAE,KAAY;IAC5E,MAAM,aAAa,GAAG,IAAA,cAAM,EAAa;QACvC,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,CAAC;KACd,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACpC,aAAa,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,GAAG,kBAAkB,CAAC;QACtG,UAAU,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAC3C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,aAAa,CAAgB,CAAC;QAC3E,aAAa,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAE1C,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,qBAAqB,MAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,qBAAqB,CAAA,EAAE;YACtE,aAAa,CAAC,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,qBAAqB,CAAC,UAAU,CAAC;SAC9E;QAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAEzD,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAEnC,IAAA,gBAAQ,EAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QACpB,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC;QAElE,IAAI,SAAS,GAAG,cAAc,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,qBAAqB,CAAA,EAAE;YACjE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5D,aAAa,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,GAAG,EAAE,CAAC;YAC9C,QAAQ,CAAC,qBAAqB,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;SACpD;aAAM,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,qBAAqB,EAAE;YAC1C,QAAQ,CAAC,qBAAqB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAChD;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AA3CD,8BA2CC"}
1
+ {"version":3,"file":"useEyeBlink.js","sourceRoot":"","sources":["../../../../../src/components/Avatar/AvatarView/utils/useEyeBlink.ts"],"names":[],"mappings":";;;AAAA,iCAAuD;AAQvD,MAAM,oBAAoB,GAAgB;IACxC,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,GAAG;CACnB,CAAC;AAQF,SAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,wBAAwB,EACxB,MAAM,GAAG,EAAE,EACS;IACpB,MAAM,eAAe,GAAG,IAAA,cAAM,GAAkB,CAAC;IACjD,MAAM,aAAa,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC;IAEhC,MAAM,WAAW,GAAG;QAClB,GAAG,oBAAoB;QACvB,GAAG,MAAM;KACV,CAAC;IAEF,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC7B,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO;YAAE,OAAO;QAE9C,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAE7B,wBAAwB,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;YACvC,GAAG,IAAI;YACP,UAAU,EAAE,CAAC;SACd,CAAC,CAAC,CAAC;QAGJ,UAAU,CAAC,GAAG,EAAE;YACd,wBAAwB,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;gBACvC,GAAG,IAAI;gBACP,UAAU,EAAE,CAAC;aACd,CAAC,CAAC,CAAC;YACJ,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;YAC9B,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAGnC,iBAAiB,EAAE,CAAC;QACtB,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAEnE,MAAM,iBAAiB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACzC,IAAI,eAAe,CAAC,OAAO,EAAE;YAC3B,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SACvC;QAGD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE;YAClC,CAAC,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;YACnD,WAAW,CAAC,WAAW,CAAC;QAE1B,eAAe,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC9D,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAG9D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE;YACX,iBAAiB,EAAE,CAAC;SACrB;aAAM;YACL,IAAI,eAAe,CAAC,OAAO,EAAE;gBAC3B,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACvC;YAED,wBAAwB,CAAC,CAAC,cAAmB,EAAE,EAAE,CAAC,CAAC;gBACjD,GAAG,cAAc;gBACjB,UAAU,EAAE,CAAC;aACd,CAAC,CAAC,CAAC;SACL;QAGD,OAAO,GAAG,EAAE;YACV,IAAI,eAAe,CAAC,OAAO,EAAE;gBAC3B,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACvC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAE3D,OAAO;QACL,UAAU,EAAE,aAAa,CAAC,OAAO;QACjC,aAAa,EAAE,aAAa,CAAC,OAAO;QACpC,YAAY,EAAE,KAAK;KACpB,CAAC;AACJ,CAAC;AA/ED,wCA+EC"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { SkinnedMesh } from 'three';
3
+ interface Viseme {
4
+ name: string;
5
+ duration: number;
6
+ weight: number;
7
+ startTime: number;
8
+ }
9
+ interface UseMouthAnimationProps {
10
+ currentVisemes: Viseme[];
11
+ avatarMeshRef: React.RefObject<SkinnedMesh>;
12
+ }
13
+ export declare function useMouthAnimation({ currentVisemes, avatarMeshRef }: UseMouthAnimationProps): {
14
+ handleMouthMovement: (elapsedTime: number) => void;
15
+ };
16
+ export {};
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMouthAnimation = void 0;
4
+ const react_1 = require("react");
5
+ const VISEME_SMOOTHING = 0.2;
6
+ const VISEME_SPEED_FACTOR = 0.44;
7
+ const lerp = (start, end, alpha) => {
8
+ return start * (1 - alpha) + end * alpha;
9
+ };
10
+ function useMouthAnimation({ currentVisemes, avatarMeshRef }) {
11
+ const visemeStartTimeRef = (0, react_1.useRef)(0);
12
+ const currentVisemeWeightRef = (0, react_1.useRef)({});
13
+ const getCurrentVisemeInfo = (elapsedTime) => {
14
+ let currentVisemeIndex = 0;
15
+ let accumulatedDuration = 0;
16
+ while (currentVisemeIndex < currentVisemes.length &&
17
+ accumulatedDuration <= elapsedTime) {
18
+ accumulatedDuration += currentVisemes[currentVisemeIndex].duration;
19
+ currentVisemeIndex++;
20
+ }
21
+ return { currentVisemeIndex, accumulatedDuration };
22
+ };
23
+ const applyCurrentViseme = (index, elapsedTime, accumulatedDuration) => {
24
+ var _a, _b, _c;
25
+ const currentViseme = currentVisemes[index - 1];
26
+ const visemeProgress = (elapsedTime - (accumulatedDuration - currentViseme.duration)) / currentViseme.duration;
27
+ const targetWeight = Math.sin(visemeProgress * Math.PI) * currentViseme.weight;
28
+ if (!currentVisemeWeightRef.current[currentViseme.name]) {
29
+ currentVisemeWeightRef.current[currentViseme.name] = 0;
30
+ }
31
+ currentVisemeWeightRef.current[currentViseme.name] = lerp(currentVisemeWeightRef.current[currentViseme.name], targetWeight, VISEME_SMOOTHING);
32
+ const visemeIndex = (_b = (_a = avatarMeshRef.current) === null || _a === void 0 ? void 0 : _a.morphTargetDictionary) === null || _b === void 0 ? void 0 : _b[currentViseme.name];
33
+ if (typeof visemeIndex === 'number' && ((_c = avatarMeshRef.current) === null || _c === void 0 ? void 0 : _c.morphTargetInfluences)) {
34
+ avatarMeshRef.current.morphTargetInfluences[visemeIndex] = currentVisemeWeightRef.current[currentViseme.name];
35
+ }
36
+ };
37
+ const resetVisemeAnimation = (currentTime) => {
38
+ visemeStartTimeRef.current = currentTime;
39
+ currentVisemeWeightRef.current = {};
40
+ };
41
+ const handleMouthMovement = (elapsedTime) => {
42
+ if (currentVisemes.length === 0)
43
+ return;
44
+ const currentTime = elapsedTime * VISEME_SPEED_FACTOR;
45
+ const visemeElapsedTime = currentTime - visemeStartTimeRef.current;
46
+ const { currentVisemeIndex, accumulatedDuration } = getCurrentVisemeInfo(visemeElapsedTime);
47
+ if (currentVisemeIndex > 0) {
48
+ applyCurrentViseme(currentVisemeIndex, visemeElapsedTime, accumulatedDuration);
49
+ }
50
+ if (visemeElapsedTime > accumulatedDuration) {
51
+ resetVisemeAnimation(currentTime);
52
+ }
53
+ };
54
+ return {
55
+ handleMouthMovement,
56
+ };
57
+ }
58
+ exports.useMouthAnimation = useMouthAnimation;
59
+ //# sourceMappingURL=useMouthAnimation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMouthAnimation.js","sourceRoot":"","sources":["../../../../../src/components/Avatar/AvatarView/utils/useMouthAnimation.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ function useSmile(smiling, nodes) {
9
9
  mouthSmileMorphIndex: 0,
10
10
  });
11
11
  (0, react_1.useEffect)(() => {
12
- const headMesh = (nodes.Wolf3D_Head || nodes.Wolf3D_Avatar || nodes.Wolf3D_Avatar001);
12
+ const headMesh = (nodes.Wolf3D_Head || nodes.Wolf3D_Avatar020 || nodes.Wolf3D_Avatar001);
13
13
  smileStateRef.current.headMesh = headMesh;
14
14
  if ((headMesh === null || headMesh === void 0 ? void 0 : headMesh.morphTargetDictionary) && (headMesh === null || headMesh === void 0 ? void 0 : headMesh.morphTargetInfluences)) {
15
15
  smileStateRef.current.mouthSmileMorphIndex = headMesh.morphTargetDictionary.mouthSmile;
@@ -1 +1 @@
1
- {"version":3,"file":"useSmile.js","sourceRoot":"","sources":["../../../../../src/components/Avatar/AvatarView/utils/useSmile.ts"],"names":[],"mappings":";;AAEA,iCAA0C;AAC1C,8CAA8C;AAO9C,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,CAAC;AAE9B,SAAwB,QAAQ,CAAC,OAA4B,EAAE,KAAY;IACzE,MAAM,aAAa,GAAG,IAAA,cAAM,EAAa;QACvC,QAAQ,EAAE,IAAI;QACd,oBAAoB,EAAE,CAAC;KACxB,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,gBAAgB,CAAgB,CAAC;QACrG,aAAa,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAE1C,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,qBAAqB,MAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,qBAAqB,CAAA,EAAE;YACtE,aAAa,CAAC,OAAO,CAAC,oBAAoB,GAAG,QAAQ,CAAC,qBAAqB,CAAC,UAAU,CAAC;SACxF;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,IAAA,gBAAQ,EAAC,GAAG,EAAE;QACZ,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC;QAEjE,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,qBAAqB,CAAA;YAAE,OAAO;QAE7C,MAAM,oBAAoB,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;QAGnF,QAAQ,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,GAAG,GAAG,CAAC;IAC/G,CAAC,CAAC,CAAC;AACL,CAAC;AA1BD,2BA0BC"}
1
+ {"version":3,"file":"useSmile.js","sourceRoot":"","sources":["../../../../../src/components/Avatar/AvatarView/utils/useSmile.ts"],"names":[],"mappings":";;AAEA,iCAA0C;AAC1C,8CAA8C;AAO9C,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,CAAC;AAE9B,SAAwB,QAAQ,CAAC,OAA4B,EAAE,KAAY;IACzE,MAAM,aAAa,GAAG,IAAA,cAAM,EAAa;QACvC,QAAQ,EAAE,IAAI;QACd,oBAAoB,EAAE,CAAC;KACxB,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAgB,CAAC;QACxG,aAAa,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAE1C,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,qBAAqB,MAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,qBAAqB,CAAA,EAAE;YACtE,aAAa,CAAC,OAAO,CAAC,oBAAoB,GAAG,QAAQ,CAAC,qBAAqB,CAAC,UAAU,CAAC;SACxF;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,IAAA,gBAAQ,EAAC,GAAG,EAAE;QACZ,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC;QAEjE,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,qBAAqB,CAAA;YAAE,OAAO;QAE7C,MAAM,oBAAoB,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;QAGnF,QAAQ,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,GAAG,GAAG,CAAC;IAC/G,CAAC,CAAC,CAAC;AACL,CAAC;AA1BD,2BA0BC"}
@@ -14,13 +14,12 @@ const FeedbackButtons_1 = tslib_1.__importDefault(require("../FeedbackButtons/Fe
14
14
  const react_i18next_1 = require("react-i18next");
15
15
  const marked_1 = require("marked");
16
16
  const dompurify_1 = tslib_1.__importDefault(require("dompurify"));
17
- const utils_1 = require("../../helpers/utils");
18
17
  const Button_1 = tslib_1.__importDefault(require("../ui/Button"));
19
18
  const QuestionHelp_1 = tslib_1.__importDefault(require("../icons/QuestionHelp"));
20
19
  const Copy_1 = tslib_1.__importDefault(require("../icons/Copy"));
21
20
  const Code_1 = tslib_1.__importDefault(require("../icons/Code"));
22
21
  const WhyThisAnswer_1 = tslib_1.__importDefault(require("../WhyThisAnswer/WhyThisAnswer"));
23
- const utils_2 = require("../../helpers/utils");
22
+ const utils_1 = require("../../helpers/utils");
24
23
  const marked_linkify_it_1 = tslib_1.__importDefault(require("marked-linkify-it"));
25
24
  const marked_katex_extension_1 = tslib_1.__importDefault(require("marked-katex-extension"));
26
25
  const markedExtendedTables_1 = tslib_1.__importDefault(require("../../helpers/markedExtendedTables"));
@@ -85,7 +84,7 @@ const ChatBubble = ({ message, memori, tenant, baseUrl, apiUrl, sessionID, showF
85
84
  const renderedText = message.fromUser ? text : renderMsg(text);
86
85
  const plainText = message.fromUser
87
86
  ? text
88
- : (0, utils_2.escapeHTML)((0, utils_2.stripMarkdown)((0, utils_2.stripEmojis)(text)));
87
+ : (0, utils_1.stripHTML)((0, utils_1.stripOutputTags)(renderedText));
89
88
  (0, react_1.useLayoutEffect)(() => {
90
89
  if (typeof window !== 'undefined' && !message.fromUser) {
91
90
  if ('MathJax' in window && window.MathJax.typesetPromise)