@memori.ai/memori-react 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +12 -2
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.d.ts +7 -0
  4. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +39 -0
  5. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -0
  6. package/dist/components/AgeVerificationModal/AgeVerificationModal.test.d.ts +1 -0
  7. package/dist/components/AgeVerificationModal/AgeVerificationModal.test.js +27 -0
  8. package/dist/components/AgeVerificationModal/AgeVerificationModal.test.js.map +1 -0
  9. package/dist/components/AttachmentLinkModal/AttachmentLinkModal.stories.d.ts +2 -2
  10. package/dist/components/AttachmentMediaModal/AttachmentMediaModal.stories.d.ts +2 -2
  11. package/dist/components/Auth/Auth.stories.d.ts +5 -5
  12. package/dist/components/Avatar/Avatar.js +2 -2
  13. package/dist/components/Avatar/Avatar.js.map +1 -1
  14. package/dist/components/Avatar/Avatar.stories.d.ts +5 -5
  15. package/dist/components/AvatarView/AvatarView.stories.d.ts +10 -10
  16. package/dist/components/AvatarView/components/fullbodyAvatar.d.ts +2 -1
  17. package/dist/components/AvatarView/components/fullbodyAvatar.js +6 -3
  18. package/dist/components/AvatarView/components/fullbodyAvatar.js.map +1 -1
  19. package/dist/components/AvatarView/components/loader.js +3 -1
  20. package/dist/components/AvatarView/components/loader.js.map +1 -1
  21. package/dist/components/AvatarView/index.d.ts +2 -1
  22. package/dist/components/AvatarView/index.js +2 -2
  23. package/dist/components/AvatarView/index.js.map +1 -1
  24. package/dist/components/AvatarView/utils/useMouthSpeaking.js +3 -1
  25. package/dist/components/AvatarView/utils/useMouthSpeaking.js.map +1 -1
  26. package/dist/components/Blob/Blob.stories.d.ts +4 -4
  27. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.stories.d.ts +5 -5
  28. package/dist/components/ChangeMode/ChangeMode.stories.d.ts +3 -3
  29. package/dist/components/Chat/Chat.stories.d.ts +12 -12
  30. package/dist/components/ChatBubble/ChatBubble.stories.d.ts +7 -7
  31. package/dist/components/ChatInputs/ChatInputs.js +2 -1
  32. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  33. package/dist/components/ChatInputs/ChatInputs.stories.d.ts +9 -9
  34. package/dist/components/ChatTextArea/ChatTextArea.stories.d.ts +4 -4
  35. package/dist/components/CustomGLBModelViewer/ModelViewer.stories.d.ts +2 -2
  36. package/dist/components/DateSelector/DateSelector.d.ts +9 -0
  37. package/dist/components/DateSelector/DateSelector.js +61 -0
  38. package/dist/components/DateSelector/DateSelector.js.map +1 -0
  39. package/dist/components/DateSelector/DateSelector.test.d.ts +1 -0
  40. package/dist/components/DateSelector/DateSelector.test.js +24 -0
  41. package/dist/components/DateSelector/DateSelector.test.js.map +1 -0
  42. package/dist/components/ExportHistoryButton/ExportHistoryButton.stories.d.ts +5 -5
  43. package/dist/components/FeedbackButtons/FeedbackButtons.stories.d.ts +4 -4
  44. package/dist/components/Header/Header.d.ts +1 -0
  45. package/dist/components/Header/Header.js +26 -2
  46. package/dist/components/Header/Header.js.map +1 -1
  47. package/dist/components/Header/Header.stories.d.ts +7 -7
  48. package/dist/components/ImageUpload/ImageUpload.stories.d.ts +8 -8
  49. package/dist/components/MediaWidget/LinkItemWidget.d.ts +2 -1
  50. package/dist/components/MediaWidget/LinkItemWidget.js +10 -2
  51. package/dist/components/MediaWidget/LinkItemWidget.js.map +1 -1
  52. package/dist/components/MediaWidget/LinkItemWidget.stories.d.ts +2 -2
  53. package/dist/components/MediaWidget/MediaItemWidget.d.ts +3 -1
  54. package/dist/components/MediaWidget/MediaItemWidget.js +44 -72
  55. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  56. package/dist/components/MediaWidget/MediaItemWidget.stories.d.ts +3 -3
  57. package/dist/components/MediaWidget/MediaWidget.js +10 -7
  58. package/dist/components/MediaWidget/MediaWidget.js.map +1 -1
  59. package/dist/components/MediaWidget/MediaWidget.stories.d.ts +5 -5
  60. package/dist/components/MemoriWidget/MemoriWidget.d.ts +3 -2
  61. package/dist/components/MemoriWidget/MemoriWidget.js +92 -25
  62. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  63. package/dist/components/MemoriWidget/MemoriWidget.stories.d.ts +8 -8
  64. package/dist/components/PoweredBy/PoweredBy.stories.d.ts +4 -4
  65. package/dist/components/SendOnEnterMenu/SendOnEnterMenu.stories.d.ts +3 -3
  66. package/dist/components/SettingsDrawer/SettingsDrawer.d.ts +13 -0
  67. package/dist/components/SettingsDrawer/SettingsDrawer.js +27 -0
  68. package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -0
  69. package/dist/components/SettingsDrawer/SettingsDrawer.test.d.ts +1 -0
  70. package/dist/components/SettingsDrawer/SettingsDrawer.test.js +27 -0
  71. package/dist/components/SettingsDrawer/SettingsDrawer.test.js.map +1 -0
  72. package/dist/components/ShareButton/ShareButton.stories.d.ts +4 -4
  73. package/dist/components/Snippet/Snippet.stories.d.ts +15 -15
  74. package/dist/components/StartPanel/StartPanel.d.ts +1 -1
  75. package/dist/components/StartPanel/StartPanel.js +10 -7
  76. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  77. package/dist/components/StartPanel/StartPanel.stories.d.ts +6 -6
  78. package/dist/components/StartPanel/StartPanel.test.js +7 -0
  79. package/dist/components/StartPanel/StartPanel.test.js.map +1 -1
  80. package/dist/components/UploadMenu/UploadMenu.stories.d.ts +4 -4
  81. package/dist/components/icons/Refresh.d.ts +5 -0
  82. package/dist/components/icons/Refresh.js +6 -0
  83. package/dist/components/icons/Refresh.js.map +1 -0
  84. package/dist/components/icons/SelectIcon.d.ts +5 -0
  85. package/dist/components/icons/SelectIcon.js +6 -0
  86. package/dist/components/icons/SelectIcon.js.map +1 -0
  87. package/dist/components/icons/icons.stories.d.ts +2 -2
  88. package/dist/components/layouts/FullPage.d.ts +17 -0
  89. package/dist/components/layouts/FullPage.js +8 -0
  90. package/dist/components/layouts/FullPage.js.map +1 -0
  91. package/dist/components/layouts/FullPage.test.d.ts +1 -0
  92. package/dist/components/layouts/FullPage.test.js +12 -0
  93. package/dist/components/layouts/FullPage.test.js.map +1 -0
  94. package/dist/components/layouts/Totem.d.ts +17 -0
  95. package/dist/components/layouts/Totem.js +8 -0
  96. package/dist/components/layouts/Totem.js.map +1 -0
  97. package/dist/components/layouts/Totem.test.d.ts +1 -0
  98. package/dist/components/layouts/Totem.test.js +12 -0
  99. package/dist/components/layouts/Totem.test.js.map +1 -0
  100. package/dist/components/ui/Button.stories.d.ts +14 -14
  101. package/dist/components/ui/Card.stories.d.ts +7 -7
  102. package/dist/components/ui/Checkbox.d.ts +2 -0
  103. package/dist/components/ui/Checkbox.js +2 -2
  104. package/dist/components/ui/Checkbox.js.map +1 -1
  105. package/dist/components/ui/Checkbox.stories.d.ts +5 -5
  106. package/dist/components/ui/Drawer.stories.d.ts +9 -9
  107. package/dist/components/ui/Modal.stories.d.ts +9 -9
  108. package/dist/components/ui/Select.d.ts +15 -0
  109. package/dist/components/ui/Select.js +17 -0
  110. package/dist/components/ui/Select.js.map +1 -0
  111. package/dist/components/ui/Select.test.d.ts +1 -0
  112. package/dist/components/ui/Select.test.js +47 -0
  113. package/dist/components/ui/Select.test.js.map +1 -0
  114. package/dist/components/ui/Spin.stories.d.ts +4 -4
  115. package/dist/components/ui/Tooltip.stories.d.ts +6 -6
  116. package/dist/components/ui/definitions.stories.d.ts +2 -3
  117. package/dist/helpers/configuration.js +2 -0
  118. package/dist/helpers/configuration.js.map +1 -1
  119. package/dist/helpers/utils.js +1 -1
  120. package/dist/helpers/utils.js.map +1 -1
  121. package/dist/index.d.ts +2 -0
  122. package/dist/index.js +2 -2
  123. package/dist/index.js.map +1 -1
  124. package/dist/index.stories.d.ts +2 -2
  125. package/dist/locales/en.json +17 -0
  126. package/dist/locales/it.json +17 -0
  127. package/dist/mocks/data.js +5 -2
  128. package/dist/mocks/data.js.map +1 -1
  129. package/esm/components/AgeVerificationModal/AgeVerificationModal.d.ts +7 -0
  130. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +36 -0
  131. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -0
  132. package/esm/components/AgeVerificationModal/AgeVerificationModal.test.d.ts +1 -0
  133. package/esm/components/AgeVerificationModal/AgeVerificationModal.test.js +24 -0
  134. package/esm/components/AgeVerificationModal/AgeVerificationModal.test.js.map +1 -0
  135. package/esm/components/Avatar/Avatar.js +2 -2
  136. package/esm/components/Avatar/Avatar.js.map +1 -1
  137. package/esm/components/AvatarView/components/fullbodyAvatar.d.ts +2 -1
  138. package/esm/components/AvatarView/components/fullbodyAvatar.js +7 -4
  139. package/esm/components/AvatarView/components/fullbodyAvatar.js.map +1 -1
  140. package/esm/components/AvatarView/components/loader.js +2 -1
  141. package/esm/components/AvatarView/components/loader.js.map +1 -1
  142. package/esm/components/AvatarView/index.d.ts +2 -1
  143. package/esm/components/AvatarView/index.js +2 -2
  144. package/esm/components/AvatarView/index.js.map +1 -1
  145. package/esm/components/AvatarView/utils/useMouthSpeaking.js +3 -1
  146. package/esm/components/AvatarView/utils/useMouthSpeaking.js.map +1 -1
  147. package/esm/components/ChatInputs/ChatInputs.js +2 -1
  148. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  149. package/esm/components/DateSelector/DateSelector.d.ts +9 -0
  150. package/esm/components/DateSelector/DateSelector.js +58 -0
  151. package/esm/components/DateSelector/DateSelector.js.map +1 -0
  152. package/esm/components/DateSelector/DateSelector.test.d.ts +1 -0
  153. package/esm/components/DateSelector/DateSelector.test.js +21 -0
  154. package/esm/components/DateSelector/DateSelector.test.js.map +1 -0
  155. package/esm/components/Header/Header.d.ts +1 -0
  156. package/esm/components/Header/Header.js +26 -2
  157. package/esm/components/Header/Header.js.map +1 -1
  158. package/esm/components/MediaWidget/LinkItemWidget.d.ts +2 -1
  159. package/esm/components/MediaWidget/LinkItemWidget.js +10 -2
  160. package/esm/components/MediaWidget/LinkItemWidget.js.map +1 -1
  161. package/esm/components/MediaWidget/MediaItemWidget.d.ts +3 -1
  162. package/esm/components/MediaWidget/MediaItemWidget.js +44 -72
  163. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  164. package/esm/components/MediaWidget/MediaWidget.js +11 -8
  165. package/esm/components/MediaWidget/MediaWidget.js.map +1 -1
  166. package/esm/components/MemoriWidget/MemoriWidget.d.ts +3 -2
  167. package/esm/components/MemoriWidget/MemoriWidget.js +92 -25
  168. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  169. package/esm/components/SettingsDrawer/SettingsDrawer.d.ts +13 -0
  170. package/esm/components/SettingsDrawer/SettingsDrawer.js +24 -0
  171. package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -0
  172. package/esm/components/SettingsDrawer/SettingsDrawer.test.d.ts +1 -0
  173. package/esm/components/SettingsDrawer/SettingsDrawer.test.js +24 -0
  174. package/esm/components/SettingsDrawer/SettingsDrawer.test.js.map +1 -0
  175. package/esm/components/StartPanel/StartPanel.d.ts +1 -1
  176. package/esm/components/StartPanel/StartPanel.js +10 -7
  177. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  178. package/esm/components/StartPanel/StartPanel.test.js +7 -0
  179. package/esm/components/StartPanel/StartPanel.test.js.map +1 -1
  180. package/esm/components/icons/Refresh.d.ts +5 -0
  181. package/esm/components/icons/Refresh.js +4 -0
  182. package/esm/components/icons/Refresh.js.map +1 -0
  183. package/esm/components/icons/SelectIcon.d.ts +5 -0
  184. package/esm/components/icons/SelectIcon.js +4 -0
  185. package/esm/components/icons/SelectIcon.js.map +1 -0
  186. package/esm/components/layouts/FullPage.d.ts +17 -0
  187. package/esm/components/layouts/FullPage.js +5 -0
  188. package/esm/components/layouts/FullPage.js.map +1 -0
  189. package/esm/components/layouts/FullPage.test.d.ts +1 -0
  190. package/esm/components/layouts/FullPage.test.js +9 -0
  191. package/esm/components/layouts/FullPage.test.js.map +1 -0
  192. package/esm/components/layouts/Totem.d.ts +17 -0
  193. package/esm/components/layouts/Totem.js +5 -0
  194. package/esm/components/layouts/Totem.js.map +1 -0
  195. package/esm/components/layouts/Totem.test.d.ts +1 -0
  196. package/esm/components/layouts/Totem.test.js +9 -0
  197. package/esm/components/layouts/Totem.test.js.map +1 -0
  198. package/esm/components/ui/Checkbox.d.ts +2 -0
  199. package/esm/components/ui/Checkbox.js +2 -2
  200. package/esm/components/ui/Checkbox.js.map +1 -1
  201. package/esm/components/ui/Select.d.ts +15 -0
  202. package/esm/components/ui/Select.js +14 -0
  203. package/esm/components/ui/Select.js.map +1 -0
  204. package/esm/components/ui/Select.test.d.ts +1 -0
  205. package/esm/components/ui/Select.test.js +44 -0
  206. package/esm/components/ui/Select.test.js.map +1 -0
  207. package/esm/helpers/configuration.js +2 -0
  208. package/esm/helpers/configuration.js.map +1 -1
  209. package/esm/helpers/utils.js +1 -1
  210. package/esm/helpers/utils.js.map +1 -1
  211. package/esm/index.d.ts +2 -0
  212. package/esm/index.js +2 -2
  213. package/esm/index.js.map +1 -1
  214. package/esm/locales/en.json +17 -0
  215. package/esm/locales/it.json +17 -0
  216. package/esm/mocks/data.js +5 -2
  217. package/esm/mocks/data.js.map +1 -1
  218. package/package.json +20 -16
  219. package/src/components/AgeVerificationModal/AgeVerificationModal.css +63 -0
  220. package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +41 -0
  221. package/src/components/AgeVerificationModal/AgeVerificationModal.test.tsx +33 -0
  222. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +89 -0
  223. package/src/components/AgeVerificationModal/__snapshots__/AgeVerificationModal.test.tsx.snap +19 -0
  224. package/src/components/Avatar/Avatar.stories.tsx +20 -1
  225. package/src/components/Avatar/Avatar.tsx +2 -1
  226. package/src/components/Avatar/__snapshots__/Avatar.test.tsx.snap +2 -2
  227. package/src/components/AvatarView/AvatarView.stories.tsx +31 -0
  228. package/src/components/AvatarView/components/fullbodyAvatar.tsx +8 -6
  229. package/src/components/AvatarView/components/loader.tsx +15 -12
  230. package/src/components/AvatarView/index.tsx +4 -1
  231. package/src/components/AvatarView/utils/useMouthSpeaking.ts +3 -1
  232. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +67 -67
  233. package/src/components/ChatBubble/ChatBubble.css +1 -2
  234. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +4 -4
  235. package/src/components/ChatInputs/ChatInputs.css +14 -3
  236. package/src/components/ChatInputs/ChatInputs.tsx +2 -0
  237. package/src/components/ChatInputs/__snapshots__/ChatInputs.test.tsx.snap +5 -5
  238. package/src/components/DateSelector/DateSelector.css +135 -0
  239. package/src/components/DateSelector/DateSelector.stories.tsx +34 -0
  240. package/src/components/DateSelector/DateSelector.test.tsx +38 -0
  241. package/src/components/DateSelector/DateSelector.tsx +203 -0
  242. package/src/components/DateSelector/__snapshots__/DateSelector.test.tsx.snap +14938 -0
  243. package/src/components/Header/Header.stories.tsx +23 -5
  244. package/src/components/Header/Header.tsx +47 -1
  245. package/src/components/MediaWidget/LinkItemWidget.tsx +20 -1
  246. package/src/components/MediaWidget/MediaItemWidget.css +67 -0
  247. package/src/components/MediaWidget/MediaItemWidget.tsx +72 -71
  248. package/src/components/MediaWidget/MediaWidget.css +9 -0
  249. package/src/components/MediaWidget/MediaWidget.stories.tsx +8 -0
  250. package/src/components/MediaWidget/MediaWidget.tsx +44 -27
  251. package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +1 -1
  252. package/src/components/MemoriWidget/MemoriWidget.css +1 -1
  253. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +12 -0
  254. package/src/components/MemoriWidget/MemoriWidget.tsx +178 -33
  255. package/src/components/SettingsDrawer/SettingsDrawer.css +5 -0
  256. package/src/components/SettingsDrawer/SettingsDrawer.stories.tsx +57 -0
  257. package/src/components/SettingsDrawer/SettingsDrawer.test.tsx +61 -0
  258. package/src/components/SettingsDrawer/SettingsDrawer.tsx +108 -0
  259. package/src/components/SettingsDrawer/__snapshots__/SettingsDrawer.test.tsx.snap +19 -0
  260. package/src/components/StartPanel/StartPanel.css +8 -2
  261. package/src/components/StartPanel/StartPanel.stories.tsx +66 -2
  262. package/src/components/StartPanel/StartPanel.test.tsx +21 -0
  263. package/src/components/StartPanel/StartPanel.tsx +28 -23
  264. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +420 -67
  265. package/src/components/icons/Refresh.tsx +30 -0
  266. package/src/components/icons/SelectIcon.tsx +28 -0
  267. package/src/components/layouts/FullPage.test.tsx +17 -0
  268. package/src/components/layouts/{Default.tsx → FullPage.tsx} +2 -2
  269. package/src/components/layouts/Totem.test.tsx +17 -0
  270. package/src/components/layouts/Totem.tsx +52 -0
  271. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +391 -0
  272. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +422 -0
  273. package/src/components/layouts/layouts.stories.tsx +155 -0
  274. package/src/components/layouts/totem.css +148 -0
  275. package/src/components/ui/Button.css +4 -0
  276. package/src/components/ui/Checkbox.tsx +6 -0
  277. package/src/components/ui/Drawer.css +24 -2
  278. package/src/components/ui/Select.css +135 -0
  279. package/src/components/ui/Select.stories.tsx +79 -0
  280. package/src/components/ui/Select.test.tsx +84 -0
  281. package/src/components/ui/Select.tsx +73 -0
  282. package/src/components/ui/Spin.css +2 -0
  283. package/src/components/ui/__snapshots__/Select.test.tsx.snap +278 -0
  284. package/src/helpers/configuration.ts +4 -2
  285. package/src/helpers/utils.ts +3 -2
  286. package/src/index.stories.tsx +41 -1
  287. package/src/index.tsx +7 -2
  288. package/src/locales/en.json +17 -0
  289. package/src/locales/it.json +17 -0
  290. package/src/mocks/data.ts +5 -2
  291. package/src/styles.css +24 -2
