@memori.ai/memori-react 2.10.1 → 2.11.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
 
2
2
 
3
+ ## [2.11.0](https://github.com/memori-ai/memori-react/compare/v2.10.2...v2.11.0) (2023-08-14)
4
+
5
+
6
+ ### Features
7
+
8
+ * add active session css class ([f161d23](https://github.com/memori-ai/memori-react/commit/f161d23155f509e1243adf1528b1376e1822836f))
9
+
10
+
11
+ ### Changes
12
+
13
+ * mic button larger on any layout ([baff50e](https://github.com/memori-ai/memori-react/commit/baff50edfb3cca372907052d3520a478af6378a1))
14
+
15
+ ## [2.10.2](https://github.com/memori-ai/memori-react/compare/v2.10.1...v2.10.2) (2023-08-14)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * speech async handling, avoids double voice ([ee6e45a](https://github.com/memori-ai/memori-react/commit/ee6e45a98a948a4cc5055b84243353e0b865d2b4))
21
+
22
+
23
+ ### Maintenance
24
+
25
+ * restore new session mark ([883567d](https://github.com/memori-ai/memori-react/commit/883567d4ce1f2bbcea0b435c6f0788f3a742c37d))
26
+
3
27
  ## [2.10.1](https://github.com/memori-ai/memori-react/compare/v2.10.0...v2.10.1) (2023-08-10)
4
28
 
5
29
 
@@ -12,42 +12,42 @@ const FeedbackButtons_1 = tslib_1.__importDefault(require("../FeedbackButtons/Fe
12
12
  const react_i18next_1 = require("react-i18next");
13
13
  const ChatBubble = ({ message, memori, tenant, baseUrl, apiUrl, showFeedback, simulateUserPrompt, showAIicon = true, }) => {
14
14
  const { t } = (0, react_i18next_1.useTranslation)();
15
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(react_1.Transition, { show: true, appear: true, as: "div", className: (0, classnames_1.default)('memori-chat--bubble-container', {
16
- 'memori-chat--bubble-from-user': !!message.fromUser,
17
- 'memori-chat--with-addon': (message.generatedByAI && showAIicon) ||
18
- (showFeedback && simulateUserPrompt),
19
- }), children: [!message.fromUser && ((0, jsx_runtime_1.jsxs)(react_1.Transition.Child, { as: "picture", className: "memori-chat--bubble-avatar", enter: "transition ease-in-out duration-300", enterFrom: `opacity-0 scale-075 ${message.fromUser ? 'translate-x-15' : 'translate-x--15'}`, enterTo: "opacity-1 scale-1 translate-x-0", leave: "transition ease-in-out duration-300", leaveFrom: "opacity-1 scale-1 translate-x-0", leaveTo: `opacity-0 scale-075 ${message.fromUser ? 'translate-x-15' : 'translate-x--15'}`, children: [(0, jsx_runtime_1.jsx)("source", { src: (0, media_1.getResourceUrl)({
20
- type: 'avatar',
21
- tenantID: tenant === null || tenant === void 0 ? void 0 : tenant.id,
22
- resourceURI: memori.avatarURL,
23
- baseURL: baseUrl,
24
- apiURL: apiUrl,
25
- }) }), (0, jsx_runtime_1.jsx)("img", { className: "memori-chat--bubble-avatar-img", alt: memori.name, src: memori.avatarURL && memori.avatarURL.length > 0
26
- ? (0, media_1.getResourceUrl)({
15
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [message.initial && (0, jsx_runtime_1.jsx)("div", { className: "memori-chat--bubble-initial" }), (0, jsx_runtime_1.jsxs)(react_1.Transition, { show: true, appear: true, as: "div", className: (0, classnames_1.default)('memori-chat--bubble-container', {
16
+ 'memori-chat--bubble-from-user': !!message.fromUser,
17
+ 'memori-chat--with-addon': (message.generatedByAI && showAIicon) ||
18
+ (showFeedback && simulateUserPrompt),
19
+ }), children: [!message.fromUser && ((0, jsx_runtime_1.jsxs)(react_1.Transition.Child, { as: "picture", className: "memori-chat--bubble-avatar", enter: "transition ease-in-out duration-300", enterFrom: `opacity-0 scale-075 ${message.fromUser ? 'translate-x-15' : 'translate-x--15'}`, enterTo: "opacity-1 scale-1 translate-x-0", leave: "transition ease-in-out duration-300", leaveFrom: "opacity-1 scale-1 translate-x-0", leaveTo: `opacity-0 scale-075 ${message.fromUser ? 'translate-x-15' : 'translate-x--15'}`, children: [(0, jsx_runtime_1.jsx)("source", { src: (0, media_1.getResourceUrl)({
27
20
  type: 'avatar',
28
21
  tenantID: tenant === null || tenant === void 0 ? void 0 : tenant.id,
29
22
  resourceURI: memori.avatarURL,
30
23
  baseURL: baseUrl,
31
24
  apiURL: apiUrl,
32
- })
33
- : (0, media_1.getResourceUrl)({
34
- tenantID: tenant === null || tenant === void 0 ? void 0 : tenant.id,
35
- type: 'avatar',
36
- baseURL: baseUrl || 'https://app.twincreator.com',
37
- apiURL: apiUrl,
38
- }) })] })), (0, jsx_runtime_1.jsxs)(react_1.Transition.Child, { as: "div", className: (0, classnames_1.default)('memori-chat--bubble', {
39
- 'memori-chat--user-bubble': !!message.fromUser,
40
- 'memori-chat--with-addon': (message.generatedByAI && showAIicon) ||
41
- (showFeedback && simulateUserPrompt),
42
- 'memori-chat--ai-generated': message.generatedByAI && showAIicon,
43
- 'memori-chat--with-feedback': showFeedback,
44
- }), enter: "transition ease-in-out duration-300", enterFrom: `opacity-0 scale-09 translate-x-${message.fromUser ? '30' : '-30'}`, enterTo: "opacity-1 scale-1 translate-x-0", leave: "transition ease-in-out duration-300", leaveFrom: "opacity-1 scale-1 translate-x-0", leaveTo: `opacity-0 scale-09 translate-x-${message.fromUser ? '30' : '-30'}`, children: [(message.translatedText || message.text)
45
- .split(/\r\n|\r|\n/)
46
- .map((row, index) => ((0, jsx_runtime_1.jsx)("p", { children: row }, index))), ((message.generatedByAI && showAIicon) ||
47
- (showFeedback && simulateUserPrompt)) && ((0, jsx_runtime_1.jsxs)("div", { className: "memori-chat--bubble-addon", children: [showFeedback && !!simulateUserPrompt && ((0, jsx_runtime_1.jsx)(FeedbackButtons_1.default, { memori: memori, className: "memori-chat--bubble-feedback", dropdown: true, onNegativeClick: msg => {
48
- if (msg)
49
- simulateUserPrompt(msg);
50
- } })), message.generatedByAI && showAIicon && ((0, jsx_runtime_1.jsx)(Tooltip_1.default, { align: "left", content: t('generatedByAI'), className: "memori-chat--bubble-ai-icon", children: (0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(AI_1.default, { title: t('generatedByAI') || undefined }) }) }))] }))] }), message.fromUser && ((0, jsx_runtime_1.jsx)(react_1.Transition.Child, { as: "div", className: "memori-chat--bubble-avatar", enter: "transition ease-in-out duration-300", enterFrom: `opacity-0 scale-075 ${message.fromUser ? 'translate-x-15' : 'translate-x--15'}`, enterTo: "opacity-1 scale-1 translate-x-0", leave: "transition ease-in-out duration-300", leaveFrom: "opacity-1 scale-1 translate-x-0", leaveTo: `opacity-0 scale-075 ${message.fromUser ? 'translate-x-15' : 'translate-x--15'}`, children: (0, jsx_runtime_1.jsx)(User_1.default, {}) }))] }) }));
25
+ }) }), (0, jsx_runtime_1.jsx)("img", { className: "memori-chat--bubble-avatar-img", alt: memori.name, src: memori.avatarURL && memori.avatarURL.length > 0
26
+ ? (0, media_1.getResourceUrl)({
27
+ type: 'avatar',
28
+ tenantID: tenant === null || tenant === void 0 ? void 0 : tenant.id,
29
+ resourceURI: memori.avatarURL,
30
+ baseURL: baseUrl,
31
+ apiURL: apiUrl,
32
+ })
33
+ : (0, media_1.getResourceUrl)({
34
+ tenantID: tenant === null || tenant === void 0 ? void 0 : tenant.id,
35
+ type: 'avatar',
36
+ baseURL: baseUrl || 'https://app.twincreator.com',
37
+ apiURL: apiUrl,
38
+ }) })] })), (0, jsx_runtime_1.jsxs)(react_1.Transition.Child, { as: "div", className: (0, classnames_1.default)('memori-chat--bubble', {
39
+ 'memori-chat--user-bubble': !!message.fromUser,
40
+ 'memori-chat--with-addon': (message.generatedByAI && showAIicon) ||
41
+ (showFeedback && simulateUserPrompt),
42
+ 'memori-chat--ai-generated': message.generatedByAI && showAIicon,
43
+ 'memori-chat--with-feedback': showFeedback,
44
+ }), enter: "transition ease-in-out duration-300", enterFrom: `opacity-0 scale-09 translate-x-${message.fromUser ? '30' : '-30'}`, enterTo: "opacity-1 scale-1 translate-x-0", leave: "transition ease-in-out duration-300", leaveFrom: "opacity-1 scale-1 translate-x-0", leaveTo: `opacity-0 scale-09 translate-x-${message.fromUser ? '30' : '-30'}`, children: [(message.translatedText || message.text)
45
+ .split(/\r\n|\r|\n/)
46
+ .map((row, index) => ((0, jsx_runtime_1.jsx)("p", { children: row }, index))), ((message.generatedByAI && showAIicon) ||
47
+ (showFeedback && simulateUserPrompt)) && ((0, jsx_runtime_1.jsxs)("div", { className: "memori-chat--bubble-addon", children: [showFeedback && !!simulateUserPrompt && ((0, jsx_runtime_1.jsx)(FeedbackButtons_1.default, { memori: memori, className: "memori-chat--bubble-feedback", dropdown: true, onNegativeClick: msg => {
48
+ if (msg)
49
+ simulateUserPrompt(msg);
50
+ } })), message.generatedByAI && showAIicon && ((0, jsx_runtime_1.jsx)(Tooltip_1.default, { align: "left", content: t('generatedByAI'), className: "memori-chat--bubble-ai-icon", children: (0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(AI_1.default, { title: t('generatedByAI') || undefined }) }) }))] }))] }), message.fromUser && ((0, jsx_runtime_1.jsx)(react_1.Transition.Child, { as: "div", className: "memori-chat--bubble-avatar", enter: "transition ease-in-out duration-300", enterFrom: `opacity-0 scale-075 ${message.fromUser ? 'translate-x-15' : 'translate-x--15'}`, enterTo: "opacity-1 scale-1 translate-x-0", leave: "transition ease-in-out duration-300", leaveFrom: "opacity-1 scale-1 translate-x-0", leaveTo: `opacity-0 scale-075 ${message.fromUser ? 'translate-x-15' : 'translate-x--15'}`, children: (0, jsx_runtime_1.jsx)(User_1.default, {}) }))] })] }));
51
51
  };
