@memori.ai/memori-react 2.6.3 → 2.6.5

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 (55) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/components/Header/Header.css +2 -2
  3. package/dist/components/MemoriWidget/MemoriWidget.js +24 -7
  4. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  5. package/dist/components/PoweredBy/PoweredBy.css +1 -1
  6. package/dist/components/layouts/chat.css +2 -3
  7. package/dist/components/ui/Select.css +1 -1
  8. package/dist/helpers/error.test.d.ts +1 -0
  9. package/dist/helpers/error.test.js +26 -0
  10. package/dist/helpers/error.test.js.map +1 -0
  11. package/dist/helpers/media.js +3 -2
  12. package/dist/helpers/media.js.map +1 -1
  13. package/dist/helpers/media.test.d.ts +1 -0
  14. package/dist/helpers/media.test.js +87 -0
  15. package/dist/helpers/media.test.js.map +1 -0
  16. package/dist/helpers/statistics.test.d.ts +3 -0
  17. package/dist/helpers/statistics.test.js +200 -0
  18. package/dist/helpers/statistics.test.js.map +1 -0
  19. package/dist/helpers/utils.test.d.ts +1 -0
  20. package/dist/helpers/utils.test.js +30 -0
  21. package/dist/helpers/utils.test.js.map +1 -0
  22. package/dist/styles.css +1 -1
  23. package/esm/components/Header/Header.css +2 -2
  24. package/esm/components/MemoriWidget/MemoriWidget.js +24 -7
  25. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  26. package/esm/components/PoweredBy/PoweredBy.css +1 -1
  27. package/esm/components/layouts/chat.css +2 -3
  28. package/esm/components/ui/Select.css +1 -1
  29. package/esm/helpers/error.test.d.ts +1 -0
  30. package/esm/helpers/error.test.js +24 -0
  31. package/esm/helpers/error.test.js.map +1 -0
  32. package/esm/helpers/media.js +3 -2
  33. package/esm/helpers/media.js.map +1 -1
  34. package/esm/helpers/media.test.d.ts +1 -0
  35. package/esm/helpers/media.test.js +85 -0
  36. package/esm/helpers/media.test.js.map +1 -0
  37. package/esm/helpers/statistics.test.d.ts +3 -0
  38. package/esm/helpers/statistics.test.js +197 -0
  39. package/esm/helpers/statistics.test.js.map +1 -0
  40. package/esm/helpers/utils.test.d.ts +1 -0
  41. package/esm/helpers/utils.test.js +28 -0
  42. package/esm/helpers/utils.test.js.map +1 -0
  43. package/esm/styles.css +1 -1
  44. package/package.json +1 -1
  45. package/src/components/Header/Header.css +2 -2
  46. package/src/components/MemoriWidget/MemoriWidget.tsx +259 -240
  47. package/src/components/PoweredBy/PoweredBy.css +1 -1
  48. package/src/components/layouts/chat.css +2 -3
  49. package/src/components/ui/Select.css +1 -1
  50. package/src/helpers/error.test.ts +29 -0
  51. package/src/helpers/media.test.ts +133 -0
  52. package/src/helpers/media.ts +5 -2
  53. package/src/helpers/statistics.test.ts +213 -0
  54. package/src/helpers/utils.test.ts +31 -0
  55. package/src/styles.css +1 -1
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.eventLogs = exports.stats = void 0;
4
+ const statistics_1 = require("./statistics");
5
+ exports.stats = {
6
+ totalReceivers: 2,
7
+ receiversWithMemories: 1,
8
+ totalMemories: 50,
9
+ publicMemories: 30,
10
+ memoriesWithMedia: 25,
11
+ totalQuestions: 35,
12
+ publicQuestions: 30,
13
+ questionsWithMoreThanOneAnswer: 20,
14
+ totalStories: 15,
15
+ publicStories: 10,
16
+ storiesWithDate: 5,
17
+ storiesWithPlace: 3,
18
+ storiesWithDateAndPlace: 2,
19
+ unansweredQuestions: 10,
20
+ successfulCorrelations: 5,
21
+ failedCorrelations: 1,
22
+ };
23
+ exports.eventLogs = [
24
+ {
25
+ eventLogID: '28c9f4c8-d7d5-44c4-9f79-418944b03e82',
26
+ eventType: 'MemoriOpened',
27
+ ipAddress: '::ffff:10.11.12.14',
28
+ memoriID: '1afe57c6-1b69-4a61-96ea-52bf7b8d158e',
29
+ timestamp: '2022-04-15T15:00:27.534191',
30
+ userAgent: 'RestSharp/106.13.0.0',
31
+ },
32
+ {
33
+ eventLogID: '28c9f4c8-d7d5-44c4-9f79-418944b03e83',
34
+ eventType: 'MemoriOpened',
35
+ ipAddress: '::ffff:10.11.12.13',
36
+ memoriID: '1afe57c6-1b69-4a61-96ea-52bf7b8d158e',
37
+ timestamp: '2022-04-15T15:00:27.534191',
38
+ userAgent: 'RestSharp/106.13.0.0',
39
+ },
40
+ {
41
+ eventLogID: '28c9f4c8-d7d5-44c4-9f79-418944b03e84',
42
+ eventType: 'MemoriClosed',
43
+ ipAddress: '::ffff:10.11.12.13',
44
+ memoriID: '1afe57c6-1b69-4a61-96ea-52bf7b8d158e',
45
+ timestamp: '2022-04-15T15:10:27.534191',
46
+ userAgent: 'RestSharp/106.13.0.0',
47
+ },
48
+ {
49
+ eventLogID: '28c9f4c8-d7d5-44c4-9f79-418944b03e85',
50
+ eventType: 'MemoriOpened',
51
+ ipAddress: '::ffff:10.11.12.13',
52
+ memoriID: '1afe57c6-1b69-4a61-96ea-52bf7b8d158e',
53
+ timestamp: '2022-04-15T15:15:27.534191',
54
+ userAgent: 'RestSharp/106.13.0.0',
55
+ },
56
+ {
57
+ eventLogID: '28c9f4c8-d7d5-44c4-9f79-418944b03e86',
58
+ eventType: 'MemoriClosed',
59
+ ipAddress: '::ffff:10.11.12.13',
60
+ memoriID: '1afe57c6-1b69-4a61-96ea-52bf7b8d158e',
61
+ timestamp: '2022-04-15T15:20:27.534191',
62
+ userAgent: 'RestSharp/106.13.0.0',
63
+ },
64
+ {
65
+ eventLogID: '28c9f4c8-d7d5-44c4-9f79-418944b03e88',
66
+ eventType: 'MemoriClosed',
67
+ ipAddress: undefined,
68
+ memoriID: '1afe57c6-1b69-4a61-96ea-52bf7b8d158e',
69
+ timestamp: '2022-04-15T15:28:27.534191',
70
+ userAgent: 'RestSharp/106.13.0.0',
71
+ },
72
+ ];
73
+ describe('getBadge', () => {
74
+ it('should return 🆕 badge for 0 points', () => {
75
+ expect((0, statistics_1.getBadge)(0)).toBe('🆕');
76
+ });
77
+ it('should return 🐹 for 10 points', () => {
78
+ expect((0, statistics_1.getBadge)(10)).toBe('🐹');
79
+ });
80
+ it('should return 🥇 for 99 points', () => {
81
+ expect((0, statistics_1.getBadge)(99)).toBe('🥇');
82
+ });
83
+ it('should return 🥇 for 99.9 points with round', () => {
84
+ expect((0, statistics_1.getBadge)(99.9)).toBe('🥇');
85
+ });
86
+ it('should return 🔥 for 100 points', () => {
87
+ expect((0, statistics_1.getBadge)(100)).toBe('🔥');
88
+ });
89
+ it('should return 🔥 for 101 points', () => {
90
+ expect((0, statistics_1.getBadge)(101)).toBe('🔥');
91
+ });
92
+ it('should return 🌎 for 150 points', () => {
93
+ expect((0, statistics_1.getBadge)(150)).toBe('🌍');
94
+ });
95
+ it('should return 🧠 for 1000 points', () => {
96
+ expect((0, statistics_1.getBadge)(1000)).toBe('🧠');
97
+ });
98
+ });
99
+ describe('getNextBadge', () => {
100
+ it('should return { points: 10, badge: "🐹" } for 🆕 badge', () => {
101
+ expect((0, statistics_1.getNextBadge)('🆕')).toEqual({ points: 10, badge: '🐹' });
102
+ });
103
+ it('should return { points: 150, badge: "🌍" } for 👾', () => {
104
+ expect((0, statistics_1.getNextBadge)('👾')).toEqual({ points: 150, badge: '🌍' });
105
+ });
106
+ it('should return { points: 600, badge: "🧠" } for ❤', () => {
107
+ expect((0, statistics_1.getNextBadge)('❤️')).toEqual({ points: 600, badge: '🧠' });
108
+ });
109
+ });
110
+ describe('getPointsForBadge', () => {
111
+ it('should return 0 for "new" badge', () => {
112
+ expect((0, statistics_1.getPointsForBadge)('🆕')).toBe(0);
113
+ });
114
+ it('should return 10 for 🐹', () => {
115
+ expect((0, statistics_1.getPointsForBadge)('🐹')).toBe(10);
116
+ });
117
+ it('should return 150 for 🌎', () => {
118
+ expect((0, statistics_1.getPointsForBadge)('🌍')).toBe(150);
119
+ });
120
+ it('should return 600 for 🧠', () => {
121
+ expect((0, statistics_1.getPointsForBadge)('🧠')).toBe(600);
122
+ });
123
+ });
124
+ describe('getPointsFromStats', () => {
125
+ it('should return 0 for no stats', () => {
126
+ expect((0, statistics_1.getPointsFromStats)({})).toBe(0);
127
+ });
128
+ it('should return x for stats', () => {
129
+ expect((0, statistics_1.getPointsFromStats)(exports.stats)).toBe(68);
130
+ });
131
+ });
132
+ describe('getGamificationLevel', () => {
133
+ it('should return correct level for 0 points', () => {
134
+ expect((0, statistics_1.getGamificationLevel)(0)).toEqual({
135
+ points: 0,
136
+ badge: '🆕',
137
+ pointsForCurrentBadge: 0,
138
+ nextBadge: { points: 10, badge: '🐹' },
139
+ });
140
+ });
141
+ it('should return correct level with 68 points', () => {
142
+ expect((0, statistics_1.getGamificationLevel)(68.34)).toEqual({
143
+ points: 68,
144
+ badge: '🏅',
145
+ pointsForCurrentBadge: 60,
146
+ nextBadge: { points: 70, badge: '🥉' },
147
+ });
148
+ });
149
+ it('should return correct level with 100 points', () => {
150
+ expect((0, statistics_1.getGamificationLevel)(100)).toEqual({
151
+ points: 100,
152
+ badge: '🔥',
153
+ pointsForCurrentBadge: 100,
154
+ nextBadge: { points: 110, badge: '🎓' },
155
+ });
156
+ });
157
+ it('should return correct level with 68 points and correct float round', () => {
158
+ expect((0, statistics_1.getGamificationLevel)(67.84)).toEqual({
159
+ points: 68,
160
+ badge: '🏅',
161
+ pointsForCurrentBadge: 60,
162
+ nextBadge: { points: 70, badge: '🥉' },
163
+ });
164
+ });
165
+ it('should return correct level with 99.9 points', () => {
166
+ expect((0, statistics_1.getGamificationLevel)(99.9)).toEqual({
167
+ points: 100,
168
+ badge: '🔥',
169
+ pointsForCurrentBadge: 100,
170
+ nextBadge: { points: 110, badge: '🎓' },
171
+ });
172
+ });
173
+ it('should return correct level with overflow 9999 points', () => {
174
+ expect((0, statistics_1.getGamificationLevel)(9999)).toEqual({
175
+ points: 9999,
176
+ badge: '🧠',
177
+ pointsForCurrentBadge: 600,
178
+ nextBadge: undefined,
179
+ });
180
+ });
181
+ });
182
+ describe('getGamificationLevelByStats', () => {
183
+ it('should return correct level for no stats', () => {
184
+ expect((0, statistics_1.getGamificationLevelByStats)({})).toEqual({
185
+ points: 0,
186
+ badge: '🆕',
187
+ pointsForCurrentBadge: 0,
188
+ nextBadge: { points: 10, badge: '🐹' },
189
+ });
190
+ });
191
+ it('should return correct level for stats', () => {
192
+ expect((0, statistics_1.getGamificationLevelByStats)(exports.stats)).toEqual({
193
+ points: 68,
194
+ badge: '🏅',
195
+ pointsForCurrentBadge: 60,
196
+ nextBadge: { points: 70, badge: '🥉' },
197
+ });
198
+ });
199
+ });
200
+ //# sourceMappingURL=statistics.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statistics.test.js","sourceRoot":"","sources":["../../src/helpers/statistics.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("./utils");
4
+ describe('Utils/difference', () => {
5
+ it('should return the difference between two objects with numeric values', () => {
6
+ const obj1 = { a: 1, b: 2, c: 3 };
7
+ const obj2 = { a: 1, b: 2, c: 4 };
8
+ const result = (0, utils_1.difference)(obj1, obj2);
9
+ expect(result).toEqual({ c: 4 });
10
+ });
11
+ it('should return the difference between two objects with new properties and strings', () => {
12
+ const obj1 = { a: 1, c: '' };
13
+ const obj2 = { a: 1, b: '', c: 'ciao' };
14
+ const result = (0, utils_1.difference)(obj1, obj2);
15
+ expect(result).toEqual({ b: '', c: 'ciao' });
16
+ });
17
+ it('should return the difference between two objects from null or undefined', () => {
18
+ const obj1 = { a: 1, c: null };
19
+ const obj2 = { a: 1, b: '', c: 'ciao' };
20
+ const result = (0, utils_1.difference)(obj1, obj2);
21
+ expect(result).toEqual({ b: '', c: 'ciao' });
22
+ });
23
+ it('should return the difference between two objects with lists', () => {
24
+ const obj1 = { a: [], b: 'thesame' };
25
+ const obj2 = { a: ['alpha', 'beta', 'gamma'], b: 'thesame' };
26
+ const result = (0, utils_1.difference)(obj1, obj2);
27
+ expect(result).toEqual({ a: ['alpha', 'beta', 'gamma'] });
28
+ });
29
+ });
30
+ //# sourceMappingURL=utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../src/helpers/utils.test.ts"],"names":[],"mappings":";;AAAA,mCAAqC;AAErC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/styles.css CHANGED
@@ -84,4 +84,4 @@ body.sb-show-main #root,
84
84
  --memori-modal--width: 100%;