@@ -15,13 +15,16 @@ import Header from '../Header/Header';
15
15
  import AttachmentMediaModal from '../AttachmentMediaModal/AttachmentMediaModal';
16
16
  import AttachmentLinkModal from '../AttachmentLinkModal/AttachmentLinkModal';
17
17
  import PoweredBy from '../PoweredBy/PoweredBy';
18
- import DefaultLayout from '../layouts/Default';
18
+ import FullPageLayout from '../layouts/FullPage';
19
+ import TotemLayout from '../layouts/Totem';
19
20
  import { getTranslation } from '../../helpers/translations';
20
21
  import { setLocalConfig, getLocalConfig } from '../../helpers/configuration';
21
22
  import { hasTouchscreen, stripDuplicates } from '../../helpers/utils';
22
23
  import { anonTag } from '../../helpers/constants';
23
24
  import { getErrori18nKey } from '../../helpers/error';
24
25
  import { getGamificationLevel } from '../../helpers/statistics';
26
+ import AgeVerificationModal from '../AgeVerificationModal/AgeVerificationModal';
27
+ import SettingsDrawer from '../SettingsDrawer/SettingsDrawer';
25
28
  const getMemoriState = (integrationId) => {
26
29
  var _a, _b, _c, _d, _f;
27
30
  let widget = integrationId
@@ -74,13 +77,12 @@ const typeMessage = (message) => {
74
77
  };
75
78
  window.getMemoriState = getMemoriState;
76
79
  window.typeMessage = typeMessage;
77
- const silenceSeconds = [2, 3, 5, 10, 15, 20, 30, 60];
78
80
  let recognizer;
79
81
  let speechConfig;
80
82
  let speechSynthesizer;
81
83
  let audioDestination;
82
84
  let audioContext;
83
- const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInstruct = false, showShare = true, preview = false, embed = false, showInputs = true, showDates = false, showContextPerLine = false, showSettings = false, 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, }) => {
85
+ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, layout = 'DEFAULT', showInstruct = false, showShare = true, 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, }) => {
84
86
  var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _t, _u, _v;
85
87
  const { t, i18n } = useTranslation();
86
88
  const [isClient, setIsClient] = useState(false);
@@ -89,7 +91,6 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
89
91
  }, []);