52
52
  exports.default = ChatBubble;
53
53
  //# sourceMappingURL=ChatBubble.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatBubble.js","sourceRoot":"","sources":["../../../src/components/ChatBubble/ChatBubble.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatBubble.js","sourceRoot":"","sources":["../../../src/components/ChatBubble/ChatBubble.tsx"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  margin: 0;
12
12
  }
13
13
 
14
- .memori-chat-inputs .memori-upload-menu + .memori-send-on-enter-menu {
14
+ .memori-chat-inputs .memori-upload-menu+.memori-send-on-enter-menu {
15
15
  margin-left: 0.33rem;
16
16
  }
17
17
 
@@ -19,3 +19,7 @@
19
19
  background: #fff;
20
20
  color: #000;
21
21
  }
22
+
23
+ .memori-chat-inputs--mic {
24
+ font-size: 125%;
25
+ }
@@ -80,14 +80,15 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integra
80
80
  const [instruct, setInstruct] = (0, react_1.useState)(false);
81
81
  const [clickedStart, setClickedStart] = (0, react_1.useState)(false);
82
82
  const [gotErrorInOpening, setGotErrorInOpening] = (0, react_1.useState)(false);
83
- const language = (_d = (_c = (_b = (_a = memoriConfigs === null || memoriConfigs === void 0 ? void 0 : memoriConfigs.find(c => c.memoriConfigID === memori.memoriConfigurationID)) === null || _a === void 0 ? void 0 : _a.culture) === null || _b === void 0 ? void 0 : _b.split('-')) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.toUpperCase();
83
+ const language = ((_c = (_b = (_a = memori.culture) === null || _a === void 0 ? void 0 : _a.split('-')) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.toUpperCase()) ||
84
+ ((_h = (_g = (_f = (_d = memoriConfigs === null || memoriConfigs === void 0 ? void 0 : memoriConfigs.find(c => c.memoriConfigID === memori.memoriConfigurationID)) === null || _d === void 0 ? void 0 : _d.culture) === null || _f === void 0 ? void 0 : _f.split('-')) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.toUpperCase());
84
85
  const integrationConfig = (integration === null || integration === void 0 ? void 0 : integration.customData)
85
86
  ? JSON.parse(integration.customData)
86
87
  : null;
87
88
  const isMultilanguageEnabled = multilingual !== undefined
88
89
  ? multilingual
89
90
  : !!(integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.multilanguage);
90
- const [userLang, setUserLang] = (0, react_1.useState)((_m = (_l = (_k = (_j = (_f = memoriLang !== null && memoriLang !== void 0 ? memoriLang : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.lang) !== null && _f !== void 0 ? _f : (_h = (_g = memori === null || memori === void 0 ? void 0 : memori.culture) === null || _g === void 0 ? void 0 : _g.split('-')) === null || _h === void 0 ? void 0 : _h[0]) !== null && _j !== void 0 ? _j : language) !== null && _k !== void 0 ? _k : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.uiLang) !== null && _l !== void 0 ? _l : i18n.language) !== null && _m !== void 0 ? _m : 'IT');
91
+ const [userLang, setUserLang] = (0, react_1.useState)((_m = (_l = (_k = (_j = memoriLang !== null && memoriLang !== void 0 ? memoriLang : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.lang) !== null && _j !== void 0 ? _j : language) !== null && _k !== void 0 ? _k : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.uiLang) !== null && _l !== void 0 ? _l : i18n.language) !== null && _m !== void 0 ? _m : 'IT');
91
92
  const [loading, setLoading] = (0, react_1.useState)(false);
92
93
  const [memoriTyping, setMemoriTyping] = (0, react_1.useState)(false);
93
94
  const selectedLayout = layout || (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.layout) || 'DEFAULT';
@@ -150,6 +151,203 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integra
150
151
  _setPosition(venue);
151
152
  applyPosition(venue);
152
153
  };
154
+ const [userMessage, setUserMessage] = (0, react_1.useState)('');
155
+ const onChangeUserMessage = (value) => {
156
+ if (!value || value === '\n' || value.trim() === '') {
157
+ setUserMessage('');
158
+ resetInteractionTimeout();
159
+ return;
160
+ }
161
+ setUserMessage(value);
162
+ clearInteractionTimeout();
163
+ };
164
+ const [listening, setListening] = (0, react_1.useState)(false);
165
+ const [history, setHistory] = (0, react_1.useState)([]);
166
+ const pushMessage = (message) => {
167
+ setHistory(history => [...history, { ...message }]);
168
+ };
169
+ const sendMessage = async (text, media, newSessionId, translate = true, translatedText, hidden = false) => {
170
+ var _a, _b;
171
+ const sessionID = newSessionId ||
172
+ sessionId ||
173
+ ((_a = window.getMemoriState()) === null || _a === void 0 ? void 0 : _a.sessionID);
174
+ if (!sessionID || !(text === null || text === void 0 ? void 0 : text.length))
175
+ return;
176
+ if (!hidden)
177
+ pushMessage({
178
+ text: text,
179
+ translatedText,
180
+ fromUser: true,
181
+ media: media !== null && media !== void 0 ? media : [],
182
+ initial: sessionId
183
+ ? !!newSessionId && newSessionId !== sessionId
184
+ : !!newSessionId,
185
+ });
186
+ setMemoriTyping(true);
187
+ let msg = text;
188
+ if (translate &&
189
+ !instruct &&
190
+ isMultilanguageEnabled &&
191
+ userLang.toUpperCase() !== language.toUpperCase()) {
192
+ const translation = await (0, translations_1.getTranslation)(text, language, userLang, baseUrl);
193
+ msg = translation.text;
194
+ }
195
+ const { currentState, ...response } = await postTextEnteredEvent({
196
+ sessionId: sessionID,
197
+ text: msg,
198
+ });
199
+ if (response.resultCode === 0 && currentState) {
200
+ const emission = (_b = currentState.emission) !== null && _b !== void 0 ? _b : currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission;
201
+ if (currentState.state === 'X4' && memori.giverTag) {
202
+ const { currentState, ...resp } = await postTagChangedEvent(sessionID, memori.giverTag);
203
+ if (resp.resultCode === 0) {
204
+ setCurrentDialogState(currentState);
205
+ if (currentState.emission) {
206
+ pushMessage({
207
+ text: currentState.emission,
208
+ media: currentState.media,
209
+ fromUser: false,
210
+ });
211
+ speak(currentState.emission);
212
+ }
213
+ }
214
+ else {
215
+ console.error(response, resp);
216
+ Message_1.default.error(t((0, error_1.getErrori18nKey)(resp.resultCode)));
217
+ }
218
+ }
219
+ else if (currentState.state === 'X2d' && memori.giverTag) {
220
+ const { currentState, ...resp } = await postTextEnteredEvent({
221
+ sessionId: sessionID,
222
+ text: Math.random().toString().substring(2, 8),
223
+ });
224
+ if (resp.resultCode === 0) {
225
+ const { currentState, ...resp } = await postTagChangedEvent(sessionID, memori.giverTag);
226
+ if (resp.resultCode === 0) {
227
+ setCurrentDialogState(currentState);
228
+ if (currentState.emission) {
229
+ pushMessage({
230
+ text: currentState.emission,
231
+ media: currentState.media,
232
+ fromUser: false,
233
+ });
234
+ speak(currentState.emission);
235
+ }
236
+ }
237
+ else {
238
+ console.error(response, resp);
239
+ Message_1.default.error(t((0, error_1.getErrori18nKey)(resp.resultCode)));
240
+ }
241
+ }
242
+ else {
243
+ console.error(response, resp);
244
+ Message_1.default.error(t((0, error_1.getErrori18nKey)(resp.resultCode)));
245
+ }
246
+ }
247
+ else if (userLang.toLowerCase() !== language.toLowerCase() &&
248
+ emission &&
249
+ !instruct &&
250
+ isMultilanguageEnabled) {
251
+ translateDialogState(currentState, userLang).then(ts => {
252
+ if (ts.emission) {
253
+ speak(ts.emission);
254
+ }
255
+ });
256
+ }
257
+ else {
258
+ setCurrentDialogState({
259
+ ...currentState,
260
+ emission,
261
+ });
262
+ if (emission) {
263
+ pushMessage({
264
+ text: emission,
265
+ media: currentState.media,
266
+ fromUser: false,
267
+ generatedByAI: !!currentState.completion,
268
+ });
269
+ speak(emission);
270
+ }
271
+ }
272
+ }
273
+ else if (response.resultCode === 404) {
274
+ setHistory(h => [...h.slice(0, h.length - 1)]);
275
+ reopenSession(false, memoriPwd || memori.secretToken, memoriTokens, instruct && memori.giverTag ? memori.giverTag : undefined, instruct && memori.giverPIN ? memori.giverPIN : undefined, initialContextVars, initialQuestion).then(state => {
276
+ console.info('session timeout');
277
+ if (state === null || state === void 0 ? void 0 : state.sessionID) {
278
+ setTimeout(() => {
279
+ sendMessage(text, media, state === null || state === void 0 ? void 0 : state.sessionID);
280
+ }, 500);
281
+ }
282
+ });
283
+ }
284
+ setMemoriTyping(false);
285
+ };
286
+ const translateDialogState = async (state, userLang) => {
287
+ var _a, _b, _c;
288
+ const emission = (_a = state.emission) !== null && _a !== void 0 ? _a : currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission;
289
+ let translatedState = { ...state };
290
+ let translatedMsg = null;
291
+ if (!emission ||
292
+ instruct ||
293
+ language.toUpperCase() === userLang.toUpperCase() ||
294
+ !isMultilanguageEnabled) {
295
+ translatedState = { ...state, emission };
296
+ if (emission) {
297
+ translatedMsg = {
298
+ text: emission,
299
+ media: state.media,
300
+ fromUser: false,
301
+ };
302
+ }
303
+ }
304
+ else {
305
+ const t = await (0, translations_1.getTranslation)(emission, userLang, language, baseUrl);
306
+ if (state.hints && state.hints.length > 0) {
307
+ const translatedHints = await Promise.all(((_b = state.hints) !== null && _b !== void 0 ? _b : []).map(async (hint) => {
308
+ var _a;
309
+ const tHint = await (0, translations_1.getTranslation)(hint, userLang, language, baseUrl);
310
+ return {
311
+ text: (_a = tHint === null || tHint === void 0 ? void 0 : tHint.text) !== null && _a !== void 0 ? _a : hint,
312
+ originalText: hint,
313
+ };
314
+ }));
315
+ translatedState = {
316
+ ...state,
317
+ emission: t.text,
318
+ translatedHints,
319
+ };
320
+ }
321
+ else {
322
+ translatedState = {
323
+ ...state,
324
+ emission: t.text,
325
+ hints: (_c = state.hints) !== null && _c !== void 0 ? _c : (state.state === 'G1' ? currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.hints : []),
326
+ };
327
+ }
328
+ if (t.text.length > 0)
329
+ translatedMsg = {
330
+ text: t.text,
331
+ media: state.media,
332
+ fromUser: false,
333
+ generatedByAI: !!state.completion,
334
+ };
335
+ }
336
+ setCurrentDialogState(translatedState);
337
+ if (translatedMsg) {
338
+ pushMessage(translatedMsg);
339
+ }
340
+ return translatedState;
341
+ };
342
+ const minAge = memori.ageRestriction
343
+ ? memori.ageRestriction
344
+ : memori.nsfw
345
+ ? 18
346
+ : memori.enableCompletions
347
+ ? 14
348
+ : 0;
349
+ const [birthDate, setBirthDate] = (0, react_1.useState)();
350
+ const [showAgeVerification, setShowAgeVerification] = (0, react_1.useState)(false);
153
351
  const [sessionId, setSessionId] = (0, react_1.useState)(initialSessionID);
154
352
  const [currentDialogState, _setCurrentDialogState] = (0, react_1.useState)();
155
353
  const setCurrentDialogState = (state) => {
@@ -398,201 +596,6 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integra
398
596
  restoreGiverTag();
399
597
  };
400
598
  }, []);