85
85
  --memori-modal--width--md: 80%;
86
86
  --memori-error-color: #ff4d4f;
87
- }
87
+ }
@@ -25,7 +25,7 @@
25
25
  justify-content: center;
26
26
  }
27
27
 
28
- .memori-header--button+.memori-header--button {
28
+ .memori-header--button + .memori-header--button {
29
29
  margin-left: 0.25rem;
30
30
  }
31
31
 
@@ -58,4 +58,4 @@
58
58
 
59
59
  .memori-header .memori-share-button {
60
60
  margin-left: 0.25rem;
61
- }
61
+ }
@@ -83,6 +83,7 @@ let speechConfig;
83
83
  let speechSynthesizer;
84
84
  let audioDestination;
85
85
  let audioContext;
86
+ let memoriPassword;
86
87
  const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integration, layout = 'DEFAULT', customLayout, showInstruct = false, showShare, preview = false, embed = false, showInputs = true, showDates = false, showContextPerLine = false, showSettings = true, height = '100vh', secret, baseUrl = 'https://app.twincreator.com', apiUrl = 'https://backend.memori.ai', initialContextVars, initialQuestion, ogImage, sessionID: initialSessionID, tenant, personification, authToken, AZURE_COGNITIVE_SERVICES_TTS_KEY, onStateChange, }) => {
87
88
  var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _t, _u, _v, _w, _x, _y;
88
89
  const { t, i18n } = useTranslation();
@@ -420,11 +421,24 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integra
420
421
  var _a;
421
422
  setLoading(true);
422
423
  try {
424
+ if (memori.privacyType !== 'PUBLIC' &&
425
+ !password &&
426
+ !memori.secretToken &&
427
+ !memoriPwd &&
428
+ !recoveryTokens &&
429
+ !memoriTokens) {
430
+ setAuthModalState('password');
431
+ return;
432
+ }
423
433
  let storageBirthDate = getLocalConfig('birthDate', undefined);
434
+ if (!(birthDate || storageBirthDate) && !!minAge) {
435
+ setShowAgeVerification(true);
436
+ return;
437
+ }
424
438
  const { sessionID, currentState, ...response } = await initSession({
425
439
  memoriID: (_a = memori.engineMemoriID) !== null && _a !== void 0 ? _a : '',
426
- password,
427
- recoveryTokens,
440
+ password: password || memoriPwd || memori.secretToken,
441
+ recoveryTokens: recoveryTokens || memoriTokens,
428
442
  tag,
429
443
  pin,
430
444
  initialContextVars,
@@ -510,7 +524,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integra
510
524
  let storageBirthDate = getLocalConfig('birthDate', undefined);
511
525
  fetchSession({
512
526
  memoriID: (_a = memori.engineMemoriID) !== null && _a !== void 0 ? _a : '',
513
- password: secret || memori.secretToken,
527
+ password: secret || memoriPwd || memori.secretToken,
514
528
  tag: memori.giverTag,
515
529
  pin: memori.giverPIN,
516
530
  initialContextVars,
@@ -1278,7 +1292,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integra
1278
1292
  stopAudio();
1279
1293
  sendMessage(text, undefined, undefined, false, translatedText);
1280
1294
  };
1281
- const onClickStart = async (session) => {
1295
+ const onClickStart = useCallback(async (session) => {
1282
1296
  const sessionID = (session === null || session === void 0 ? void 0 : session.sessionID) || sessionId;
1283
1297
  const dialogState = (session === null || session === void 0 ? void 0 : session.dialogState) || currentDialogState;
1284
1298
  setClickedStart(true);
@@ -1312,7 +1326,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integra
1312
1326
  setGotErrorInOpening(false);
1313
1327
  const session = await fetchSession({
1314
1328
  memoriID: memori.engineMemoriID,
1315
- password: secret || memori.secretToken,
1329
+ password: secret || memoriPwd || memori.secretToken,
1316
1330
  tag: personification === null || personification === void 0 ? void 0 : personification.tag,
1317
1331
  pin: personification === null || personification === void 0 ? void 0 : personification.pin,
1318
1332
  initialContextVars,
@@ -1461,7 +1475,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integra
1461
1475
  setHasUserActivatedSpeak(true);
1462
1476
  });
1463
1477
  }
1464
- };
1478
+ }, [memoriPwd, memori, memoriTokens, birthDate, sessionId]);
1465
1479
  const [loginToken, setLoginToken] = useState(authToken);
1466
1480
  useEffect(() => {
1467
1481
  const targetNode = document.querySelector(`memori-client[memoriname="${memori.name}"]`) ||
@@ -1634,6 +1648,8 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integra
1634
1648
  }), style: { height }, children: [_jsx(Layout, { Header: Header, headerProps: headerProps, Avatar: Avatar, avatarProps: avatarProps, Chat: Chat, chatProps: chatProps, StartPanel: StartPanel, startPanelProps: startPanelProps, integrationStyle: integrationStyle, integrationBackground: integrationBackground, ChangeMode: ChangeMode, changeModeProps: changeModeProps, poweredBy: poweredBy, sessionId: sessionId, hasUserActivatedSpeak: hasUserActivatedSpeak, showInstruct: showInstruct, loading: loading }), _jsx("audio", { id: "memori-audio", style: { display: 'none' }, src: "https://app.twincreator.com/intro.mp3" }), isClient && (_jsx(MemoriAuth, { withModal: true, pwdOrTokens: authModalState, openModal: !!authModalState, setPwdOrTokens: setAuthModalState, showTokens: memori.privacyType === 'SECRET', onFinish: async (values) => {
1635
1649
  if (values['password'])
1636
1650
  setMemoriPwd(values['password']);
1651
+ if (values['password'])
1652
+ memoriPassword = values['password'];
1637
1653
  if (values['tokens'])
1638
1654
  setMemoriTokens(values['tokens']);
1639
1655
  reopenSession(!sessionId, values['password'], values['tokens'], instruct ? memori.giverTag : undefined, instruct ? memori.giverPIN : undefined, initialContextVars, initialQuestion, birthDate)
@@ -1649,9 +1665,10 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, multilingual, integra
1649
1665
  if (birthDate) {
1650
1666
  setBirthDate(birthDate);
1651
1667
  setLocalConfig('birthDate', birthDate);
1652
- reopenSession(!sessionId, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, instruct ? memori.giverTag : undefined, instruct ? memori.giverPIN : undefined, initialContextVars, initialQuestion, birthDate)
1668
+ reopenSession(!sessionId, memoriPassword || memoriPwd || (memori === null || memori === void 0 ? void 0 : memori.secretToken), memoriTokens, instruct ? memori.giverTag : undefined, instruct ? memori.giverPIN : undefined, initialContextVars, initialQuestion, birthDate)
1653
1669
  .then(state => {
1654
1670
  setShowAgeVerification(false);
1671
+ setAuthModalState(null);
1655
1672
  onClickStart(state || undefined);
1656
1673
  })
1657
1674
  .catch(() => {