90
92
  const client = memoriApiClient(apiUrl);
91
93
  const { initSession, postTextEnteredEvent, postPlaceChangedEvent, postTimeoutEvent, postTagChangedEvent, getSession, getContentQualityIndexes, } = client;
92
- const { uploadAsset, getUploadAssetURL, deleteAsset } = client.backend;
93
94
  const [instruct, setInstruct] = useState(false);
94
95
  const [clickedStart, setClickedStart] = useState(false);
95
96
  const [gotErrorInOpening, setGotErrorInOpening] = useState(false);
@@ -101,21 +102,24 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
101
102
  const isMultilanguageEnabled = !!(integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.multilanguage);
102
103
  const [loading, setLoading] = useState(false);
103
104
  const [memoriTyping, setMemoriTyping] = useState(false);
105
+ const selectedLayout = layout || (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.layout) || 'DEFAULT';
104
106
  const [hasUserActivatedSpeak, setHasUserActivatedSpeak] = useState(false);
105
107
  const [hasUserActivatedListening, setHasUserActivatedListening] = useState(false);
106
108
  const [showPositionDrawer, setShowPositionDrawer] = useState(false);
107
109
  const [showSettingsDrawer, setShowSettingsDrawer] = useState(false);
108
110
  const [muteSpeaker, setMuteSpeaker] = useState(false);