401
- const [userMessage, setUserMessage] = (0, react_1.useState)('');
402
- const onChangeUserMessage = (value) => {
403
- if (!value || value === '\n' || value.trim() === '') {
404
- setUserMessage('');
405
- resetInteractionTimeout();
406
- return;
407
- }
408
- setUserMessage(value);
409
- clearInteractionTimeout();
410
- };
411
- const [listening, setListening] = (0, react_1.useState)(false);
412
- const [history, setHistory] = (0, react_1.useState)([]);
413
- const pushMessage = (message) => {
414
- setHistory(history => [...history, { ...message }]);
415
- };
416
- const sendMessage = (0, react_1.useCallback)(async (text, media, newSessionId, translate = true, translatedText, hidden = false) => {
417
- var _a, _b, _c, _d, _f;
418
- const sessionID = newSessionId || sessionId;
419
- if (!sessionID || !(text === null || text === void 0 ? void 0 : text.length))
420
- return;
421
- if (!hidden)
422
- pushMessage({
423
- text: text,
424
- translatedText,
425
- fromUser: true,
426
- media: media !== null && media !== void 0 ? media : [],
427
- initial: !!newSessionId,
428
- });
429
- setMemoriTyping(true);
430
- const language = (_d = (_c = (_b = (_a = memori.culture) === null || _a === void 0 ? void 0 : _a.split('-')) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : i18n.language) !== null && _d !== void 0 ? _d : 'IT';
431
- let msg = text;
432
- if (translate &&
433
- !instruct &&
434
- isMultilanguageEnabled &&
435
- userLang.toUpperCase() !== language.toUpperCase()) {
436
- const translation = await (0, translations_1.getTranslation)(text, language, userLang, baseUrl);
437
- msg = translation.text;
438
- }
439
- const { currentState, ...response } = await postTextEnteredEvent({
440
- sessionId: sessionID,
441
- text: msg,
442
- });
443
- if (response.resultCode === 0 && currentState) {
444
- const emission = (_f = currentState.emission) !== null && _f !== void 0 ? _f : currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission;
445
- if (currentState.state === 'X4' && memori.giverTag) {
446
- const { currentState, ...resp } = await postTagChangedEvent(sessionID, memori.giverTag);
447
- if (resp.resultCode === 0) {
448
- setCurrentDialogState(currentState);
449
- if (currentState.emission) {
450
- pushMessage({
451
- text: currentState.emission,
452
- media: currentState.media,
453
- fromUser: false,
454
- });
455
- speak(currentState.emission);
456
- }
457
- }
458
- else {
459
- console.error(response, resp);
460
- Message_1.default.error(t((0, error_1.getErrori18nKey)(resp.resultCode)));
461
- }
462
- }
463
- else if (currentState.state === 'X2d' && memori.giverTag) {
464
- const { currentState, ...resp } = await postTextEnteredEvent({
465
- sessionId: sessionID,
466
- text: Math.random().toString().substring(2, 8),
467
- });
468
- if (resp.resultCode === 0) {
469
- const { currentState, ...resp } = await postTagChangedEvent(sessionID, memori.giverTag);
470
- if (resp.resultCode === 0) {
471
- setCurrentDialogState(currentState);
472
- if (currentState.emission) {
473
- pushMessage({
474
- text: currentState.emission,
475
- media: currentState.media,
476
- fromUser: false,
477
- });
478
- speak(currentState.emission);
479
- }
480
- }
481
- else {
482
- console.error(response, resp);
483
- Message_1.default.error(t((0, error_1.getErrori18nKey)(resp.resultCode)));
484
- }
485
- }
486
- else {
487
- console.error(response, resp);
488
- Message_1.default.error(t((0, error_1.getErrori18nKey)(resp.resultCode)));
489
- }
490
- }
491
- else if (userLang.toLowerCase() !== language.toLowerCase() &&
492
- emission &&
493
- !instruct &&
494
- isMultilanguageEnabled) {
495
- translateDialogState(currentState, userLang).then(ts => {
496
- if (ts.emission) {
497
- speak(ts.emission);
498
- }
499
- });
500
- }
501
- else {
502
- setCurrentDialogState({
503
- ...currentState,
504
- emission,
505
- });
506
- if (emission) {
507
- pushMessage({
508
- text: emission,
509
- media: currentState.media,
510
- fromUser: false,
511
- generatedByAI: !!currentState.completion,
512
- });
513
- speak(emission);
514
- }
515
- }
516
- }
517
- else if (response.resultCode === 404) {
518
- setHistory(h => [...h.slice(0, h.length - 1)]);
519
- reopenSession(false, memoriPwd || memori.secretToken, memoriTokens, instruct && memori.giverTag ? memori.giverTag : undefined, instruct && memori.giverPIN ? memori.giverPIN : undefined, initialContextVars, initialQuestion).then(state => {
520
- console.info('session timeout');
521
- if (state === null || state === void 0 ? void 0 : state.sessionID) {
522
- setTimeout(() => {
523
- sendMessage(text, media, state === null || state === void 0 ? void 0 : state.sessionID);
524
- }, 500);
525
- }
526
- });
527
- }
528
- setMemoriTyping(false);
529
- }, [sessionId]);
530
- const translateDialogState = async (state, userLang) => {
531
- var _a, _b, _c, _d, _f, _g, _h;
532
- const language = (_d = (_c = (_b = (_a = memori.culture) === null || _a === void 0 ? void 0 : _a.split('-')) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : i18n.language) !== null && _d !== void 0 ? _d : 'IT';
533
- const emission = (_f = state.emission) !== null && _f !== void 0 ? _f : currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission;
534
- let translatedState = { ...state };
535
- let translatedMsg = null;
536
- if (!emission ||
537
- instruct ||
538
- language.toUpperCase() === userLang.toUpperCase() ||
539
- !isMultilanguageEnabled) {
540
- translatedState = { ...state, emission };
541
- if (emission) {
542
- translatedMsg = {
543
- text: emission,
544
- media: state.media,
545
- fromUser: false,
546
- };
547
- }
548
- }
549
- else {
550
- const t = await (0, translations_1.getTranslation)(emission, userLang, language, baseUrl);
551
- if (state.hints && state.hints.length > 0) {
552
- const translatedHints = await Promise.all(((_g = state.hints) !== null && _g !== void 0 ? _g : []).map(async (hint) => {
553
- var _a;
554
- const tHint = await (0, translations_1.getTranslation)(hint, userLang, language, baseUrl);
555
- return {
556
- text: (_a = tHint === null || tHint === void 0 ? void 0 : tHint.text) !== null && _a !== void 0 ? _a : hint,
557
- originalText: hint,
558
- };
559
- }));
560
- translatedState = {
561
- ...state,
562
- emission: t.text,
563
- translatedHints,
564
- };
565
- }
566
- else {
567
- translatedState = {
568
- ...state,
569
- emission: t.text,
570
- hints: (_h = state.hints) !== null && _h !== void 0 ? _h : (state.state === 'G1' ? currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.hints : []),
571
- };
572
- }
573
- if (t.text.length > 0)
574
- translatedMsg = {
575
- text: t.text,
576
- media: state.media,
577
- fromUser: false,
578
- generatedByAI: !!state.completion,
579
- };
580
- }
581
- setCurrentDialogState(translatedState);
582
- if (translatedMsg) {
583
- pushMessage(translatedMsg);
584
- }
585
- return translatedState;
586
- };
587
- const minAge = memori.ageRestriction
588
- ? memori.ageRestriction
589
- : memori.nsfw
590
- ? 18
591
- : memori.enableCompletions
592
- ? 14
593
- : 0;
594
- const [birthDate, setBirthDate] = (0, react_1.useState)();
595
- const [showAgeVerification, setShowAgeVerification] = (0, react_1.useState)(false);
596
599
  const [userInteractionTimeout, setUserInteractionTimeout] = (0, react_1.useState)();
597
600
  const timeoutRef = (0, react_1.useRef)();
598
601
  const clearInteractionTimeout = () => {
@@ -1355,16 +1358,18 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integra
1355
1358
  }, 1000);
1356
1359
  }
