@memori.ai/memori-react 8.7.3 → 8.7.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 (45) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/components/Chat/Chat.js +1 -1
  3. package/dist/components/Chat/Chat.js.map +1 -1
  4. package/dist/components/LoginDrawer/LoginDrawer.d.ts +2 -2
  5. package/dist/components/LoginDrawer/LoginDrawer.js +181 -139
  6. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  7. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.d.ts +2 -2
  8. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +61 -32
  9. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  10. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +1 -1
  11. package/dist/components/MemoriWidget/MemoriWidget.js +4 -94
  12. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  13. package/dist/components/layouts/HiddenChat.js +3 -9
  14. package/dist/components/layouts/HiddenChat.js.map +1 -1
  15. package/dist/components/layouts/hidden-chat.css +14 -3
  16. package/dist/helpers/utils.js +1 -1
  17. package/dist/helpers/utils.js.map +1 -1
  18. package/esm/components/Chat/Chat.js +1 -1
  19. package/esm/components/Chat/Chat.js.map +1 -1
  20. package/esm/components/LoginDrawer/LoginDrawer.d.ts +2 -2
  21. package/esm/components/LoginDrawer/LoginDrawer.js +183 -141
  22. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  23. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.d.ts +2 -2
  24. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +62 -33
  25. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  26. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +1 -1
  27. package/esm/components/MemoriWidget/MemoriWidget.js +4 -94
  28. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  29. package/esm/components/layouts/HiddenChat.js +3 -9
  30. package/esm/components/layouts/HiddenChat.js.map +1 -1
  31. package/esm/components/layouts/hidden-chat.css +14 -3
  32. package/esm/helpers/utils.js +1 -1
  33. package/esm/helpers/utils.js.map +1 -1
  34. package/package.json +1 -1
  35. package/src/components/Chat/Chat.tsx +1 -1
  36. package/src/components/LoginDrawer/LoginDrawer.test.tsx +12 -12
  37. package/src/components/LoginDrawer/LoginDrawer.tsx +391 -321
  38. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +96 -179
  39. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +88 -39
  40. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +1 -1
  41. package/src/components/MemoriWidget/MemoriWidget.tsx +5 -135
  42. package/src/components/layouts/HiddenChat.tsx +4 -9
  43. package/src/components/layouts/hidden-chat.css +14 -3
  44. package/src/helpers/utils.ts +1 -1
  45. package/src/components/AccountForm/AccountForm.tsx +0 -325
@@ -1,32 +1,36 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState } from 'react';
2
+ import { useEffect, useState } from 'react';
3
3
  import Button from '../ui/Button';
4
4
  import Drawer from '../ui/Drawer';
5
5
  import toast from 'react-hot-toast';
6
6
  import { useTranslation } from 'react-i18next';
7
7
  import cx from 'classnames';
8
8
  import { getErrori18nKey } from '../../helpers/error';
9
- import { mailRegEx, pwdRegEx } from '../../helpers/utils';
9
+ import { mailRegEx } from '../../helpers/utils';
10
10
  import SignupForm from '../SignupForm/SignupForm';