109
111
  const [continuousSpeech, setContinuousSpeech] = useState(true);
110
- const [continuousSpeechTimeout, setContinuousSpeechTimeout] = useState(3);
112
+ const [continuousSpeechTimeout, setContinuousSpeechTimeout] = useState(2);
111
113
  const [isPlayingAudio, setIsPlayingAudio] = useState(false);
114
+ const [controlsPosition, setControlsPosition] = useState('center');
112
115
  useEffect(() => {
113
116
  setIsPlayingAudio(!!speechSynthesizer);
114
117
  }, [speechSynthesizer]);
115
118
  useEffect(() => {
116
119
  setMuteSpeaker(getLocalConfig('muteSpeaker', false));
117
120
  setContinuousSpeech(getLocalConfig('continuousSpeech', true));
118
- setContinuousSpeechTimeout(getLocalConfig('continuousSpeechTimeout', 3));
121
+ setContinuousSpeechTimeout(getLocalConfig('continuousSpeechTimeout', 2));
122
+ setControlsPosition(getLocalConfig('controlsPosition', 'center'));
119
123
  }, []);
120
124
  const [memoriPwd, setMemoriPwd] = useState(secret);
121
125
  const [memoriTokens, setMemoriTokens] = useState();
@@ -325,6 +329,15 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
325
329
  }