1357
1360
  else {
1358
- sendMessage(text, undefined, sessionID, undefined, undefined, hidden);
1361
+ stopListening();
1362
+ stopAudio();
1363
+ sendMessage(text, undefined, undefined, undefined, undefined, hidden);
1359
1364
  }
1360
1365
  }
1361
- }, [sessionId, isPlayingAudio, memoriTyping]);
1366
+ }, [sessionId, isPlayingAudio, memoriTyping, userLang]);
1362
1367
  (0, react_1.useEffect)(() => {
1363
1368
  document.addEventListener('MemoriTextEntered', memoriTextEnteredHandler);
1364
1369
  return () => {
1365
1370
  document.removeEventListener('MemoriTextEntered', memoriTextEnteredHandler);
1366
1371
  };
1367
- }, []);
1372
+ }, [sessionId, userLang]);
1368
1373
  const onClickStart = (0, react_1.useCallback)(async (session) => {
1369
1374
  const sessionID = (session === null || session === void 0 ? void 0 : session.sessionID) || sessionId;
1370
1375
  const dialogState = (session === null || session === void 0 ? void 0 : session.dialogState) || currentDialogState;
@@ -1717,6 +1722,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integra
1717
1722
  'memori--with-speechkey': !!AZURE_COGNITIVE_SERVICES_TTS_KEY,
1718
1723
  'memori--active': hasUserActivatedSpeak,
1719
1724
  'memori--hide-emissions': hideEmissions,
1725
+ 'memori--has-active-session': !!sessionId,
1720
1726
  }), "data-memori-name": memori === null || memori === void 0 ? void 0 : memori.name, "data-memori-id": memori === null || memori === void 0 ? void 0 : memori.engineMemoriID, "data-memori-secondary-id": memori === null || memori === void 0 ? void 0 : memori.memoriID, "data-memori-session-id": sessionId, "data-memori-integration": integration === null || integration === void 0 ? void 0 : integration.integrationID, "data-memori-engine-state": JSON.stringify({
1721
1727
  ...currentDialogState,
1722
1728
  sessionID: sessionId,