11
- import AccountForm from '../AccountForm/AccountForm';
12
- const LoginDrawer = ({ open = false, onClose, onLogin, onLogout, user, loginToken, tenant, apiClient, __TEST__signup = false, __TEST__needMissingData = false, __TEST__waitingForOtp = false, __TEST__changePwd = false, }) => {
13
- var _a, _b;
11
+ const LoginDrawer = ({ open = false, onClose, onLogin, user, loginToken, setUser, tenant, apiClient, __TEST__signup = false, __TEST__needMissingData = false, __TEST__waitingForOtp = false, }) => {
12
+ var _a;
14
13
  const { t, i18n } = useTranslation();
15
14
  const lang = i18n.language === 'it' ? 'it' : 'en';
16
- const { userLogin, updateUser } = apiClient.backend;
15
+ const { pwlUpdateUser, loginWithOTP, validateOTPCode, pwlGetCurrentUser, uploadAsset, } = apiClient.backend;
17
16
  const isUserLoggedIn = (user === null || user === void 0 ? void 0 : user.userID) && loginToken;
18
17
  const [loading, setLoading] = useState(false);
19
18
  const [error, setError] = useState(null);
19
+ const [otpCode, setOtpCode] = useState('');
20
+ const [otpEmail, setOtpEmail] = useState('');
21
+ const [otpError, setOtpError] = useState(null);
22
+ const [showOtpForm, setShowOtpForm] = useState(true);
23
+ const [showOtpCodeForm, setShowOtpCodeForm] = useState(false);
24
+ const [otpTimer, setOtpTimer] = useState(null);
25
+ const [otpSent, setOtpSent] = useState(false);
26
+ const [avatar, setAvatar] = useState(null);
27
+ const [isResending, setIsResending] = useState(false);
28
+ const [otpSuccess, setOtpSuccess] = useState(false);
29
+ const [emailValid, setEmailValid] = useState(false);
30
+ const [birthDate, setBirthDate] = useState('');
31
+ const [tnCAndPPAccepted, setTnCAndPPAccepted] = useState(false);
32
+ const [pAndCUAccepted, setPAndCUAccepted] = useState(false);
20
33
  const [showSignup, setShowSignup] = useState(__TEST__signup);
21
- const [userMustChangePwd, setUserMustChangePwd] = useState(__TEST__changePwd
22
- ? {
23
- flowID: 'flowID',
24
- tenant: tenant.name,
25
- eMail: 'email',
26
- userName: 'username',
27
- password: 'password',
28
- }
29
- : undefined);
30
34
  const [needsMissingData, setNeedsMissingData] = useState(__TEST__needMissingData
31
35
  ? {
32
36
  token: 'token',
@@ -34,74 +38,151 @@ const LoginDrawer = ({ open = false, onClose, onLogin, onLogout, user, loginToke
34
38
  tnCAndPPAccepted: true,
35
39
  }
36
40
  : {});
37
- const login = (e) => {
38
- e.preventDefault();
39
- const form = e.currentTarget;
40
- const userNameOrEmail = form.userNameOrEmail.value;
41
- const password = form.password.value;
42
- const isEmail = mailRegEx.test(userNameOrEmail);
43
- const user = isEmail
44
- ? {
45
- tenant: tenant === null || tenant === void 0 ? void 0 : tenant.name,
46
- eMail: userNameOrEmail,
47
- password: password,
41
+ useEffect(() => {
42
+ let interval;
43
+ if (otpTimer && otpTimer > 0) {
44
+ interval = setInterval(() => {
45
+ setOtpTimer(prev => (prev && prev > 0 ? prev - 1 : 0));
46
+ }, 1000);
47
+ }
48
+ return () => {
49
+ if (interval)
50
+ clearInterval(interval);
51
+ };
52
+ }, [otpTimer]);
53
+ const sendOtpToEmail = async (email, isResend = false) => {
54
+ if (!email || !mailRegEx.test(email)) {
55
+ setOtpError(t('login.emailInvalid'));
56
+ return;
57
+ }
58
+ if (isResend) {
59
+ setIsResending(true);
60
+ }
61
+ else {
62
+ setLoading(true);
63
+ }
64
+ setOtpError(null);
65
+ try {
66
+ const response = await loginWithOTP({
67
+ tenant: tenant.name,
68
+ eMail: email.trim(),
69
+ });
70
+ if (response.resultCode === 0) {
71
+ toast.success(isResend ? t('login.otpResent') : t('login.otpSent'));
72
+ setOtpEmail(email.trim());
73
+ setOtpSent(true);
74
+ setShowOtpCodeForm(true);
75
+ startOtpTimer();
76
+ setOtpSuccess(false);
48
77
  }
49
- : {
50
- tenant: tenant === null || tenant === void 0 ? void 0 : tenant.name,
51
- userName: userNameOrEmail,
52
- password: password,
53
- };
54
- setLoading(true);
55
- setError(null);
56
- userLogin(user)
57
- .then(data => {
58
- var _a, _b, _c, _d, _e;
59
- if (data.resultCode === -14) {
60
- setUserMustChangePwd({
61
- tenant: tenant.name,
62
- eMail: isEmail ? userNameOrEmail : undefined,
63
- userName: isEmail ? undefined : userNameOrEmail,
64
- password: password,
65
- flowID: (data.flowID || ((_a = data.user) === null || _a === void 0 ? void 0 : _a.flowID)),
66
- });
78
+ else {
79
+ setOtpError(response.resultMessage || t('login.otpSendError'));
67
80
  }
68
- else if (data.resultCode !== 0) {
69
- console.error(data);
70
- toast.error(t(getErrori18nKey(data.resultCode)));
71
- setError(data.resultMessage);
81
+ }
82
+ catch (err) {
83
+ console.error('[OTP SEND]', err);
84
+ setOtpError(t('login.otpSendError'));
85
+ }
86
+ finally {
87
+ setLoading(false);
88
+ setIsResending(false);
89
+ }
90
+ };
91
+ const validateOtp = async (otp) => {
92
+ if (!otp || otp.length !== 4) {
93
+ setOtpError(t('login.otpInvalidFormat'));
94
+ return;
95
+ }
96
+ if (!otpEmail || otpEmail.trim().length === 0) {
97
+ setOtpError(t('login.emailRequired'));
98
+ return;
99
+ }
100
+ setLoading(true);
101
+ setOtpError(null);
102
+ try {
103
+ const response = await validateOTPCode(otp, tenant.name, undefined, otpEmail.trim());
104
+ if (response.resultCode === 0) {
105
+ setOtpSuccess(true);
106
+ toast.success(t('login.otpSuccess'));
107
+ setTimeout(async () => {
108
+ try {
109
+ const { user, ...resp } = await pwlGetCurrentUser(response.newSessionToken);
110
+ if (!user.age || !user.pAndCUAccepted) {
111
+ setUser(user);
112
+ setNeedsMissingData({
113
+ token: response.newSessionToken,
114
+ birthDate: !user.age,
115
+ tnCAndPPAccepted: !user.pAndCUAccepted,
116
+ });
117
+ }
118
+ else {
119
+ onLogin(user, response.newSessionToken);
120
+ }
121
+ }
122
+ catch (err) {
123
+ console.error('[GET USER]', err);
124
+ toast.error(t('login.userFetchError'));
125
+ }
126
+ }, 1000);
127
+ setTimeout(() => {
128
+ setShowOtpForm(false);
129
+ setShowOtpCodeForm(false);
130
+ setOtpCode('');
131
+ setOtpEmail('');
132
+ setOtpSent(false);
133
+ setOtpSuccess(false);
134
+ }, 2000);
72
135
  }
73
- else if (data.user && data.token) {
74
- if (!((_b = data.user) === null || _b === void 0 ? void 0 : _b.tnCAndPPAccepted) || !((_c = data.user) === null || _c === void 0 ? void 0 : _c.birthDate)) {
75
- setNeedsMissingData({
76
- token: data.token,
77
- birthDate: !((_d = data.user) === null || _d === void 0 ? void 0 : _d.birthDate),
78
- tnCAndPPAccepted: !((_e = data.user) === null || _e === void 0 ? void 0 : _e.tnCAndPPAccepted),
79
- });
136
+ else {
137
+ if (response.resultCode === -107) {
138
+ setOtpError(t('login.otpNotFound'));
139
+ }
140
+ else if (response.resultCode === -108) {
141
+ setOtpError(t('login.otpExpired'));
142
+ }
143
+ else if (response.resultCode === -109) {
144
+ setOtpError(t('login.otpMissing'));
80
145
  }
81
146
  else {
82
- onLogin(data.user, data.token);
147
+ setOtpError(response.resultMessage || t('login.otpInvalid'));
83
148
  }
84
149
  }
85
- })
86
- .catch(err => {
87
- console.error('[LOGIN]', err);
88
- if (err.message) {
89
- toast.error(err.message);
90
- setError(err.message);
91
- }
92
- })
93
- .finally(() => {
150
+ }
151
+ catch (err) {
152
+ console.error('[OTP VALIDATION]', err);
153
+ setOtpError(t('login.otpError'));
154
+ }
155
+ finally {
94
156
  setLoading(false);
95
- });
157
+ }
158
+ };
159
+ const handleOtpChange = (value) => {
160
+ const numericValue = value.replace(/\D/g, '').slice(0, 4);
161
+ setOtpCode(numericValue);
162
+ setOtpError(null);
163
+ if (numericValue.length === 4 && otpEmail.trim().length > 0) {
164
+ validateOtp(numericValue);
165
+ }
166
+ };
167
+ const handleEmailChange = (value) => {
168
+ setOtpEmail(value);
169
+ setOtpError(null);
170
+ setEmailValid(mailRegEx.test(value));
171
+ };
172
+ const handleResendOtp = () => {
173
+ if (otpEmail && mailRegEx.test(otpEmail)) {
174
+ sendOtpToEmail(otpEmail, true);
175
+ }
176
+ };
177
+ const startOtpTimer = () => {
178
+ setOtpTimer(60);
96
179
  };
97
180
  const updateMissingData = async (e) => {
98
- var _a, _b, _c;
99
181
  e.preventDefault();
100
182
  const form = e.currentTarget;
101
- const birthDate = (_a = form.birthDate) === null || _a === void 0 ? void 0 : _a.value;
102
- const tnCAndPPAccepted = (_b = form.tnCAndPPAccepted) === null || _b === void 0 ? void 0 : _b.checked;
103
- const pAndCUAccepted = (_c = form.pAndCUAccepted) === null || _c === void 0 ? void 0 : _c.checked;
183
+ console.log('updateMissingData', form);
104
184
  if (!(user === null || user === void 0 ? void 0 : user.userID) || !(needsMissingData === null || needsMissingData === void 0 ? void 0 : needsMissingData.token)) {
185
+ setError(t('login.userNotFound'));
105
186
  return;
106
187
  }
107
188
  if (!birthDate || !tnCAndPPAccepted) {
@@ -120,7 +201,7 @@ const LoginDrawer = ({ open = false, onClose, onLogin, onLogout, user, loginToke
120
201
  ? new Date().toISOString()
121
202
  : undefined,
122
203
  };
123
- const { user: patchedUser, ...resp } = await updateUser(needsMissingData.token, user.userID, newUser);
204
+ const { user: patchedUser, ...resp } = await pwlUpdateUser(needsMissingData.token, user.userID, newUser);
124
205
  if (resp.resultCode !== 0) {
125
206
  console.error(resp);
126
207
  toast.error(t(getErrori18nKey(resp.resultCode)));
@@ -131,79 +212,40 @@ const LoginDrawer = ({ open = false, onClose, onLogin, onLogout, user, loginToke
131
212
  onLogin(patchedUser || newUser, needsMissingData.token);
132
213
  }
133
214
  };
134
- const [password, setPassword] = useState();
135
- const [confirmPassword, setConfirmPassword] = useState();
136
- const pwdAcceptable = !password || (password && pwdRegEx.test(password));
137
- const pwdGreen = pwdAcceptable && password && password.length >= 24;
138
- const pwdEmpty = !password || password.length === 0;
139
- const pwdMeterValue = !pwdAcceptable || pwdEmpty
140
- ? 0
141
- : password.length < 8
142
- ? 15
143
- : password.length >= 32
144
- ? 100
145
- : (password.length - 8) * (50 / 24) + 50;
146
- const changePassword = async (e) => {
147
- var _a, _b, _c, _d, _e;
148
- e.preventDefault();
149
- const form = e.currentTarget;
150
- const tenantID = (_a = form.tenant.value) !== null && _a !== void 0 ? _a : tenant.name;
151
- const flowID = (_b = form.flowID.value) !== null && _b !== void 0 ? _b : userMustChangePwd === null || userMustChangePwd === void 0 ? void 0 : userMustChangePwd.flowID;
152
- const eMail = (_c = form.eMail.value) !== null && _c !== void 0 ? _c : userMustChangePwd === null || userMustChangePwd === void 0 ? void 0 : userMustChangePwd.eMail;
153
- const userName = (_d = form.userName.value) !== null && _d !== void 0 ? _d : userMustChangePwd === null || userMustChangePwd === void 0 ? void 0 : userMustChangePwd.userName;
154
- const password = (_e = form.password.value) !== null && _e !== void 0 ? _e : userMustChangePwd === null || userMustChangePwd === void 0 ? void 0 : userMustChangePwd.password;
155
- const newPassword = form.newPassword.value;
156
- if (!(newPassword === null || newPassword === void 0 ? void 0 : newPassword.length) || !pwdAcceptable) {
157
- setError(t('login.passwordFormatError'));
158
- return;
159
- }
160
- setLoading(true);
161
- const user = {
162
- tenant: tenantID,
163
- flowID,
164
- eMail,
165
- userName,
166
- password,
167
- newPassword,
168
- };
169
- try {
170
- const { user: patchedUser, token, ...resp } = await userLogin(user);
171
- if (resp.resultCode !== 0) {
172
- console.error(resp);
173
- toast.error(t(getErrori18nKey(resp.resultCode)));
174
- setError(resp.resultMessage);
175
- }
176
- else if (patchedUser && token) {
177
- toast.success(t('success'));
178
- onLogin(patchedUser || user, token);
179
- }
180
- }
181
- catch (e) {
182
- let err = e;
183
- console.error('[LOGIN/CHANGE PWD]', err);
184
- if (err.message) {
185
- toast.error(err.message);
186
- setError(err.message);
187
- }
188
- }
189
- finally {
190
- setLoading(false);
191
- }
192
- };
193
215
  return (_jsx(Drawer, { open: open, onClose: onClose, className: cx('memori--login-drawer', {
194
216
  'memori--login-drawer--logged': isUserLoggedIn,
195
217
  'memori--login-drawer--signup': showSignup,
196
- }), title: _jsx("span", { className: "memori--login-drawer--title", children: isUserLoggedIn
197
- ? t('login.loggedDrawerTitle', { name: user.userName })
198
- : showSignup
199
- ? t('login.signupDrawerTitle')
200
- : t('login.loginDrawerTitle') }), children: isUserLoggedIn ? (_jsxs("div", { className: "memori--login-drawer--logged", children: [user.avatarURL && (_jsx("figure", { className: "memori--login-drawer--avatar", children: _jsx("img", { src: user.avatarURL, alt: user.userName }) })), _jsx(Button, { primary: true, onClick: () => {
201
- onLogout();
202
- }, children: t('login.logout') }), _jsx(AccountForm, { user: user, loginToken: loginToken, apiClient: apiClient, onUserUpdate: user => onLogin(user, loginToken) })] })) : ((_a = needsMissingData === null || needsMissingData === void 0 ? void 0 : needsMissingData.token) === null || _a === void 0 ? void 0 : _a.length) ? (_jsxs(_Fragment, { children: [_jsx("h3", { children: t('login.missingData') }), _jsx("p", { children: t('login.missingDataHelper') }), _jsxs("form", { className: "memori--login-drawer--form", onSubmit: updateMissingData, children: [needsMissingData.birthDate && (_jsxs(_Fragment, { children: [_jsxs("label", { htmlFor: "#birthDate", children: [t('login.birthDate'), _jsx("input", { id: "birthDate", name: "birthDate", type: "date", required: true, autoComplete: "bday" })] }), _jsx("p", { children: _jsx("small", { children: t('login.birthDateHelper') }) })] })), (needsMissingData === null || needsMissingData === void 0 ? void 0 : needsMissingData.tnCAndPPAccepted) && (_jsxs(_Fragment, { children: [_jsxs("label", { className: "memori-checkbox", children: [_jsxs("span", { className: "memori-checkbox--input-wrapper", children: [_jsx("input", { type: "checkbox", name: "tnCAndPPAccepted", className: "memori-checkbox--input" }), _jsx("span", { className: "memori-checkbox--inner" })] }), _jsxs("span", { className: "memori-checkbox--text", children: [t('login.privacyLabel'), ' ', _jsx("a", { href: `https://memori.ai/${lang}/privacy_and_cookie`, target: "_blank", rel: "noopener noreferrer", children: t('login.privacyAndCookiePolicy') }), ' ', t('login.and'), ' ', _jsx("a", { href: `https://memori.ai/${lang}/tos`, target: "_blank", rel: "noopener noreferrer", children: t('login.termsOfService') })] })] }), _jsxs("label", { className: "memori-checkbox", children: [_jsxs("span", { className: "memori-checkbox--input-wrapper", children: [_jsx("input", { type: "checkbox", name: "pAndCUAccepted", defaultChecked: user === null || user === void 0 ? void 0 : user.pAndCUAccepted, className: "memori-checkbox--input" }), _jsx("span", { className: "memori-checkbox--inner" })] }), _jsxs("span", { className: "memori-checkbox--text", children: [t('login.pAndCUAccepted'), ' ', _jsx("small", { children: _jsxs("em", { children: ["(", t('login.optional'), ")"] }) })] })] }), _jsx("p", { children: _jsx("small", { children: t('login.goToAccountToChangeYourPreferences') }) }), _jsx("p", { children: _jsx("small", { children: t('login.deepThoughtExplaination') }) })] })), _jsx(Button, { htmlType: "submit", primary: true, loading: loading, children: t('login.save') })] })] })) : (userMustChangePwd === null || userMustChangePwd === void 0 ? void 0 : userMustChangePwd.flowID) ? (_jsxs(_Fragment, { children: [_jsx("p", { children: t('login.mustChangePassword') }), _jsxs("form", { className: "memori--login-drawer--form", onSubmit: changePassword, children: [_jsx("input", { type: "hidden", name: "tenant", value: (_b = userMustChangePwd.tenant) !== null && _b !== void 0 ? _b : tenant === null || tenant === void 0 ? void 0 : tenant.name }), _jsx("input", { type: "hidden", name: "flowID", value: userMustChangePwd.flowID }), _jsx("input", { type: "hidden", name: "eMail", value: userMustChangePwd.eMail }), _jsx("input", { type: "hidden", name: "userName", value: userMustChangePwd.userName }), _jsx("input", { type: "hidden", name: "password", value: userMustChangePwd.password }), _jsxs("label", { htmlFor: "#newPassword", children: [t('login.password'), _jsx("input", { id: "newPassword", name: "newPassword", type: "password", required: true, autoComplete: "new-password", placeholder: t('login.password') || 'Password', onChange: e => setPassword(e.target.value), "aria-invalid": !pwdAcceptable })] }), !pwdAcceptable && (_jsx("p", { className: "memori--login-drawer--inline-error", children: t('login.passwordFormatError') })), _jsxs("label", { htmlFor: "#confirm-password", children: [t('login.confirmPassword'), _jsx("input", { id: "confirm-password", name: "confirmPassword", type: "password", required: true, autoComplete: "new-password", placeholder: t('login.confirmPassword') || 'Password', onChange: e => setConfirmPassword(e.target.value), "aria-invalid": !!(password === null || password === void 0 ? void 0 : password.length) &&
203
- !!(confirmPassword === null || confirmPassword === void 0 ? void 0 : confirmPassword.length) &&
204
- password !== confirmPassword })] }), !!(password === null || password === void 0 ? void 0 : password.length) &&
205
- !!(confirmPassword === null || confirmPassword === void 0 ? void 0 : confirmPassword.length) &&
206
- password !== confirmPassword && (_jsx("p", { className: "memori--login-drawer--inline-error", children: t('login.passwordMatchingError') })), _jsx("meter", { className: "memori--login-drawer--password-meter", min: 0, low: 33, high: 66, optimum: 80, max: 100, value: pwdMeterValue, id: "password-strength-meter" }), _jsx("small", { children: t(`login.pwd${pwdGreen ? 'Strong' : pwdAcceptable ? 'Acceptable' : 'Weak'}`) }), _jsx(Button, { htmlType: "submit", primary: true, loading: loading, children: t('confirm') })] })] })) : showSignup ? (_jsx(SignupForm, { tenant: tenant, apiClient: apiClient, onLogin: onLogin, goToLogin: () => setShowSignup(false), __TEST__waitingForOtp: __TEST__waitingForOtp })) : (_jsxs(_Fragment, { children: [_jsxs("form", { className: "memori--login-drawer--form", onSubmit: login, children: [_jsxs("label", { htmlFor: "#userNameOrEmail", children: [t('login.userNameOrEmail'), _jsx("input", { id: "userNameOrEmail", name: "userNameOrEmail", required: true, autoComplete: "email", placeholder: "Username/email" })] }), _jsxs("label", { htmlFor: "#password", children: ["Password", _jsx("input", { id: "password", name: "password", type: "password", required: true, autoComplete: "password", placeholder: "Password" })] }), _jsx(Button, { htmlType: "submit", primary: true, loading: loading, children: t('login.login') }), !(tenant === null || tenant === void 0 ? void 0 : tenant.disableRegistration) ? (_jsxs("p", { className: "memori--login-drawer--signup", children: [t('login.newUserSignUp'), ' ', _jsx(Button, { outlined: true, onClick: () => setShowSignup(true), children: t('login.signUp') })] })) : tenant.adminEmail ? (_jsxs("div", { className: "memori--login-drawer--signup", children: [_jsx("p", { children: t('login.registrationDisabled') }), _jsxs("p", { children: [t('login.contactAdmin'), ":", ' ', _jsx("a", { href: `mailto:${tenant.adminEmail}`, children: tenant.adminEmail })] })] })) : null] }), error && (_jsx("p", { role: "alert", className: "memori--login-drawer--error", children: error }))] })) }));
218
+ }), children: ((_a = needsMissingData === null || needsMissingData === void 0 ? void 0 : needsMissingData.token) === null || _a === void 0 ? void 0 : _a.length) ? (_jsxs(_Fragment, { children: [_jsx("h3", { children: t('login.missingData') }), _jsx("p", { children: t('login.missingDataHelper') }), _jsxs("form", { className: "memori--login-drawer--form", onSubmit: updateMissingData, children: [needsMissingData.birthDate && (_jsxs(_Fragment, { children: [_jsxs("label", { htmlFor: "#birthDate", children: [t('login.birthDate'), _jsx("input", { id: "birthDate", name: "birthDate", type: "date", required: true, onChange: e => setBirthDate(e.target.value), value: birthDate, autoComplete: "bday" })] }), _jsx("p", { children: _jsx("small", { children: t('login.birthDateHelper') }) })] })), (needsMissingData === null || needsMissingData === void 0 ? void 0 : needsMissingData.tnCAndPPAccepted) && (_jsxs(_Fragment, { children: [_jsxs("label", { className: "memori-checkbox", children: [_jsxs("span", { className: "memori-checkbox--input-wrapper", children: [_jsx("input", { type: "checkbox", name: "tnCAndPPAccepted", className: "memori-checkbox--input", onChange: e => setTnCAndPPAccepted(e.target.checked), checked: tnCAndPPAccepted }), _jsx("span", { className: "memori-checkbox--inner" })] }), _jsxs("span", { className: "memori-checkbox--text", children: [t('login.privacyLabel'), ' ', _jsx("a", { href: `https://memori.ai/${lang}/privacy_and_cookie`, target: "_blank", rel: "noopener noreferrer", children: t('login.privacyAndCookiePolicy') }), ' ', t('login.and'), ' ', _jsx("a", { href: `https://memori.ai/${lang}/tos`, target: "_blank", rel: "noopener noreferrer", children: t('login.termsOfService') })] })] }), _jsxs("label", { className: "memori-checkbox", children: [_jsxs("span", { className: "memori-checkbox--input-wrapper", children: [_jsx("input", { type: "checkbox", name: "pAndCUAccepted", onChange: e => setPAndCUAccepted(e.target.checked), checked: pAndCUAccepted, defaultChecked: user === null || user === void 0 ? void 0 : user.pAndCUAccepted, className: "memori-checkbox--input" }), _jsx("span", { className: "memori-checkbox--inner" })] }), _jsxs("span", { className: "memori-checkbox--text", children: [t('login.pAndCUAccepted'), ' ', _jsx("small", { children: _jsxs("em", { children: ["(", t('login.optional'), ")"] }) })] })] }), _jsx("p", { children: _jsx("small", { children: t('login.goToAccountToChangeYourPreferences') }) }), _jsx("p", { children: _jsx("small", { children: t('login.deepThoughtExplaination') }) })] })), error && (_jsx("p", { className: "memori--login-drawer--inline-error", children: error })), _jsx(Button, { htmlType: "submit", primary: true, loading: loading, children: t('login.save') })] })] })) : showSignup ? (_jsx(SignupForm, { tenant: tenant, apiClient: apiClient, onLogin: (_user, token) => {
219
+ setNeedsMissingData({
220
+ token: token,
221
+ birthDate: true,
222
+ tnCAndPPAccepted: true,
223
+ });
224
+ }, goToLogin: () => setShowSignup(false), __TEST__waitingForOtp: __TEST__waitingForOtp })) : showOtpCodeForm ? (_jsx(_Fragment, { children: _jsxs("div", { className: "memori--login-drawer--otp-container", children: [_jsxs("div", { className: "memori--login-drawer--otp-header", children: [otpSuccess && (_jsx("div", { className: "memori--login-drawer--otp-icon", children: "\u2705" })), _jsx("h3", { children: t('login.otpTitle') }), _jsx("p", { className: "memori--login-drawer--otp-description", children: otpSuccess
225
+ ? t('login.otpSuccessMessage')
226
+ : t('login.otpCodeDescription', { email: otpEmail }) })] }), !otpSuccess && (_jsx("div", { className: cx('memori--login-drawer--otp-form', { loading }), children: _jsxs("label", { htmlFor: "otp-code", className: "memori--login-drawer--otp-label", children: [_jsx("span", { className: "memori--login-drawer--otp-label-text", style: { textAlign: 'center' }, children: t('login.otpCode') }), _jsxs("div", { className: "memori--login-drawer--otp-input-container", children: [_jsx("input", { id: "otp-code", type: "text", className: cx('memori--login-drawer--otp-input', {
227
+ success: otpCode.length === 4 && !otpError,
228
+ error: otpError,
229
+ loading: loading,
230
+ }), value: otpCode, onChange: e => handleOtpChange(e.target.value), placeholder: "0000", maxLength: 4, autoComplete: "one-time-code", required: true, disabled: loading, "aria-describedby": "otp-help" }), loading && (_jsx("div", { className: "memori--login-drawer--otp-loading", children: _jsx("div", { className: "memori--login-drawer--otp-spinner" }) }))] }), _jsx("small", { id: "otp-help", className: "memori--login-drawer--otp-help", children: t('login.otpHelp') })] }) })), otpTimer && otpTimer > 0 && !otpSuccess && (_jsx("div", { className: "memori--login-drawer--otp-timer", children: _jsx("span", { children: t('login.otpTimer', { seconds: otpTimer }) }) })), !otpSuccess && (_jsxs("div", { className: "memori--login-drawer--otp-actions", children: [_jsx(Button, { outlined: true, onClick: () => {
231
+ setShowOtpCodeForm(false);
232
+ setOtpCode('');
233
+ setOtpError(null);
234
+ }, disabled: loading, children: t('login.backToEmail') }), _jsx(Button, { outlined: true, onClick: handleResendOtp, disabled: loading ||
235
+ isResending ||
236
+ (otpTimer && otpTimer > 0) ||
237
+ !otpEmail, loading: isResending, children: isResending ? t('login.resending') : t('login.resendOtp') })] })), otpError && (_jsxs("div", { role: "alert", className: "memori--login-drawer--otp-error", children: [_jsx("span", { className: "memori--login-drawer--otp-error-icon", children: "\u26A0\uFE0F" }), _jsx("span", { children: otpError })] }))] }) })) : showOtpForm ? (_jsx(_Fragment, { children: _jsxs("div", { className: "memori--login-drawer--otp-container", children: [_jsxs("div", { className: "memori--login-drawer--otp-header", children: [_jsx("h3", { children: t('login.otpEmailTitle') }), _jsx("p", { className: "memori--login-drawer--otp-description", children: t('login.otpEmailDescription') })] }), _jsx("div", { className: cx('memori--login-drawer--otp-form', { loading }), children: _jsxs("label", { htmlFor: "otp-email", className: "memori--login-drawer--otp-label", children: [_jsx("span", { className: "memori--login-drawer--otp-label-text", children: t('login.email') }), _jsxs("div", { className: "memori--login-drawer--otp-input-container", children: [_jsx("input", { id: "otp-email", type: "email", className: cx('memori--login-drawer--otp-email-input', {
238
+ error: otpError && !mailRegEx.test(otpEmail),
239
+ valid: emailValid && !otpError,
240
+ loading: loading,
241
+ }), value: otpEmail, onChange: e => handleEmailChange(e.target.value), placeholder: t('login.emailPlaceholder') || 'Enter your email', autoComplete: "email", required: true, disabled: loading, "aria-describedby": "email-help" }), emailValid && !loading && (_jsx("div", { className: "memori--login-drawer--otp-valid-icon", children: "\u2713" })), loading && (_jsx("div", { className: "memori--login-drawer--otp-loading", children: _jsx("div", { className: "memori--login-drawer--otp-spinner" }) }))] })] }) }), _jsxs("div", { className: "memori--login-drawer--otp-actions", children: [showOtpCodeForm && _jsx(Button, { outlined: true, onClick: () => {
242
+ setShowOtpForm(false);
243
+ setOtpEmail('');
244
+ setOtpError(null);
245
+ setEmailValid(false);
246
+ }, disabled: loading, children: t('login.backToLogin') }), _jsx(Button, { primary: true, onClick: () => {
247
+ sendOtpToEmail(otpEmail);
248
+ }, disabled: loading || !emailValid, loading: loading, children: t('login.sendOtp') })] }), otpError && (_jsxs("div", { role: "alert", className: "memori--login-drawer--otp-error", children: [_jsx("span", { className: "memori--login-drawer--otp-error-icon", children: "\u26A0\uFE0F" }), _jsx("span", { children: otpError })] }))] }) })) : null }));
207
249
  };
208
250
  export default LoginDrawer;
209
251
  //# sourceMappingURL=LoginDrawer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoginDrawer.js","sourceRoot":"","sources":["../../../src/components/LoginDrawer/LoginDrawer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LoginDrawer.js","sourceRoot":"","sources":["../../../src/components/LoginDrawer/LoginDrawer.tsx"],"names":[],"mappings":"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"}
@@ -4,5 +4,5 @@ interface ArtifactHandlerProps {
4
4
  isChatlogPanel?: boolean;
5
5
  message: Message;
6
6
  }
7
- declare const ArtifactHandler: React.FC<ArtifactHandlerProps>;
8
- export default ArtifactHandler;
7
+ declare const MemoizedArtifactHandler: React.NamedExoticComponent<ArtifactHandlerProps>;
8
+ export default MemoizedArtifactHandler;
@@ -1,15 +1,22 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState, useCallback } from 'react';
2
+ import { useEffect, useState, useMemo, useCallback, memo } from 'react';
3
3
  import { useArtifact } from '../../context/ArtifactContext';
4
4
  import ChevronRight from '../../../icons/ChevronRight';
5
5
  import ArtifactDrawer from '../ArtifactDrawer/ArtifactDrawer';
6
6
  import ChevronDown from '../../../icons/ChevronDown';
7
7
  import ChevronLeft from '../../../icons/ChevronLeft';
8
8
  import ChevronUp from '../../../icons/ChevronUp';
9
+ import { stripReasoningTags } from '../../../../helpers/utils';
9
10
  const ArtifactHandler = ({ isChatlogPanel = false, message, }) => {
10
11
  var _a, _b, _c;
11
12
  const { openArtifact, state, closeArtifact } = useArtifact();
12
13
  const [currentArtifact, setCurrentArtifact] = useState(null);
14
+ const messageText = useMemo(() => {
15
+ return message.translatedText || message.text || '';
16
+ }, [message.translatedText, message.text]);
17
+ const messageId = useMemo(() => {
18
+ return `${message.timestamp}-${message.fromUser}`;
19
+ }, [message.timestamp, message.fromUser]);
13
20
  const dispatchArtifactCreatedEvent = useCallback((artifact) => {
14
21
  const event = new CustomEvent('artifactCreated', {
15
22
  detail: {
@@ -19,60 +26,74 @@ const ArtifactHandler = ({ isChatlogPanel = false, message, }) => {
19
26
  });
20
27
  document.dispatchEvent(event);
21
28
  }, [message]);
22
- useEffect(() => {
23
- const messageText = message.translatedText || message.text || '';
24
- if (messageText.length > 0) {
25
- const artifacts = detectArtifacts(messageText);
26
- if (artifacts.length > 0) {
27
- artifacts.forEach(artifact => {
28
- dispatchArtifactCreatedEvent(artifact);
29
- });
30
- if (isChatlogPanel) {
31
- setCurrentArtifact(artifacts[0]);
32
- }
33
- else {
34
- setTimeout(() => {
35
- openArtifact(artifacts[0]);
36
- setCurrentArtifact(artifacts[0]);
37
- }, 100);
38
- }
39
- }
40
- }
41
- }, [message, dispatchArtifactCreatedEvent]);
42
- const detectArtifacts = (text) => {
43
- if (!text || message.fromUser)
29
+ const detectArtifacts = useCallback((text, isFromUser) => {
30
+ console.log('Detecting artifacts from text:', (text === null || text === void 0 ? void 0 : text.substring(0, 100)) + '...');
31
+ if (!text || isFromUser) {
32
+ console.log('No text or message is from user, returning empty array');
44
33
  return [];
45
- const artifactRegex = /<output\s+class="memori-artifact"[^>]*data-mimetype="([^"]+)"[^>]*>([\s\S]*?)<\/output>/gi;
34
+ }
35
+ text = stripReasoningTags(text);
46
36
  const artifacts = [];
47
- let match;
37
+ const artifactRegex = /<output\s+class="memori-artifact"[^>]*data-mimetype="([^"]+)"[^>]*>([\s\S]*?)<\/output>/gi;
48
38
  const titleRegex = {
49
39
  dataTitle: /data-title\s*=\s*["\']([^"']+)["\']/i,
50
40
  htmlTitle: /<title>([^<]+)<\/title>/gi
51
41
  };
52
42
  const findTitle = (mimeType, content) => {
53
43
  var _a, _b;
44
+ console.log('Finding title for mimetype:', mimeType);
54
45
  return ((_a = titleRegex.dataTitle.exec(content)) === null || _a === void 0 ? void 0 : _a[1]) || ((_b = titleRegex.htmlTitle.exec(content)) === null || _b === void 0 ? void 0 : _b[1]) || `${mimeType.toUpperCase()} Artifact`;
55
46
  };
47
+ let match;
56
48
  while ((match = artifactRegex.exec(text)) !== null) {
49
+ console.log('Found complete artifact match', match);
57
50
  const mimeType = match[1];
58
51
  const content = match[2].trim();
52
+ console.log('Artifact mimetype:', mimeType);
53
+ console.log('Content length:', content.length);
59
54
  if (content.length > 50) {
60
- artifacts.push({
61
- id: `artifact-${Date.now()}-${Math.random()
62
- .toString(36)
63
- .substr(2, 9)}`,
55
+ const artifact = {
56
+ id: `artifact-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
64
57
  content,
65
58
  mimeType,
66
59
  title: findTitle(mimeType, text),
67
60
  timestamp: new Date(),
68
61
  size: content.length,
62
+ };
63
+ console.log('Created artifact:', {
64
+ id: artifact.id,
65
+ mimeType: artifact.mimeType,
66
+ title: artifact.title,
67
+ size: artifact.size
69
68
  });
69
+ artifacts.push(artifact);
70
+ }
71
+ else {
72
+ console.log('Skipping artifact - content too short');
70
73
  }
71
74
  }
75
+ console.log('Detected artifacts:', artifacts.length);
72
76
  return artifacts;
73
- };
74
- const messageText = message.translatedText || message.text || '';
75
- const artifacts = detectArtifacts(messageText);
77
+ }, []);
78
+ const artifacts = useMemo(() => {
79
+ return detectArtifacts(messageText, message.fromUser || false);
80
+ }, [messageText, message.fromUser, detectArtifacts]);
81
+ useEffect(() => {
82
+ if (messageText.length > 0 && artifacts.length > 0) {
83
+ artifacts.forEach(artifact => {
84
+ dispatchArtifactCreatedEvent(artifact);
85
+ });
86
+ if (isChatlogPanel) {
87
+ setCurrentArtifact(artifacts[0]);
88
+ }
89
+ else {
90
+ setTimeout(() => {
91
+ openArtifact(artifacts[0]);
92
+ setCurrentArtifact(artifacts[0]);
93
+ }, 100);
94
+ }
95
+ }
96
+ }, [messageId, artifacts, dispatchArtifactCreatedEvent, isChatlogPanel, openArtifact]);
76
97
  if (artifacts.length === 0)
77
98
  return null;
78
99
  return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: [_jsxs("div", { className: "memori-artifact-handler", onClick: () => {
@@ -97,5 +118,13 @@ const formatBytes = (bytes) => {
97
118
  const i = Math.floor(Math.log(bytes) / Math.log(k));
98
119
  return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
99
120
  };
100
- export default ArtifactHandler;
121
+ const MemoizedArtifactHandler = memo(ArtifactHandler, (prevProps, nextProps) => {
122
+ const prevMessageText = prevProps.message.translatedText || prevProps.message.text || '';
123
+ const nextMessageText = nextProps.message.translatedText || nextProps.message.text || '';
124
+ return (prevProps.isChatlogPanel === nextProps.isChatlogPanel &&
125
+ prevMessageText === nextMessageText &&
126
+ prevProps.message.fromUser === nextProps.message.fromUser &&
127
+ prevProps.message.timestamp === nextProps.message.timestamp);
128
+ });
129
+ export default MemoizedArtifactHandler;
101
130
  //# sourceMappingURL=ArtifactHandler.js.map