326
330
  return translatedState;
327
331
  };
332
+ const minAge = memori.ageRestriction
333
+ ? memori.ageRestriction
334
+ : memori.nsfw
335
+ ? 18
336
+ : memori.enableCompletions
337
+ ? 14
338
+ : 0;
339
+ const [birthDate, setBirthDate] = useState();
340
+ const [showAgeVerification, setShowAgeVerification] = useState(false);
328
341
  const [sessionId, setSessionId] = useState(initialSessionID);
329
342
  const [currentDialogState, _setCurrentDialogState] = useState();
330
343
  const setCurrentDialogState = (state) => {
@@ -342,6 +355,11 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
342
355
  setAuthModalState('password');
343
356
  return;
344
357
  }
358
+ let storageBirthDate = getLocalConfig('birthDate', undefined);
359
+ if (!(birthDate || storageBirthDate) && !!minAge) {
360
+ setShowAgeVerification(true);
361
+ return;
362
+ }
345
363
  setLoading(true);
346
364
  try {
347
365
  if (!memori.giverTag && !!((_a = memori.receivedInvitations) === null || _a === void 0 ? void 0 : _a.length)) {
@@ -364,6 +382,11 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
364
382
  sessionID: session.sessionID,
365
383
  };
366
384
  }
385
+ else if (session === null || session === void 0 ? void 0 : session.resultMessage.startsWith('This Memori is aged restricted')) {
386
+ console.error(session);
387
+ message.error(t('underageTwinSession', { age: minAge }));
388
+ setGotErrorInOpening(true);
389
+ }
367
390
  else {
368
391
  console.error(session);
369
392
  message.error(t(getErrori18nKey(session === null || session === void 0 ? void 0 : session.resultCode)));
@@ -375,10 +398,11 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
375
398
  new Error('Error fetching session');
376
399
  }
377
400
  };
