@memori.ai/memori-react 7.19.2 → 7.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +52 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.d.ts +3 -2
- package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js +13 -6
- package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +14 -18
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +19 -77
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +17 -2
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +95 -70
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.d.ts +65 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js +747 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js.map +1 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.d.ts +9 -2
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js +60 -2
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +3 -4
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +5 -11
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +13 -52
- package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +68 -70
- package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
- package/dist/components/Avatar/AvatarView/index.d.ts +1 -1
- package/dist/components/Avatar/AvatarView/index.js +2 -2
- package/dist/components/Avatar/AvatarView/index.js.map +1 -1
- package/dist/components/ChatBubble/ChatBubble.css +9 -0
- package/dist/components/ChatBubble/ChatBubble.js +7 -1
- package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
- package/dist/components/MemoriWidget/MemoriWidget.js +130 -62
- package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/dist/components/UploadButton/UploadButton.js +2 -2
- package/dist/components/UploadButton/UploadButton.js.map +1 -1
- package/dist/components/WhyThisAnswer/WhyThisAnswer.css +43 -0
- package/dist/components/WhyThisAnswer/WhyThisAnswer.js +2 -1
- package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
- package/dist/context/visemeContext.js +0 -39
- package/dist/context/visemeContext.js.map +1 -1
- package/dist/locales/de.json +1 -0
- package/dist/locales/en.json +1 -0
- package/dist/locales/es.json +1 -0
- package/dist/locales/fr.json +1 -0
- package/dist/locales/it.json +1 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.d.ts +3 -2
- package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js +13 -6
- package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +14 -18
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +20 -78
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +17 -2
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +99 -74
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.d.ts +65 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js +743 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js.map +1 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.d.ts +9 -2
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js +61 -3
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +3 -4
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +5 -11
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +13 -52
- package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +67 -69
- package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
- package/esm/components/Avatar/AvatarView/index.d.ts +1 -1
- package/esm/components/Avatar/AvatarView/index.js +2 -2
- package/esm/components/Avatar/AvatarView/index.js.map +1 -1
- package/esm/components/ChatBubble/ChatBubble.css +9 -0
- package/esm/components/ChatBubble/ChatBubble.js +7 -1
- package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
- package/esm/components/MemoriWidget/MemoriWidget.js +130 -62
- package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/esm/components/UploadButton/UploadButton.js +2 -2
- package/esm/components/UploadButton/UploadButton.js.map +1 -1
- package/esm/components/WhyThisAnswer/WhyThisAnswer.css +43 -0
- package/esm/components/WhyThisAnswer/WhyThisAnswer.js +2 -1
- package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
- package/esm/context/visemeContext.js +0 -39
- package/esm/context/visemeContext.js.map +1 -1
- package/esm/locales/de.json +1 -0
- package/esm/locales/en.json +1 -0
- package/esm/locales/es.json +1 -0
- package/esm/locales/fr.json +1 -0
- package/esm/locales/it.json +1 -0
- package/package.json +2 -2
- package/src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx +15 -8
- package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +64 -219
- package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +221 -124
- package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.ts +1250 -0
- package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.ts +164 -8
- package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +19 -17
- package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +80 -79
- package/src/components/Avatar/AvatarView/index.tsx +1 -7
- package/src/components/ChatBubble/ChatBubble.css +9 -0
- package/src/components/ChatBubble/ChatBubble.tsx +14 -2
- package/src/components/MemoriWidget/MemoriWidget.tsx +168 -76
- package/src/components/UploadButton/UploadButton.tsx +4 -4
- package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +1 -1
- package/src/components/WhyThisAnswer/WhyThisAnswer.css +43 -0
- package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +44 -3
- package/src/components/WhyThisAnswer/WhyThisAnswer.test.tsx +128 -8
- package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +28 -3
- package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +15 -1
- package/src/components/layouts/layouts.stories.tsx +0 -8
- package/src/context/visemeContext.tsx +40 -41
- package/src/index.stories.tsx +63 -65
- package/src/locales/de.json +1 -0
- package/src/locales/en.json +1 -0
- package/src/locales/es.json +1 -0
- package/src/locales/fr.json +1 -0
- package/src/locales/it.json +1 -0
- package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AnimationController.ts +0 -308
|
@@ -43,17 +43,6 @@ const timing = {
|
|
|
43
43
|
calculateWeight: (progress) => Math.sin(Math.PI * Math.min(progress, 1)) * exports.WEIGHT_MULTIPLIER,
|
|
44
44
|
smoothWeight: (currentWeight, targetWeight) => currentWeight + (targetWeight - currentWeight) * exports.SMOOTHING_FACTOR,
|
|
45
45
|
};
|
|
46
|
-
const createLogger = (type) => (event, data) => {
|
|
47
|
-
const styles = {
|
|
48
|
-
event: 'color: #4CAF50; font-weight: bold;',
|
|
49
|
-
error: 'color: #f44336; font-weight: bold;',
|
|
50
|
-
debug: 'color: #2196F3; font-weight: bold;',
|
|
51
|
-
};
|
|
52
|
-
console.log(`%c[VisemeContext] ${event}`, styles[type], data);
|
|
53
|
-
};
|
|
54
|
-
const logVisemeEvent = createLogger('event');
|
|
55
|
-
const logVisemeError = createLogger('error');
|
|
56
|
-
const logVisemeDebug = createLogger('debug');
|
|
57
46
|
const VisemeProvider = ({ children, }) => {
|
|
58
47
|
const visemeQueueRef = (0, react_1.useRef)([]);
|
|
59
48
|
const audioContextRef = (0, react_1.useRef)(null);
|
|
@@ -66,10 +55,6 @@ const VisemeProvider = ({ children, }) => {
|
|
|
66
55
|
const setAudioContext = (0, react_1.useCallback)((ctx) => {
|
|
67
56
|
audioContextRef.current = ctx;
|
|
68
57
|
ctx.onstatechange = () => {
|
|
69
|
-
logVisemeEvent('Audio Context State Change', {
|
|
70
|
-
state: ctx.state,
|
|
71
|
-
currentTime: ctx.currentTime,
|
|
72
|
-
});
|
|
73
58
|
switch (ctx.state) {
|
|
74
59
|
case 'running':
|
|
75
60
|
setVisemeState('active');
|
|
@@ -107,7 +92,6 @@ const VisemeProvider = ({ children, }) => {
|
|
|
107
92
|
}, [visemeState]);
|
|
108
93
|
const startProcessing = (0, react_1.useCallback)((audioCtx) => {
|
|
109
94
|
if (!audioCtx) {
|
|
110
|
-
logVisemeError('No audio context provided', { state: visemeState });
|
|
111
95
|
return;
|
|
112
96
|
}
|
|
113
97
|
audioContextRef.current = audioCtx;
|
|
@@ -115,11 +99,6 @@ const VisemeProvider = ({ children, }) => {
|
|
|
115
99
|
frameCountRef.current = 0;
|
|
116
100
|
setIsProcessing(true);
|
|
117
101
|
setVisemeState('active');
|
|
118
|
-
logVisemeEvent('Started Processing', {
|
|
119
|
-
audioTime: audioCtx.currentTime,
|
|
120
|
-
queueLength: visemeQueueRef.current.length,
|
|
121
|
-
state: visemeState,
|
|
122
|
-
});
|
|
123
102
|
}, []);
|
|
124
103
|
const stopProcessing = (0, react_1.useCallback)(() => {
|
|
125
104
|
setIsProcessing(false);
|
|
@@ -128,10 +107,6 @@ const VisemeProvider = ({ children, }) => {
|
|
|
128
107
|
lastVisemeRef.current = null;
|
|
129
108
|
frameCountRef.current = 0;
|
|
130
109
|
audioContextRef.current = null;
|
|
131
|
-
logVisemeEvent('Stopped Processing', {
|
|
132
|
-
queueLength: visemeQueueRef.current.length,
|
|
133
|
-
state: visemeState,
|
|
134
|
-
});
|
|
135
110
|
}, []);
|
|
136
111
|
const updateCurrentViseme = (0, react_1.useCallback)((_) => {
|
|
137
112
|
if (!isProcessing || !audioContextRef.current)
|
|
@@ -141,13 +116,6 @@ const VisemeProvider = ({ children, }) => {
|
|
|
141
116
|
exports.PRELOAD;
|
|
142
117
|
visemeQueueRef.current = visemeQueueRef.current.filter(v => !timing.isExpired(v, audioTime));
|
|
143
118
|
const currentViseme = visemeQueueRef.current.find(v => v.startTime <= audioTime && v.endTime > audioTime - exports.VISEME_OVERLAP);
|
|
144
|
-
if (frameCountRef.current % exports.LOG_INTERVAL === 60) {
|
|
145
|
-
logVisemeDebug('Current Viseme', {
|
|
146
|
-
currentViseme,
|
|
147
|
-
audioTime,
|
|
148
|
-
visemeQueue: visemeQueueRef.current,
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
119
|
if (currentViseme) {
|
|
152
120
|
const progress = (audioTime - currentViseme.startTime) /
|
|
153
121
|
(currentViseme.endTime - currentViseme.startTime);
|
|
@@ -176,15 +144,8 @@ const VisemeProvider = ({ children, }) => {
|
|
|
176
144
|
firstVisemeTimeRef.current = null;
|
|
177
145
|
frameCountRef.current = 0;
|
|
178
146
|
setVisemeState('idle');
|
|
179
|
-
logVisemeEvent('Reset Viseme Queue', {
|
|
180
|
-
previousState: visemeState,
|
|
181
|
-
});
|
|
182
147
|
}, [visemeState]);
|
|
183
148
|
const resetAndStartProcessing = (0, react_1.useCallback)((audioCtx) => {
|
|
184
|
-
logVisemeEvent('Reset And Start Processing', {
|
|
185
|
-
previousState: visemeState,
|
|
186
|
-
queueLength: visemeQueueRef.current.length,
|
|
187
|
-
});
|
|
188
149
|
stopProcessing();
|
|
189
150
|
resetVisemeQueue();
|
|
190
151
|
startProcessing(audioCtx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visemeContext.js","sourceRoot":"","sources":["../../src/context/visemeContext.tsx"],"names":[],"mappings":";;;;AAAA,iCAOe;AAqBf,MAAM,aAAa,GAAG,IAAA,qBAAa,EAAgC,SAAS,CAAC,CAAC;AAE9E,MAAM,UAAU,GAAwC;IACtD,CAAC,EAAE,YAAY;IACf,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,WAAW;IACd,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;CAChB,CAAC;AAGF,MAAM,SAAS,GAAG;IAKhB,uBAAuB,EAAE,IAAI;IAK7B,cAAc,EAAE,IAAI;IAMpB,gBAAgB,EAAE,GAAG;IAKrB,YAAY,EAAE,EAAE;IAKhB,OAAO,EAAE,GAAG;IAIZ,iBAAiB,EAAE,GAAG;CACd,CAAC;AAIT,+BAAuB,GAMrB,SAAS,0BALX,sBAAc,GAKZ,SAAS,iBAJX,wBAAgB,GAId,SAAS,mBAHX,oBAAY,GAGV,SAAS,eAFX,eAAO,GAEL,SAAS,UADX,yBAAiB,GACf,SAAS,mBAAC;AAGd,MAAM,MAAM,GAAG;IAEb,gBAAgB,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,SAAS,GAAG,+BAAuB;IAG5E,SAAS,EAAE,CAAC,MAAc,EAAE,WAAmB,EAAE,EAAE,CACjD,MAAM,CAAC,OAAO,GAAG,WAAW,GAAG,sBAAc;IAG/C,eAAe,EAAE,CAAC,QAAgB,EAAE,EAAE,CACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,yBAAiB;IAG/D,YAAY,EAAE,CAAC,aAAqB,EAAE,YAAoB,EAAE,EAAE,CAC5D,aAAa,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC,GAAG,wBAAgB;CACpE,CAAC;
|
|
1
|
+
{"version":3,"file":"visemeContext.js","sourceRoot":"","sources":["../../src/context/visemeContext.tsx"],"names":[],"mappings":"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"}
|
package/dist/locales/de.json
CHANGED
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"generatedByAI": "Von KI generierte Antworten können gelegentlich falsche Informationen generieren",
|
|
47
47
|
"whyThisAnswer": "Warum diese Antwort?",
|
|
48
48
|
"whyThisAnswerHelper": "Diese Antwort wurde automatisch von einer künstlichen Intelligenz auf Basis dieser verifizierten Inhalte generiert.",
|
|
49
|
+
"receiverLabel": "Zugewiesen an",
|
|
49
50
|
"completionsEnabled": "Fortschrittliche KI kann mit automatisch generierten Antworten reagieren, die manchmal falsche Informationen enthalten können",
|
|
50
51
|
"completionProviderDown": "Dieser Zwilling ist mit einer generativen KI von integriert {{provider}}, aber es ist derzeit nicht verfügbar. ",
|
|
51
52
|
"completionProviderFallbackName": "ein externer Anbieter",
|
package/dist/locales/en.json
CHANGED
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"generatedByAI": "Answer generated by AI, may occasionally generate incorrect informations",
|
|
47
47
|
"whyThisAnswer": "Why this answer?",
|
|
48
48
|
"whyThisAnswerHelper": "This answer was generated automatically by an artificial intelligence based on these verified contents.",
|
|
49
|
+
"receiverLabel": "Assigned to",
|
|
49
50
|
"completionsEnabled": "Advanced AI, can respond with automatically generated answers that may sometimes contain incorrect information",
|
|
50
51
|
"completionProviderDown": "This agent is integrated with a generative AI from {{provider}}, but it is currently unavailable. Try again later.",
|
|
51
52
|
"completionProviderFallbackName": "an external provider",
|
package/dist/locales/es.json
CHANGED
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"generatedByAI": "La respuesta generada por IA, ocasionalmente puede generar información incorrecta",
|
|
47
47
|
"whyThisAnswer": "¿Por qué esta respuesta?",
|
|
48
48
|
"whyThisAnswerHelper": "Esta respuesta fue generada automáticamente por una inteligencia artificial basada en estos contenidos verificados.",
|
|
49
|
+
"receiverLabel": "Asignado a",
|
|
49
50
|
"completionsEnabled": "La IA avanzada puede responder con respuestas generadas automáticamente que a veces pueden contener información incorrecta.",
|
|
50
51
|
"completionProviderDown": "Este Agent está integrado con una IA generativa de {{provider}}, pero actualmente no está disponible. ",
|
|
51
52
|
"completionProviderFallbackName": "un proveedor externo",
|
package/dist/locales/fr.json
CHANGED
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"generatedByAI": "Réponse générée par l'IA, peut occasionnellement générer des informations incorrectes",
|
|
47
47
|
"whyThisAnswer": "Pourquoi cette réponse ?",
|
|
48
48
|
"whyThisAnswerHelper": "Cette réponse a été générée automatiquement par une intelligence artificielle basée sur ces contenus vérifiés.",
|
|
49
|
+
"receiverLabel": "Assigné à",
|
|
49
50
|
"completionsEnabled": "L'IA avancée peut répondre avec des réponses générées automatiquement qui peuvent parfois contenir des informations incorrectes",
|
|
50
51
|
"completionProviderDown": "Ce Agent est intégré à une IA générative de {{provider}}, mais il est actuellement indisponible. ",
|
|
51
52
|
"completionProviderFallbackName": "un prestataire externe",
|
package/dist/locales/it.json
CHANGED
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"generatedByAI": "Risposta generata da IA, può talvolta generare informazioni non corrette",
|
|
47
47
|
"whyThisAnswer": "Perché questa risposta?",
|
|
48
48
|
"whyThisAnswerHelper": "Questa risposta è stata generata automaticamente da un'intelligenza artificiale sulla base di questi contenuti verificati.",
|
|
49
|
+
"receiverLabel": "Assegnato a",
|
|
49
50
|
"completionsEnabled": "IA evoluta, può rispondere con risposte generate automaticamente che talvolta potrebbero contenere informazioni non corrette",
|
|
50
51
|
"completionProviderDown": "Questo agente è integrato con una IA generativa di {{provider}}, ma al momento non è disponibile. Riprova più tardi.",
|
|
51
52
|
"completionProviderFallbackName": "un provider esterno",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { AvatarAnimator } from '../components/controllers/AvatarAnimator';
|
|
2
|
+
declare const DynamicShadow: ({ animator, avatarPosition, }: {
|
|
3
|
+
animator: AvatarAnimator | null;
|
|
3
4
|
avatarPosition: any;
|
|
4
5
|
}) => JSX.Element;
|
|
5
6
|
export default DynamicShadow;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ContactShadows } from '@react-three/drei';
|
|
3
|
-
const DynamicShadow = ({
|
|
3
|
+
const DynamicShadow = ({ animator, avatarPosition, }) => {
|
|
4
4
|
const getShadowProps = () => {
|
|
5
|
+
var _a, _b, _c, _d, _e;
|
|
5
6
|
const baseProps = {
|
|
6
7
|
width: 10,
|
|
7
8
|
height: 10,
|
|
@@ -11,7 +12,13 @@ const DynamicShadow = ({ currentBaseAction, avatarPosition, }) => {
|
|
|
11
12
|
resolution: 1024,
|
|
12
13
|
color: '#000000',
|
|
13
14
|
};
|
|
14
|
-
if (
|
|
15
|
+
if (!animator) {
|
|
16
|
+
return {
|
|
17
|
+
...baseProps,
|
|
18
|
+
opacity: 0,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if ((_a = animator.getCurrentAnimationName()) === null || _a === void 0 ? void 0 : _a.startsWith('Loading')) {
|
|
15
22
|
return {
|
|
16
23
|
...baseProps,
|
|
17
24
|
opacity: 0.85,
|
|
@@ -20,8 +27,8 @@ const DynamicShadow = ({ currentBaseAction, avatarPosition, }) => {
|
|
|
20
27
|
height: 12,
|
|
21
28
|
};
|
|
22
29
|
}
|
|
23
|
-
else if (
|
|
24
|
-
|
|
30
|
+
else if (((_b = animator.getCurrentAnimationName()) === null || _b === void 0 ? void 0 : _b.includes('Gioia')) ||
|
|
31
|
+
((_c = animator.getCurrentAnimationName()) === null || _c === void 0 ? void 0 : _c.includes('Joy'))) {
|
|
25
32
|
return {
|
|
26
33
|
...baseProps,
|
|
27
34
|
opacity: 0.9,
|
|
@@ -30,8 +37,8 @@ const DynamicShadow = ({ currentBaseAction, avatarPosition, }) => {
|
|
|
30
37
|
height: 11,
|
|
31
38
|
};
|
|
32
39
|
}
|
|
33
|
-
else if (
|
|
34
|
-
|
|
40
|
+
else if (((_d = animator.getCurrentAnimationName()) === null || _d === void 0 ? void 0 : _d.includes('Rabbia')) ||
|
|
41
|
+
((_e = animator.getCurrentAnimationName()) === null || _e === void 0 ? void 0 : _e.includes('Anger'))) {
|
|
35
42
|
return {
|
|
36
43
|
...baseProps,
|
|
37
44
|
opacity: 0.95,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicShadow.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"DynamicShadow.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAC;AAGtE,MAAM,aAAa,GAAG,CAAC,EACrB,QAAQ,EACR,cAAc,GAIf,EAAE,EAAE;IAEH,MAAM,cAAc,GAAG,GAAG,EAAE;;QAC1B,MAAM,SAAS,GAAG;YAChB,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,CAAC;YACN,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,SAAS;SACjB,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;gBACL,GAAG,SAAS;gBACZ,OAAO,EAAE,CAAC;aACX,CAAC;SACH;QAED,IAAI,MAAA,QAAQ,CAAC,uBAAuB,EAAE,0CAAE,UAAU,CAAC,SAAS,CAAC,EAAE;YAC7D,OAAO;gBACL,GAAG,SAAS;gBACZ,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;aACX,CAAC;SACH;aAAM,IACL,CAAA,MAAA,QAAQ,CAAC,uBAAuB,EAAE,0CAAE,QAAQ,CAAC,OAAO,CAAC;aACrD,MAAA,QAAQ,CAAC,uBAAuB,EAAE,0CAAE,QAAQ,CAAC,KAAK,CAAC,CAAA,EACnD;YACA,OAAO;gBACL,GAAG,SAAS;gBACZ,OAAO,EAAE,GAAG;gBACZ,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;aACX,CAAC;SACH;aAAM,IACL,CAAA,MAAA,QAAQ,CAAC,uBAAuB,EAAE,0CAAE,QAAQ,CAAC,QAAQ,CAAC;aACtD,MAAA,QAAQ,CAAC,uBAAuB,EAAE,0CAAE,QAAQ,CAAC,OAAO,CAAC,CAAA,EACrD;YACA,OAAO;gBACL,GAAG,SAAS;gBACZ,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;aACX,CAAC;SACH;QAGD,OAAO;YACL,GAAG,SAAS;YACZ,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,GAAG;SACV,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,CACL,8BAEE,KAAC,cAAc,IACb,OAAO,EAAE,WAAW,CAAC,OAAO,EAC5B,KAAK,EAAE,WAAW,CAAC,KAAK,EACxB,IAAI,EAAE,WAAW,CAAC,IAAI,EACtB,GAAG,EAAE,WAAW,CAAC,GAAG,EACpB,UAAU,EAAE,WAAW,CAAC,UAAU,EAClC,KAAK,EAAE,WAAW,CAAC,KAAK,EACxB,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAClC,EAGF,KAAC,cAAc,IACZ,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,CAAC,EACN,UAAU,EAAE,IAAI,EAChB,KAAK,EAAC,SAAS,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GACvB,IACD,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1,26 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
interface
|
|
3
|
-
|
|
4
|
-
animation?: string;
|
|
5
|
-
loading: boolean;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface AvatarViewProps {
|
|
3
|
+
chatEmission: string | null | undefined;
|
|
6
4
|
url: string;
|
|
7
5
|
sex: 'MALE' | 'FEMALE';
|
|
8
6
|
eyeBlink: boolean;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
avatarHeight?: number;
|
|
14
|
-
avatarDepth?: number;
|
|
15
|
-
stopProcessing: () => void;
|
|
16
|
-
resetVisemeQueue: () => void;
|
|
7
|
+
halfBody: boolean;
|
|
8
|
+
loading: boolean;
|
|
9
|
+
avatarHeight: number;
|
|
10
|
+
avatarDepth: number;
|
|
17
11
|
updateCurrentViseme: (currentTime: number) => {
|
|
18
12
|
name: string;
|
|
19
13
|
weight: number;
|
|
20
14
|
} | null;
|
|
21
|
-
setCameraZ: (
|
|
15
|
+
setCameraZ: (cameraZ: number) => void;
|
|
16
|
+
headMovement: boolean;
|
|
17
|
+
speaking: boolean;
|
|
18
|
+
showControls: boolean;
|
|
22
19
|
}
|
|
23
|
-
export declare const AvatarView:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
export {};
|
|
20
|
+
export declare const AvatarView: ({ chatEmission, url, sex, eyeBlink, halfBody, loading, avatarHeight, avatarDepth, updateCurrentViseme, setCameraZ, headMovement, showControls, }: AvatarViewProps) => JSX.Element;
|
|
21
|
+
declare const _default: import("react").MemoExoticComponent<({ chatEmission, url, sex, eyeBlink, halfBody, loading, avatarHeight, avatarDepth, updateCurrentViseme, setCameraZ, headMovement, showControls, }: AvatarViewProps) => JSX.Element>;
|
|
22
|
+
export default _default;
|
|
@@ -1,94 +1,36 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import AnimationControlPanel from './components/controls';
|
|
2
|
+
import { useRef, useEffect, useCallback, memo } from 'react';
|
|
4
3
|
import { FullbodyAvatar } from './components/FullbodyAvatar/fullbodyAvatar';
|
|
5
4
|
import HalfBodyAvatar from './components/halfbodyAvatar';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const [emotionMorphTargets, setEmotionMorphTargets] = useState({});
|
|
15
|
-
const [isRPM, setIsRPM] = useState(false);
|
|
16
|
-
const [timeScale, setTimeScale] = useState(0.8);
|
|
17
|
-
const emotionMap = {
|
|
18
|
-
Joy: { Joy: 1 },
|
|
19
|
-
Anger: { Anger: 1 },
|
|
20
|
-
Surprise: { Surprise: 1 },
|
|
21
|
-
Sadness: { Sadness: 1 },
|
|
22
|
-
Fear: { Fear: 1 },
|
|
23
|
-
};
|
|
24
|
-
const getDefaultEmotions = () => Object.keys(emotionMap).reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
|
|
25
|
-
const handleRPMBlendShape = useCallback((outputContent) => MAPPING_BLEND_SHAPE_TO_EMOTION_RPM[outputContent], []);
|
|
26
|
-
const handleCustomGLBBlendShape = useCallback((outputContent) => MAPPING_BLEND_SHAPE_TO_EMOTION_CUSTOM_GLB[outputContent], []);
|
|
27
|
-
const setEmotionMorphTargetInfluences = useCallback((action, outputContent) => {
|
|
28
|
-
if (action.startsWith('Loading'))
|
|
29
|
-
return;
|
|
30
|
-
const defaultEmotions = getDefaultEmotions();
|
|
31
|
-
if (outputContent === 'default') {
|
|
32
|
-
setEmotionMorphTargets(defaultEmotions);
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
if (isRPM) {
|
|
36
|
-
const emotion = handleRPMBlendShape(outputContent);
|
|
37
|
-
setEmotionMorphTargets(_ => ({ ...defaultEmotions, ...emotion }));
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
const emotion = handleCustomGLBBlendShape(outputContent);
|
|
41
|
-
const emotionValues = emotion === 'default' ? defaultEmotions : emotionMap[emotion];
|
|
42
|
-
setEmotionMorphTargets(_ => ({ ...defaultEmotions, ...emotionValues }));
|
|
5
|
+
const MemoizedFullbodyAvatar = memo(FullbodyAvatar);
|
|
6
|
+
const MemoizedHalfBodyAvatar = memo(HalfBodyAvatar);
|
|
7
|
+
export const AvatarView = ({ chatEmission, url, sex, eyeBlink, halfBody, loading, avatarHeight = 50, avatarDepth = -50, updateCurrentViseme, setCameraZ, headMovement, showControls, }) => {
|
|
8
|
+
const animatorRef = useRef(null);
|
|
9
|
+
const setAnimatorRef = useCallback((animator) => {
|
|
10
|
+
if (animator !== animatorRef.current) {
|
|
11
|
+
console.log('[AvatarView] Animator reference updated');
|
|
12
|
+
animatorRef.current = animator;
|
|
43
13
|
}
|
|
44
|
-
}, [isRPM, handleRPMBlendShape, handleCustomGLBBlendShape]);
|
|
45
|
-
const onBaseActionChange = useCallback((action, outputContent) => {
|
|
46
|
-
setEmotionMorphTargetInfluences(action, outputContent);
|
|
47
|
-
setCurrentBaseAction({ action, weight: 1 });
|
|
48
|
-
}, [setEmotionMorphTargetInfluences]);
|
|
49
|
-
const onMorphTargetInfluencesChange = useCallback((influences) => {
|
|
50
|
-
setMorphTargetInfluences(prev => ({ ...prev, ...influences }));
|
|
51
|
-
}, []);
|
|
52
|
-
const onMorphTargetDictionaryChange = useCallback((dictionary) => {
|
|
53
|
-
setMorphTargetDictionary(dictionary);
|
|
54
14
|
}, []);
|
|
55
15
|
useEffect(() => {
|
|
56
|
-
|
|
57
|
-
if (loading) {
|
|
58
|
-
const randomNumber = Math.floor(Math.random() * 3) + 1;
|
|
59
|
-
onBaseActionChange(`Loading${randomNumber}`, '');
|
|
16
|
+
if (!animatorRef.current)
|
|
60
17
|
return;
|
|
18
|
+
try {
|
|
19
|
+
animatorRef.current.processChatEmission(chatEmission, loading);
|
|
61
20
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
? (_b = (_a = chatEmission === null || chatEmission === void 0 ? void 0 : chatEmission.split('<output class="memori-emotion">')[1]) === null || _a === void 0 ? void 0 : _a.split('</output>')[0]) === null || _b === void 0 ? void 0 : _b.trim()
|
|
65
|
-
: null;
|
|
66
|
-
const hasOutputTagSequence = chatEmission === null || chatEmission === void 0 ? void 0 : chatEmission.includes('<output class="animation-sequence">');
|
|
67
|
-
const outputContentSequence = hasOutputTagSequence
|
|
68
|
-
? (_d = (_c = chatEmission === null || chatEmission === void 0 ? void 0 : chatEmission.split('<output class="animation-sequence">')[1]) === null || _c === void 0 ? void 0 : _c.split('</output>')[0]) === null || _d === void 0 ? void 0 : _d.trim()
|
|
69
|
-
: null;
|
|
70
|
-
if (outputContentSequence && outputContentSequence.includes('->')) {
|
|
71
|
-
onBaseActionChange(outputContentSequence, outputContentSequence);
|
|
72
|
-
}
|
|
73
|
-
else if (outputContentEmotion) {
|
|
74
|
-
console.log('[AvatarView] outputContentEmotion:', outputContentEmotion);
|
|
75
|
-
const randomNumber = Math.floor(Math.random() * 3) + 1;
|
|
76
|
-
onBaseActionChange(`${outputContentEmotion}${randomNumber}`, outputContentEmotion);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
const randomNumber = Math.floor(Math.random() * 5) + 1;
|
|
80
|
-
onBaseActionChange(`Idle${randomNumber === 3 ? 4 : randomNumber}`, '');
|
|
21
|
+
catch (error) {
|
|
22
|
+
console.error('Error processing chat emission:', error);
|
|
81
23
|
}
|
|
82
|
-
}, [
|
|
83
|
-
const commonAvatarProps = {
|
|
24
|
+
}, [loading, chatEmission]);
|
|
25
|
+
const commonAvatarProps = useCallback(() => ({
|
|
84
26
|
url,
|
|
85
27
|
onCameraZChange: setCameraZ,
|
|
86
|
-
setMorphTargetInfluences,
|
|
87
|
-
setMorphTargetDictionary,
|
|
88
28
|
updateCurrentViseme,
|
|
89
29
|
avatarHeight,
|
|
90
30
|
avatarDepth,
|
|
91
|
-
|
|
92
|
-
|
|
31
|
+
setAnimatorRef,
|
|
32
|
+
}), [url, setCameraZ, updateCurrentViseme, avatarHeight, avatarDepth, setAnimatorRef]);
|
|
33
|
+
return (_jsxs(_Fragment, { children: [halfBody ? (_jsx(MemoizedHalfBodyAvatar, { ...commonAvatarProps(), eyeBlink: eyeBlink, headMovement: headMovement })) : (_jsx(MemoizedFullbodyAvatar, { ...commonAvatarProps(), sex: sex, eyeBlink: eyeBlink, chatEmission: chatEmission, loading: loading })), showControls && animatorRef.current && (_jsx("div", { className: "animation-controls" }))] }));
|
|
93
34
|
};
|
|
35
|
+
export default memo(AvatarView);
|
|
94
36
|
//# sourceMappingURL=avatarComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatarComponent.js","sourceRoot":"","sources":["../../../../../src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"avatarComponent.js","sourceRoot":"","sources":["../../../../../src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,cAAc,MAAM,6BAA6B,CAAC;AAqBzD,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAGpD,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,YAAY,EACZ,GAAG,EACH,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,YAAY,GAAG,EAAE,EACjB,WAAW,GAAG,CAAC,EAAE,EACjB,mBAAmB,EACnB,UAAU,EACV,YAAY,EAEZ,YAAY,GACI,EAAE,EAAE;IAEpB,MAAM,WAAW,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAGxD,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,QAA+B,EAAE,EAAE;QACrE,IAAI,QAAQ,KAAK,WAAW,CAAC,OAAO,EAAE;YACpC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;SAChC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAIP,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,CAAC,OAAO;YAAE,OAAO;QAEjC,IAAI;YAEF,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;SAChE;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;SACzD;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAG5B,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,GAAG;QACH,eAAe,EAAE,UAAU;QAC3B,mBAAmB;QACnB,YAAY;QACZ,WAAW;QACX,cAAc;KACf,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAGvF,OAAO,CACL,8BACG,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,sBAAsB,OACjB,iBAAiB,EAAE,EACvB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,GAC1B,CACH,CAAC,CAAC,CAAC,CACF,KAAC,sBAAsB,OACjB,iBAAiB,EAAE,EACvB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,GAChB,CACH,EACA,YAAY,IAAI,WAAW,CAAC,OAAO,IAAI,CACtC,cAAK,SAAS,EAAC,oBAAoB,GAE7B,CACP,IACA,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC,UAAU,CAAC,CAAC"}
|
|
@@ -1,2 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
1
|
+
import { AvatarAnimator } from '../controllers/AvatarAnimator';
|
|
2
|
+
export interface FullbodyAvatarProps {
|
|
3
|
+
url: string;
|
|
4
|
+
sex: 'MALE' | 'FEMALE';
|
|
5
|
+
eyeBlink: boolean;
|
|
6
|
+
updateCurrentViseme: (currentTime: number) => {
|
|
7
|
+
name: string;
|
|
8
|
+
weight: number;
|
|
9
|
+
} | null;
|
|
10
|
+
avatarHeight?: number;
|
|
11
|
+
avatarDepth?: number;
|
|
12
|
+
onCameraZChange?: (value: number) => void;
|
|
13
|
+
chatEmission: any;
|
|
14
|
+
loading: boolean;
|
|
15
|
+
setAnimatorRef?: (animator: AvatarAnimator | null) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function FullbodyAvatar({ url, sex, eyeBlink, updateCurrentViseme, avatarHeight, avatarDepth, onCameraZChange, chatEmission, loading, setAnimatorRef, }: FullbodyAvatarProps): JSX.Element;
|