378
- const reopenSession = async (updateDialogState = false, password, recoveryTokens, tag, pin, initialContextVars, initialQuestion) => {
401
+ const reopenSession = async (updateDialogState = false, password, recoveryTokens, tag, pin, initialContextVars, initialQuestion, birthDate) => {
379
402
  var _a;
380
403
  setLoading(true);
381
404
  try {
405
+ let storageBirthDate = getLocalConfig('birthDate', undefined);
382
406
  const { sessionID, currentState, ...response } = await initSession({
383
407
  memoriID: (_a = memori.engineMemoriID) !== null && _a !== void 0 ? _a : '',
384
408
  password,
@@ -387,6 +411,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
387
411
  pin,
388
412
  initialContextVars,
389
413
  initialQuestion,
414
+ birthDate: birthDate || storageBirthDate || undefined,
390
415
  });
391
416
  if (sessionID && currentState && response.resultCode === 0) {
392
417
  setSessionId(sessionID);
@@ -416,6 +441,11 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
416
441
  sessionID,
417
442
  };
418
443
  }
444
+ else if (response === null || response === void 0 ? void 0 : response.resultMessage.startsWith('This Memori is aged restricted')) {
445
+ console.error(response);
446
+ message.error(t('underageTwinSession', { age: minAge }));
447
+ setGotErrorInOpening(true);
448
+ }
419
449
  else {
420
450
  console.error(response);
421
451
  message.error(t(getErrori18nKey(response.resultCode)));
@@ -459,6 +489,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
459
489
  }
460
490
  else if ([400, 401, 403, 404, 500].includes(resultCode)) {
461
491
  console.warn('[APPCONTEXT/CHANGETAG]', resultCode);
492
+ let storageBirthDate = getLocalConfig('birthDate', undefined);
462
493
  fetchSession({
463
494
  memoriID: (_a = memori.engineMemoriID) !== null && _a !== void 0 ? _a : '',
464
495
  password: secret || memori.secretToken,
@@ -466,6 +497,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
466
497
  pin: memori.giverPIN,
467
498
  initialContextVars,
468
499
  initialQuestion,
500
+ birthDate: birthDate || storageBirthDate || undefined,
469
501
  });
470
502
  }
471
503
  else if (!!currentState) {
@@ -746,6 +778,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
746
778
  const speak = (text) => {
747
779
  if (!AZURE_COGNITIVE_SERVICES_TTS_KEY)
748
780
  return;
781
+ stopListening();
749
782
  if (preview)
750
783
  return;
751
784
  if (muteSpeaker) {
@@ -754,9 +787,6 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
754
787
  }
755
788
  return;
756
789
  }
757
- if (listening) {
758
- stopListening();
759
- }
760
790
  if (audioDestination)
761
791
  audioDestination.pause();
762
792
  let isSafari = window.navigator.userAgent.includes('Safari') &&
@@ -811,9 +841,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
811
841
  audioDestination.onAudioEnd = () => {
812
842
  setIsPlayingAudio(false);
813
843
  source.disconnect();
814
- if (continuousSpeech) {
815
- document.dispatchEvent(new Event('endSpeakStartListen'));
816
- }
844
+ onEndSpeakStartListen();
817
845
  };
818
846
  setIsPlayingAudio(true);
819
847
  speechSynthesizer.speakSsmlAsync(`<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xmlns:emo="http://www.w3.org/2009/10/emotionml" xml:lang="${getCultureCodeByLanguage(userLang)}"><voice name="${getTTSVoice(userLang)}"><s>${replaceTextWithPhonemes(text, userLang.toLowerCase())}</s></voice></speak>`, result => {
@@ -941,6 +969,8 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
941
969
  recognizer = new speechSdk.SpeechRecognizer(speechConfig, audioConfig);
942
970
  setListening(true);
943
971
  recognizer.recognized = (_s, e) => {
972
+ if (!e.result.text)
973
+ return;
944
974
  if (e.result.reason === speechSdk.ResultReason.RecognizedSpeech) {
945
975
  let transcript = e.result.text;
946
976
  setTranscript(transcript || '');
@@ -1014,7 +1044,10 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1014
1044
  }
1015
1045
  }, [continuousSpeech, hasUserActivatedListening]);
1016
1046
  useEffect(() => {
1017
- if (!isPlayingAudio && continuousSpeech && hasUserActivatedListening)
1047
+ if (history.length > 1 &&
1048
+ !isPlayingAudio &&
1049
+ continuousSpeech &&
1050
+ (hasUserActivatedListening || !requestedListening))
1018
1051
  startListening();
1019
1052
  else if (isPlayingAudio && listening) {
1020
1053
  stopListening();
@@ -1094,8 +1127,10 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1094
1127
  : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showAIicon;
1095
1128
  const [avatar3dVisible, setAvatar3dVisible] = useState(false);
1096
1129
  useEffect(() => {
1097
- if (window.innerWidth >= 768)
1130
+ if ((window.innerWidth >= 768 && selectedLayout === 'FULLPAGE') ||
1131
+ selectedLayout !== 'FULLPAGE') {
1098
1132
  setAvatar3dVisible(true);
1133
+ }
1099
1134
  }, []);
1100
1135
  const [gamificationLevel, setGamificationLevel] = useState();
1101
1136
  const getGamificationPoints = async (memoriID) => {
@@ -1205,6 +1240,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1205
1240
  };
1206
1241
  const simulateUserPrompt = (text, translatedText) => {
1207
1242
  stopListening();
1243
+ stopAudio();
1208
1244
  sendMessage(text, undefined, undefined, false, translatedText);
1209
1245
  };
1210
1246
  const onClickStart = async (session) => {
@@ -1220,6 +1256,8 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1220
1256
  console.error('error playing intro audio', e);
1221
1257
  });
1222
1258
  }
1259
+ let storageBirthDate = getLocalConfig('birthDate', undefined);
1260
+ let birth = birthDate || storageBirthDate || undefined;
1223
1261
  if ((!sessionID &&
1224
1262
  memori.privacyType !== 'PUBLIC' &&
1225
1263
  !memori.secretToken &&
@@ -1230,6 +1268,10 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1230
1268
  setClickedStart(false);
1231
1269
  return;
1232
1270
  }
1271
+ else if (!sessionID && !!minAge && !birth) {
1272
+ setShowAgeVerification(true);
1273
+ setClickedStart(false);
1274
+ }
1233
1275
  else if (!sessionID) {
1234
1276
  setClickedStart(false);
1235
1277
  setGotErrorInOpening(false);
@@ -1240,6 +1282,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1240
1282
  pin: personification === null || personification === void 0 ? void 0 : personification.pin,
1241
1283
  initialContextVars,
1242
1284
  initialQuestion,
1285
+ birthDate: birth,
1243
1286
  });
1244
1287
  if (session === null || session === void 0 ? void 0 : session.dialogState) {
1245
1288
  setHistory([]);
@@ -1294,7 +1337,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1294
1337
  }
1295
1338
  catch (e) {
1296
1339
  console.error('session #2', e);
1297
- reopenSession(true, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, memori === null || memori === void 0 ? void 0 : memori.giverTag, memori === null || memori === void 0 ? void 0 : memori.giverPIN, initialContextVars, initialQuestion).then(() => {
1340
+ reopenSession(true, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, memori === null || memori === void 0 ? void 0 : memori.giverTag, memori === null || memori === void 0 ? void 0 : memori.giverPIN, initialContextVars, initialQuestion, birth).then(() => {
1298
1341
  setHasUserActivatedSpeak(true);
1299
1342
  });
1300
1343
  }
@@ -1324,7 +1367,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1324
1367
  }
1325
1368
  catch (e) {
1326
1369
  console.error('session #5', e);
1327
- reopenSession(true, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, personification.tag, personification.pin, initialContextVars, initialQuestion).then(() => {
1370
+ reopenSession(true, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, personification.tag, personification.pin, initialContextVars, initialQuestion, birth).then(() => {
1328
1371
  setHasUserActivatedSpeak(true);
1329
1372
  });
1330
1373
  }
@@ -1354,7 +1397,7 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1354
1397
  }
1355
1398
  catch (e) {
1356
1399
  console.error('session #8', e);
1357
- reopenSession(true, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, undefined, undefined, initialContextVars, initialQuestion).then(() => {
1400
+ reopenSession(true, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, undefined, undefined, initialContextVars, initialQuestion, birth).then(() => {
1358
1401
  setHasUserActivatedSpeak(true);
1359
1402
  });
1360
1403
  }
@@ -1426,20 +1469,21 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1426
1469
  source.buffer = buffer;
1427
1470
  source.connect(audioContext.destination);
1428
1471
  }
1429
- }, showSettings: showSettings, hasUserActivatedSpeak: hasUserActivatedSpeak }));
1472
+ }, showSettings: showSettings, hasUserActivatedSpeak: hasUserActivatedSpeak, showReload: selectedLayout === 'TOTEM' }));
1430
1473
  const avatar = (_jsx(Avatar, { memori: memori, integration: integration, integrationConfig: integrationConfig, tenant: tenant, instruct: instruct, avatar3dVisible: avatar3dVisible, setAvatar3dVisible: setAvatar3dVisible, hasUserActivatedSpeak: hasUserActivatedSpeak, isPlayingAudio: isPlayingAudio, loading: memoriTyping, baseUrl: baseUrl, apiUrl: apiUrl }));
1431
1474
  const startPanel = (_jsx(StartPanel, { memori: memori, tenant: tenant, gamificationLevel: gamificationLevel, language: language, userLang: userLang, setUserLang: setUserLang, baseUrl: baseUrl, apiUrl: apiUrl, position: position, openPositionDrawer: () => setShowPositionDrawer(true), integrationConfig: integrationConfig, instruct: instruct, sessionId: sessionId, clickedStart: clickedStart, onClickStart: onClickStart, initializeTTS: initializeTTS }));
1432
1475
  const chat = sessionId ? (_jsx(Chat, { memori: memori, sessionID: sessionId, tenant: tenant, translateTo: isMultilanguageEnabled &&
1433
1476
  userLang.toUpperCase() !==
1434
1477
  ((_u = ((_t = (_r = (_q = (_p = memori.culture) === null || _p === void 0 ? void 0 : _p.split('-')) === null || _q === void 0 ? void 0 : _q[0]) !== null && _r !== void 0 ? _r : i18n.language) !== null && _t !== void 0 ? _t : 'IT')) === null || _u === void 0 ? void 0 : _u.toUpperCase())
1435
1478
  ? userLang
1436
- : undefined, baseUrl: baseUrl, apiUrl: apiUrl, memoriTyping: memoriTyping, history: history, authToken: loginToken, dialogState: currentDialogState, setDialogState: setCurrentDialogState, pushMessage: pushMessage, simulateUserPrompt: simulateUserPrompt, showDates: showDates, showContextPerLine: showContextPerLine, showAIicon: showAIicon, client: client, selectReceiverTag: selectReceiverTag, preview: preview, sendOnEnter: sendOnEnter, setSendOnEnter: setSendOnEnter, attachmentsMenuOpen: attachmentsMenuOpen, setAttachmentsMenuOpen: setAttachmentsMenuOpen, instruct: instruct, showInputs: showInputs, showMicrophone: !!AZURE_COGNITIVE_SERVICES_TTS_KEY, userMessage: userMessage, onChangeUserMessage: onChangeUserMessage, sendMessage: (msg) => {
1479
+ : undefined, baseUrl: baseUrl, apiUrl: apiUrl, memoriTyping: memoriTyping, history: layout === 'TOTEM' ? history.slice(-2) : history, authToken: loginToken, dialogState: currentDialogState, setDialogState: setCurrentDialogState, pushMessage: pushMessage, simulateUserPrompt: simulateUserPrompt, showDates: showDates, showContextPerLine: showContextPerLine, showAIicon: showAIicon, client: client, selectReceiverTag: selectReceiverTag, preview: preview, sendOnEnter: sendOnEnter, setSendOnEnter: setSendOnEnter, attachmentsMenuOpen: attachmentsMenuOpen, setAttachmentsMenuOpen: setAttachmentsMenuOpen, instruct: instruct, showInputs: showInputs, showMicrophone: !!AZURE_COGNITIVE_SERVICES_TTS_KEY, userMessage: userMessage, onChangeUserMessage: onChangeUserMessage, sendMessage: (msg) => {
1480
+ stopAudio();
1437
1481
  stopListening();
1438
1482
  sendMessage(msg);
1439
1483
  setUserMessage('');
1440
1484
  resetTranscript();
1441
1485
  }, stopListening: clearListening, startListening: startListening, stopAudio: stopAudio, resetTranscript: resetTranscript, listening: listening, isPlayingAudio: isPlayingAudio })) : null;
1442
- const integrationBackground = integration && globalBackgroundUrl ? (_jsx("div", { className: "memori--global-background", children: _jsx("div", { className: "memori--global-background-image", style: { backgroundImage: globalBackgroundUrl } }) })) : null;
1486
+ const integrationBackground = integration && globalBackgroundUrl ? (_jsx("div", { className: "memori--global-background", children: _jsx("div", { className: "memori--global-background-image", style: { backgroundImage: globalBackgroundUrl } }) })) : (_jsx("div", { className: "memori--global-background no-background-image" }));
1443
1487
  const integrationStyle = integration ? (_jsx("style", { dangerouslySetInnerHTML: { __html: integrationStylesheet } })) : null;
1444
1488
  const onChangeMode = (mode) => {
1445
1489
  setInstruct(mode === 'instruct');
@@ -1448,7 +1492,12 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1448
1492
  };
1449
1493
  const changeMode = (_jsx(ChangeMode, { canInstruct: !!memori.giverTag, instruct: instruct, onChangeMode: onChangeMode }));
1450
1494
  const poweredBy = _jsx(PoweredBy, { tenant: tenant, userLang: userLang });
1451
- return (_jsxs("div", { className: cx('memori', 'memori-widget', {
1495
+ const Layout = selectedLayout === 'TOTEM'
1496
+ ? TotemLayout
1497
+ : selectedLayout === 'FULLPAGE'
1498
+ ? FullPageLayout
1499
+ : FullPageLayout;
1500
+ return (_jsxs("div", { className: cx('memori', 'memori-widget', `memori-layout-${layout.toLowerCase()}`, `memori-controls-${controlsPosition.toLowerCase()}`, {
1452
1501
  'memori--preview': preview,
1453
1502
  'memori--embed': embed,
1454
1503
  'memori--with-integration': integration,
@@ -1456,12 +1505,12 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1456
1505
  }), "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({
1457
1506
  ...currentDialogState,
1458
1507
  sessionID: sessionId,
1459
- }), style: { height }, children: [_jsx(DefaultLayout, { header: header, avatar: avatar, chat: chat, startPanel: startPanel, integrationStyle: integrationStyle, integrationBackground: integrationBackground, changeMode: changeMode, 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) => {
1508
+ }), style: { height }, children: [_jsx(Layout, { header: header, avatar: avatar, chat: chat, startPanel: startPanel, integrationStyle: integrationStyle, integrationBackground: integrationBackground, changeMode: changeMode, 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) => {
1460
1509
  if (values['password'])
1461
1510
  setMemoriPwd(values['password']);
1462
1511
  if (values['tokens'])
1463
1512
  setMemoriTokens(values['tokens']);
1464
- reopenSession(!sessionId, values['password'], values['tokens'], instruct ? memori.giverTag : undefined, instruct ? memori.giverPIN : undefined, initialContextVars, initialQuestion)
1513
+ reopenSession(!sessionId, values['password'], values['tokens'], instruct ? memori.giverTag : undefined, instruct ? memori.giverPIN : undefined, initialContextVars, initialQuestion, birthDate)
1465
1514
  .then(state => {
1466
1515
  setAuthModalState(null);
1467
1516
  onClickStart(state || undefined);
@@ -1470,7 +1519,25 @@ const MemoriWidget = ({ memori, memoriConfigs, memoriLang, integration, showInst
1470
1519
  setAuthModalState(null);
1471
1520
  setGotErrorInOpening(true);
1472
1521
  });
1473
- }, minimumNumberOfRecoveryTokens: (_v = memori === null || memori === void 0 ? void 0 : memori.minimumNumberOfRecoveryTokens) !== null && _v !== void 0 ? _v : 1 })), sessionId && (_jsx(AttachmentLinkModal, { apiURL: apiUrl, visible: attachmentsMenuOpen === 'link', onCancel: () => setAttachmentsMenuOpen(undefined), onOk: async (link) => {
1522
+ }, minimumNumberOfRecoveryTokens: (_v = memori === null || memori === void 0 ? void 0 : memori.minimumNumberOfRecoveryTokens) !== null && _v !== void 0 ? _v : 1 })), isClient && (_jsx(AgeVerificationModal, { visible: showAgeVerification, minAge: minAge, onClose: birthDate => {
1523
+ if (birthDate) {
1524
+ setBirthDate(birthDate);
1525
+ setLocalConfig('birthDate', birthDate);
1526
+ reopenSession(!sessionId, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, instruct ? memori.giverTag : undefined, instruct ? memori.giverPIN : undefined, initialContextVars, initialQuestion, birthDate)
1527
+ .then(state => {
1528
+ setShowAgeVerification(false);
1529
+ onClickStart(state || undefined);
1530
+ })
1531
+ .catch(() => {
1532
+ setShowAgeVerification(false);
1533
+ setGotErrorInOpening(true);
1534
+ });
1535
+ }
1536
+ else {
1537
+ setShowAgeVerification(false);
1538
+ setClickedStart(false);
1539
+ }
1540
+ } })), showSettingsDrawer && (_jsx(SettingsDrawer, { layout: selectedLayout, open: !!showSettingsDrawer, onClose: () => setShowSettingsDrawer(false), continuousSpeech: continuousSpeech, continuousSpeechTimeout: continuousSpeechTimeout, setContinuousSpeech: setContinuousSpeech, setContinuousSpeechTimeout: setContinuousSpeechTimeout, controlsPosition: controlsPosition, setControlsPosition: setControlsPosition })), sessionId && (_jsx(AttachmentLinkModal, { apiURL: apiUrl, visible: attachmentsMenuOpen === 'link', onCancel: () => setAttachmentsMenuOpen(undefined), onOk: async (link) => {
1474
1541
  if (!sessionId)
1475
1542
  return;
1476
1543
  let medium = {