@memori.ai/memori-react 6.8.1 → 6.8.4

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 (1197) hide show
  1. package/CHANGELOG.md +1918 -0
  2. package/README.md +89 -48
  3. package/dist/I18nWrapper.js +3 -47
  4. package/dist/I18nWrapper.js.map +1 -1
  5. package/dist/components/AccountForm/AccountForm.d.ts +4 -2
  6. package/dist/components/AccountForm/AccountForm.js +2 -4
  7. package/dist/components/AccountForm/AccountForm.js.map +1 -1
  8. package/dist/components/AgeVerificationModal/AgeVerificationModal.css +1 -1
  9. package/dist/components/AgeVerificationModal/AgeVerificationModal.d.ts +1 -0
  10. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +1 -1
  11. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  12. package/dist/components/AttachmentLinkModal/AttachmentLinkModal.d.ts +1 -0
  13. package/dist/components/Auth/Auth.d.ts +1 -0
  14. package/dist/components/Avatar/Avatar.css +2 -2
  15. package/dist/components/Avatar/Avatar.d.ts +7 -0
  16. package/dist/components/Avatar/Avatar.js +70 -60
  17. package/dist/components/Avatar/Avatar.js.map +1 -1
  18. package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.d.ts +7 -0
  19. package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js +62 -0
  20. package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js.map +1 -0
  21. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +22 -0
  22. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +41 -0
  23. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -0
  24. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +18 -0
  25. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +185 -0
  26. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -0
  27. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.d.ts +39 -0
  28. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.js +10 -0
  29. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.js.map +1 -0
  30. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.d.ts +65 -0
  31. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js +747 -0
  32. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js.map +1 -0
  33. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.d.ts +19 -0
  34. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.js +60 -0
  35. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.js.map +1 -0
  36. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.d.ts +24 -0
  37. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js +133 -0
  38. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js.map +1 -0
  39. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.d.ts +26 -0
  40. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.js +59 -0
  41. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controls.js.map +1 -0
  42. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +15 -0
  43. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +83 -0
  44. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -0
  45. package/dist/components/{AvatarView → Avatar/AvatarView/AvatarComponent}/components/loader.d.ts +1 -0
  46. package/dist/components/{AvatarView → Avatar/AvatarView/AvatarComponent}/components/loader.js +1 -1
  47. package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.js.map +1 -0
  48. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +35 -0
  49. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +99 -0
  50. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -0
  51. package/dist/components/Avatar/AvatarView/AvatarComponent/lights/Lights.d.ts +27 -0
  52. package/dist/components/Avatar/AvatarView/AvatarComponent/lights/Lights.js +52 -0
  53. package/dist/components/Avatar/AvatarView/AvatarComponent/lights/Lights.js.map +1 -0
  54. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +111 -0
  55. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.d.ts +11 -0
  56. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js +110 -0
  57. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js.map +1 -0
  58. package/dist/components/Avatar/AvatarView/index.d.ts +30 -0
  59. package/dist/components/Avatar/AvatarView/index.js +68 -0
  60. package/dist/components/Avatar/AvatarView/index.js.map +1 -0
  61. package/dist/components/Avatar/AvatarView/utils/hideHands.d.ts +2 -0
  62. package/dist/components/Avatar/AvatarView/utils/hideHands.js +14 -0
  63. package/dist/components/Avatar/AvatarView/utils/hideHands.js.map +1 -0
  64. package/dist/components/Avatar/AvatarView/utils/useEyeBlink.d.ts +16 -0
  65. package/dist/components/Avatar/AvatarView/utils/useEyeBlink.js +71 -0
  66. package/dist/components/Avatar/AvatarView/utils/useEyeBlink.js.map +1 -0
  67. package/dist/components/Avatar/AvatarView/utils/useHeadMovement.js.map +1 -0
  68. package/dist/components/Avatar/AvatarView/utils/useLoadingMorphAnim.js.map +1 -0
  69. package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.d.ts +16 -0
  70. package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.js +59 -0
  71. package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.js.map +1 -0
  72. package/dist/components/Avatar/AvatarView/utils/useSmile.js +28 -0
  73. package/dist/components/Avatar/AvatarView/utils/useSmile.js.map +1 -0
  74. package/dist/components/Avatar/AvatarView/utils/utils.js.map +1 -0
  75. package/dist/components/Blob/Blob.d.ts +1 -0
  76. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.d.ts +1 -0
  77. package/dist/components/Chat/Chat.d.ts +15 -7
  78. package/dist/components/Chat/Chat.js +49 -30
  79. package/dist/components/Chat/Chat.js.map +1 -1
  80. package/dist/components/ChatBubble/ChatBubble.css +91 -14
  81. package/dist/components/ChatBubble/ChatBubble.d.ts +14 -0
  82. package/dist/components/ChatBubble/ChatBubble.js +92 -67
  83. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  84. package/dist/components/ChatHistoryDrawer/ChatHistory.css +414 -0
  85. package/dist/components/ChatHistoryDrawer/ChatHistory.d.ts +20 -0
  86. package/dist/components/ChatHistoryDrawer/ChatHistory.js +630 -0
  87. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -0
  88. package/dist/components/ChatInputs/ChatInputs.d.ts +9 -3
  89. package/dist/components/ChatInputs/ChatInputs.js +47 -6
  90. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  91. package/dist/components/ChatTextArea/ChatTextArea.css +9 -5
  92. package/dist/components/ChatTextArea/ChatTextArea.js +1 -1
  93. package/dist/components/ChatTextArea/ChatTextArea.js.map +1 -1
  94. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.css +35 -17
  95. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.d.ts +5 -3
  96. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js +142 -28
  97. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
  98. package/dist/components/CustomGLBModelViewer/ModelViewer.d.ts +1 -0
  99. package/dist/components/ExpertsDrawer/ExpertsDrawer.d.ts +1 -0
  100. package/dist/components/ExpertsDrawer/ExpertsDrawer.js +2 -2
  101. package/dist/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  102. package/dist/components/FeedbackButtons/FeedbackButtons.d.ts +1 -0
  103. package/dist/components/FilePreview/FilePreview.css +184 -0
  104. package/dist/components/FilePreview/FilePreview.d.ts +9 -0
  105. package/dist/components/FilePreview/FilePreview.js +74 -0
  106. package/dist/components/FilePreview/FilePreview.js.map +1 -0
  107. package/dist/components/Header/Header.css +3 -3
  108. package/dist/components/Header/Header.d.ts +5 -1
  109. package/dist/components/Header/Header.js +27 -13
  110. package/dist/components/Header/Header.js.map +1 -1
  111. package/dist/components/KnownFacts/KnownFacts.d.ts +4 -2
  112. package/dist/components/KnownFacts/KnownFacts.js +3 -5
  113. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  114. package/dist/components/LoginDrawer/LoginDrawer.css +302 -0
  115. package/dist/components/LoginDrawer/LoginDrawer.d.ts +4 -2
  116. package/dist/components/LoginDrawer/LoginDrawer.js +9 -11
  117. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  118. package/dist/components/MediaWidget/LinkItemWidget.css +10 -0
  119. package/dist/components/MediaWidget/LinkItemWidget.d.ts +1 -0
  120. package/dist/components/MediaWidget/LinkItemWidget.js +5 -2
  121. package/dist/components/MediaWidget/LinkItemWidget.js.map +1 -1
  122. package/dist/components/MediaWidget/MediaItemWidget.css +153 -3
  123. package/dist/components/MediaWidget/MediaItemWidget.d.ts +7 -2
  124. package/dist/components/MediaWidget/MediaItemWidget.js +89 -37
  125. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  126. package/dist/components/MediaWidget/MediaWidget.d.ts +4 -1
  127. package/dist/components/MediaWidget/MediaWidget.js +2 -2
  128. package/dist/components/MediaWidget/MediaWidget.js.map +1 -1
  129. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +163 -0
  130. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.d.ts +12 -0
  131. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +133 -0
  132. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -0
  133. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.d.ts +4 -0
  134. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +286 -0
  135. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -0
  136. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.d.ts +6 -0
  137. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js +40 -0
  138. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js.map +1 -0
  139. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.d.ts +6 -0
  140. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.js +492 -0
  141. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.js.map +1 -0
  142. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/index.d.ts +5 -0
  143. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/index.js +14 -0
  144. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/index.js.map +1 -0
  145. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +489 -0
  146. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.d.ts +3 -0
  147. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js +64 -0
  148. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js.map +1 -0
  149. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/types.d.ts +61 -0
  150. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/types.js +3 -0
  151. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/types.js.map +1 -0
  152. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.d.ts +15 -0
  153. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.js +352 -0
  154. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.js.map +1 -0
  155. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +1059 -0
  156. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.d.ts +5 -0
  157. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +167 -0
  158. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -0
  159. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +150 -0
  160. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.d.ts +9 -0
  161. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js +35 -0
  162. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js.map +1 -0
  163. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +253 -0
  164. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.d.ts +8 -0
  165. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +104 -0
  166. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -0
  167. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +346 -0
  168. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.d.ts +7 -0
  169. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +89 -0
  170. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -0
  171. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +13 -0
  172. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js +55 -0
  173. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -0
  174. package/dist/components/MemoriArtifactSystem/types/artifact.types.d.ts +14 -0
  175. package/dist/components/MemoriArtifactSystem/types/artifact.types.js +3 -0
  176. package/dist/components/MemoriArtifactSystem/types/artifact.types.js.map +1 -0
  177. package/dist/components/MemoriWidget/MemoriWidget.css +10 -4
  178. package/dist/components/MemoriWidget/MemoriWidget.d.ts +29 -11
  179. package/dist/components/MemoriWidget/MemoriWidget.js +763 -1051
  180. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  181. package/dist/components/MicrophoneButton/MicrophoneButton.d.ts +1 -0
  182. package/dist/components/MicrophoneButton/MicrophoneButton.js +1 -1
  183. package/dist/components/MicrophoneButton/MicrophoneButton.js.map +1 -1
  184. package/dist/components/PositionDrawer/PositionDrawer.d.ts +1 -0
  185. package/dist/components/PoweredBy/PoweredBy.d.ts +1 -0
  186. package/dist/components/SendOnEnterMenu/SendOnEnterMenu.css +3 -3
  187. package/dist/components/SettingsDrawer/SettingsDrawer.css +9 -2
  188. package/dist/components/SettingsDrawer/SettingsDrawer.d.ts +8 -1
  189. package/dist/components/SettingsDrawer/SettingsDrawer.js +15 -6
  190. package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  191. package/dist/components/ShareButton/ShareButton.css +6 -0
  192. package/dist/components/ShareButton/ShareButton.d.ts +3 -1
  193. package/dist/components/ShareButton/ShareButton.js +14 -3
  194. package/dist/components/ShareButton/ShareButton.js.map +1 -1
  195. package/dist/components/SignupForm/SignupForm.d.ts +4 -2
  196. package/dist/components/SignupForm/SignupForm.js +6 -8
  197. package/dist/components/SignupForm/SignupForm.js.map +1 -1
  198. package/dist/components/Snippet/Snippet.d.ts +2 -2
  199. package/dist/components/Snippet/Snippet.js +36 -25
  200. package/dist/components/Snippet/Snippet.js.map +1 -1
  201. package/dist/components/StartPanel/StartPanel.css +34 -8
  202. package/dist/components/StartPanel/StartPanel.d.ts +8 -3
  203. package/dist/components/StartPanel/StartPanel.js +26 -15
  204. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  205. package/dist/components/Typing/Typing.d.ts +1 -0
  206. package/dist/components/Typing/Typing.js +49 -47
  207. package/dist/components/Typing/Typing.js.map +1 -1
  208. package/dist/components/UploadButton/UploadButton.css +544 -0
  209. package/dist/components/UploadButton/UploadButton.d.ts +19 -0
  210. package/dist/components/UploadButton/UploadButton.js +226 -0
  211. package/dist/components/UploadButton/UploadButton.js.map +1 -0
  212. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.d.ts +31 -0
  213. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +244 -0
  214. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -0
  215. package/dist/components/UploadButton/UploadImages/UploadImages.d.ts +20 -0
  216. package/dist/components/UploadButton/UploadImages/UploadImages.js +172 -0
  217. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -0
  218. package/dist/components/UploadMenu/UploadMenu.css +3 -3
  219. package/dist/components/VenueWidget/VenueWidget.css +7 -0
  220. package/dist/components/VenueWidget/VenueWidget.d.ts +1 -0
  221. package/dist/components/VenueWidget/VenueWidget.js +1 -1
  222. package/dist/components/VenueWidget/VenueWidget.js.map +1 -1
  223. package/dist/components/WhyThisAnswer/WhyThisAnswer.css +43 -0
  224. package/dist/components/WhyThisAnswer/WhyThisAnswer.d.ts +4 -2
  225. package/dist/components/WhyThisAnswer/WhyThisAnswer.js +5 -6
  226. package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  227. package/dist/components/icons/AI.d.ts +1 -0
  228. package/dist/components/icons/Alert.d.ts +6 -0
  229. package/dist/components/icons/Alert.js +6 -0
  230. package/dist/components/icons/Alert.js.map +1 -0
  231. package/dist/components/icons/ArrowUp.d.ts +6 -0
  232. package/dist/components/icons/ArrowUp.js +6 -0
  233. package/dist/components/icons/ArrowUp.js.map +1 -0
  234. package/dist/components/icons/Bug.d.ts +6 -0
  235. package/dist/components/icons/Bug.js +6 -0
  236. package/dist/components/icons/Bug.js.map +1 -0
  237. package/dist/components/icons/Chat.d.ts +6 -0
  238. package/dist/components/icons/Chat.js +6 -0
  239. package/dist/components/icons/Chat.js.map +1 -0
  240. package/dist/components/icons/ChevronDown.d.ts +6 -0
  241. package/dist/components/icons/ChevronDown.js +6 -0
  242. package/dist/components/icons/ChevronDown.js.map +1 -0
  243. package/dist/components/icons/ChevronLeft.d.ts +1 -0
  244. package/dist/components/icons/ChevronRight.d.ts +1 -0
  245. package/dist/components/icons/ChevronUp.d.ts +6 -0
  246. package/dist/components/icons/ChevronUp.js +6 -0
  247. package/dist/components/icons/ChevronUp.js.map +1 -0
  248. package/dist/components/icons/Clear.d.ts +1 -0
  249. package/dist/components/icons/Close.d.ts +3 -1
  250. package/dist/components/icons/Close.js +1 -1
  251. package/dist/components/icons/Close.js.map +1 -1
  252. package/dist/components/icons/Code.d.ts +6 -0
  253. package/dist/components/icons/Code.js +6 -0
  254. package/dist/components/icons/Code.js.map +1 -0
  255. package/dist/components/icons/Copy.d.ts +1 -0
  256. package/dist/components/icons/Copy.js +1 -1
  257. package/dist/components/icons/Copy.js.map +1 -1
  258. package/dist/components/icons/DeepThought.d.ts +1 -0
  259. package/dist/components/icons/Delete.d.ts +1 -0
  260. package/dist/components/icons/Document.d.ts +5 -0
  261. package/dist/components/icons/Document.js +10 -0
  262. package/dist/components/icons/Document.js.map +1 -0
  263. package/dist/components/icons/Download.d.ts +1 -0
  264. package/dist/components/icons/Edit.d.ts +1 -0
  265. package/dist/components/icons/Expand.d.ts +1 -0
  266. package/dist/components/icons/Eye.d.ts +1 -0
  267. package/dist/components/icons/EyeInvisible.d.ts +1 -0
  268. package/dist/components/icons/Facebook.d.ts +1 -0
  269. package/dist/components/icons/Feedback.d.ts +1 -0
  270. package/dist/components/icons/File.d.ts +1 -0
  271. package/dist/components/icons/FileExcel.d.ts +1 -0
  272. package/dist/components/icons/FilePdf.d.ts +1 -0
  273. package/dist/components/icons/FileWord.d.ts +1 -0
  274. package/dist/components/icons/Fullscreen.d.ts +1 -0
  275. package/dist/components/icons/FullscreenExit.d.ts +1 -0
  276. package/dist/components/icons/Group.d.ts +1 -0
  277. package/dist/components/icons/History.d.ts +7 -0
  278. package/dist/components/icons/History.js +6 -0
  279. package/dist/components/icons/History.js.map +1 -0
  280. package/dist/components/icons/Image.d.ts +4 -0
  281. package/dist/components/icons/Image.js +9 -0
  282. package/dist/components/icons/Image.js.map +1 -0
  283. package/dist/components/icons/Info.d.ts +6 -0
  284. package/dist/components/icons/Info.js +6 -0
  285. package/dist/components/icons/Info.js.map +1 -0
  286. package/dist/components/icons/Link.d.ts +1 -0
  287. package/dist/components/icons/Linkedin.d.ts +1 -0
  288. package/dist/components/icons/Loading.d.ts +1 -0
  289. package/dist/components/icons/Mail.d.ts +1 -0
  290. package/dist/components/icons/MapMarker.d.ts +1 -0
  291. package/dist/components/icons/MenuHorizontal.d.ts +7 -0
  292. package/dist/components/icons/MenuHorizontal.js +6 -0
  293. package/dist/components/icons/MenuHorizontal.js.map +1 -0
  294. package/dist/components/icons/MenuVertical.d.ts +7 -0
  295. package/dist/components/icons/MenuVertical.js +6 -0
  296. package/dist/components/icons/MenuVertical.js.map +1 -0
  297. package/dist/components/icons/Message.d.ts +1 -0
  298. package/dist/components/icons/Microphone.d.ts +1 -0
  299. package/dist/components/icons/Minus.d.ts +1 -0
  300. package/dist/components/icons/MinusCircle.d.ts +1 -0
  301. package/dist/components/icons/PaperClip.d.ts +1 -0
  302. package/dist/components/icons/Picture.d.ts +1 -0
  303. package/dist/components/icons/Plus.d.ts +1 -0
  304. package/dist/components/icons/Preview.d.ts +4 -0
  305. package/dist/components/icons/Preview.js +9 -0
  306. package/dist/components/icons/Preview.js.map +1 -0
  307. package/dist/components/icons/Print.d.ts +6 -0
  308. package/dist/components/icons/Print.js +6 -0
  309. package/dist/components/icons/Print.js.map +1 -0
  310. package/dist/components/icons/QuestionHelp.d.ts +1 -0
  311. package/dist/components/icons/Refresh.d.ts +1 -0
  312. package/dist/components/icons/SelectIcon.d.ts +1 -0
  313. package/dist/components/icons/Send.d.ts +1 -0
  314. package/dist/components/icons/Setting.d.ts +1 -0
  315. package/dist/components/icons/Share.d.ts +1 -0
  316. package/dist/components/icons/Sound.d.ts +1 -0
  317. package/dist/components/icons/SoundDeactivated.d.ts +1 -0
  318. package/dist/components/icons/Telegram.d.ts +1 -0
  319. package/dist/components/icons/ThumbDown.d.ts +1 -0
  320. package/dist/components/icons/ThumbUp.d.ts +1 -0
  321. package/dist/components/icons/Translation.d.ts +1 -0
  322. package/dist/components/icons/Twitter.d.ts +1 -0
  323. package/dist/components/icons/Upload.d.ts +4 -0
  324. package/dist/components/icons/Upload.js +9 -0
  325. package/dist/components/icons/Upload.js.map +1 -0
  326. package/dist/components/icons/User.d.ts +1 -0
  327. package/dist/components/icons/Warning.d.ts +1 -0
  328. package/dist/components/icons/Warning.js +1 -1
  329. package/dist/components/icons/Warning.js.map +1 -1
  330. package/dist/components/icons/WhatsApp.d.ts +1 -0
  331. package/dist/components/layouts/Chat.js +9 -1
  332. package/dist/components/layouts/Chat.js.map +1 -1
  333. package/dist/components/layouts/FullPage.js +10 -1
  334. package/dist/components/layouts/FullPage.js.map +1 -1
  335. package/dist/components/layouts/HiddenChat.d.ts +4 -0
  336. package/dist/components/layouts/HiddenChat.js +147 -0
  337. package/dist/components/layouts/HiddenChat.js.map +1 -0
  338. package/dist/components/layouts/Totem.js +1 -1
  339. package/dist/components/layouts/Totem.js.map +1 -1
  340. package/dist/components/layouts/WebsiteAssistant.js +2 -2
  341. package/dist/components/layouts/WebsiteAssistant.js.map +1 -1
  342. package/dist/components/layouts/ZoomedFullBody.d.ts +4 -0
  343. package/dist/components/layouts/ZoomedFullBody.js +17 -0
  344. package/dist/components/layouts/ZoomedFullBody.js.map +1 -0
  345. package/dist/components/layouts/chat.css +358 -19
  346. package/dist/components/layouts/hidden-chat.css +254 -0
  347. package/dist/components/layouts/totem.css +19 -10
  348. package/dist/components/layouts/website-assistant.css +2 -2
  349. package/dist/components/layouts/zoomed-full-body.css +18 -0
  350. package/dist/components/ui/Alert.css +93 -0
  351. package/dist/components/ui/Alert.d.ts +18 -0
  352. package/dist/components/ui/Alert.js +42 -0
  353. package/dist/components/ui/Alert.js.map +1 -0
  354. package/dist/components/ui/Button.css +8 -2
  355. package/dist/components/ui/Button.d.ts +1 -0
  356. package/dist/components/ui/Button.js +2 -1
  357. package/dist/components/ui/Button.js.map +1 -1
  358. package/dist/components/ui/Card.css +5 -0
  359. package/dist/components/ui/Card.d.ts +1 -0
  360. package/dist/components/ui/Card.js +2 -1
  361. package/dist/components/ui/Card.js.map +1 -1
  362. package/dist/components/ui/ConfirmDialog.css +42 -0
  363. package/dist/components/ui/ConfirmDialog.d.ts +11 -0
  364. package/dist/components/ui/ConfirmDialog.js +12 -0
  365. package/dist/components/ui/ConfirmDialog.js.map +1 -0
  366. package/dist/components/ui/Drawer.css +121 -96
  367. package/dist/components/ui/Drawer.d.ts +17 -6
  368. package/dist/components/ui/Drawer.js +44 -13
  369. package/dist/components/ui/Drawer.js.map +1 -1
  370. package/dist/components/ui/Expandable.d.ts +3 -2
  371. package/dist/components/ui/Expandable.js +35 -20
  372. package/dist/components/ui/Expandable.js.map +1 -1
  373. package/dist/components/ui/Select.d.ts +1 -0
  374. package/dist/components/ui/Slider.css +192 -0
  375. package/dist/components/ui/Slider.d.ts +12 -0
  376. package/dist/components/ui/Slider.js +78 -0
  377. package/dist/components/ui/Slider.js.map +1 -0
  378. package/dist/components/ui/Table.css +15 -2
  379. package/dist/context/visemeContext.d.ts +24 -0
  380. package/dist/context/visemeContext.js +192 -0
  381. package/dist/context/visemeContext.js.map +1 -0
  382. package/dist/helpers/configuration.js +0 -1
  383. package/dist/helpers/configuration.js.map +1 -1
  384. package/dist/helpers/constants.d.ts +6 -0
  385. package/dist/helpers/constants.js +7 -1
  386. package/dist/helpers/constants.js.map +1 -1
  387. package/dist/helpers/error.js +53 -6
  388. package/dist/helpers/error.js.map +1 -1
  389. package/dist/helpers/markedExtendedTables.js +1 -1
  390. package/dist/helpers/markedExtendedTables.js.map +1 -1
  391. package/dist/helpers/message.d.ts +5 -0
  392. package/dist/helpers/message.js +98 -0
  393. package/dist/helpers/message.js.map +1 -0
  394. package/dist/helpers/sanitizer.d.ts +1 -0
  395. package/dist/helpers/sanitizer.js +9 -0
  396. package/dist/helpers/sanitizer.js.map +1 -0
  397. package/dist/helpers/statistics.d.ts +1 -12
  398. package/dist/helpers/statistics.js +1 -165
  399. package/dist/helpers/statistics.js.map +1 -1
  400. package/dist/helpers/stt/useSTT.d.ts +40 -0
  401. package/dist/helpers/stt/useSTT.js +527 -0
  402. package/dist/helpers/stt/useSTT.js.map +1 -0
  403. package/dist/helpers/translations.js +23 -4
  404. package/dist/helpers/translations.js.map +1 -1
  405. package/dist/helpers/tts/ttsVoiceUtility.d.ts +158 -0
  406. package/dist/helpers/tts/ttsVoiceUtility.js +192 -0
  407. package/dist/helpers/tts/ttsVoiceUtility.js.map +1 -0
  408. package/dist/helpers/tts/useTTS.d.ts +27 -0
  409. package/dist/helpers/tts/useTTS.js +297 -0
  410. package/dist/helpers/tts/useTTS.js.map +1 -0
  411. package/dist/helpers/utils.d.ts +40 -0
  412. package/dist/helpers/utils.js +157 -1
  413. package/dist/helpers/utils.js.map +1 -1
  414. package/dist/i18n.js +13 -1
  415. package/dist/i18n.js.map +1 -1
  416. package/dist/index.d.ts +14 -4
  417. package/dist/index.js +136 -84
  418. package/dist/index.js.map +1 -1
  419. package/dist/locales/de.json +593 -0
  420. package/dist/locales/en.json +250 -40
  421. package/dist/locales/es.json +593 -0
  422. package/dist/locales/fr.json +603 -0
  423. package/dist/locales/it.json +260 -48
  424. package/dist/styles.css +18 -2
  425. package/esm/I18nWrapper.js +4 -48
  426. package/esm/I18nWrapper.js.map +1 -1
  427. package/esm/components/AccountForm/AccountForm.d.ts +4 -2
  428. package/esm/components/AccountForm/AccountForm.js +2 -4
  429. package/esm/components/AccountForm/AccountForm.js.map +1 -1
  430. package/esm/components/AgeVerificationModal/AgeVerificationModal.css +1 -1
  431. package/esm/components/AgeVerificationModal/AgeVerificationModal.d.ts +1 -0
  432. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +1 -1
  433. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  434. package/esm/components/AttachmentLinkModal/AttachmentLinkModal.d.ts +1 -0
  435. package/esm/components/Auth/Auth.d.ts +1 -0
  436. package/esm/components/Avatar/Avatar.css +2 -2
  437. package/esm/components/Avatar/Avatar.d.ts +7 -0
  438. package/esm/components/Avatar/Avatar.js +72 -62
  439. package/esm/components/Avatar/Avatar.js.map +1 -1
  440. package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.d.ts +7 -0
  441. package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js +60 -0
  442. package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js.map +1 -0
  443. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +22 -0
  444. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +36 -0
  445. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -0
  446. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +18 -0
  447. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +180 -0
  448. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -0
  449. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.d.ts +39 -0
  450. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.js +7 -0
  451. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.js.map +1 -0
  452. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.d.ts +65 -0
  453. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js +743 -0
  454. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js.map +1 -0
  455. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.d.ts +19 -0
  456. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.js +56 -0
  457. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.js.map +1 -0
  458. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.d.ts +24 -0
  459. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js +129 -0
  460. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js.map +1 -0
  461. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.d.ts +26 -0
  462. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.js +56 -0
  463. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controls.js.map +1 -0
  464. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +15 -0
  465. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +79 -0
  466. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -0
  467. package/esm/components/{AvatarView → Avatar/AvatarView/AvatarComponent}/components/loader.d.ts +1 -0
  468. package/esm/components/{AvatarView → Avatar/AvatarView/AvatarComponent}/components/loader.js +1 -1
  469. package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.js.map +1 -0
  470. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +35 -0
  471. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +96 -0
  472. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -0
  473. package/esm/components/Avatar/AvatarView/AvatarComponent/lights/Lights.d.ts +27 -0
  474. package/esm/components/Avatar/AvatarView/AvatarComponent/lights/Lights.js +48 -0
  475. package/esm/components/Avatar/AvatarView/AvatarComponent/lights/Lights.js.map +1 -0
  476. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +111 -0
  477. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.d.ts +11 -0
  478. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js +107 -0
  479. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js.map +1 -0
  480. package/esm/components/Avatar/AvatarView/index.d.ts +30 -0
  481. package/esm/components/Avatar/AvatarView/index.js +64 -0
  482. package/esm/components/Avatar/AvatarView/index.js.map +1 -0
  483. package/esm/components/Avatar/AvatarView/utils/hideHands.d.ts +2 -0
  484. package/esm/components/Avatar/AvatarView/utils/hideHands.js +10 -0
  485. package/esm/components/Avatar/AvatarView/utils/hideHands.js.map +1 -0
  486. package/esm/components/Avatar/AvatarView/utils/useEyeBlink.d.ts +16 -0
  487. package/esm/components/Avatar/AvatarView/utils/useEyeBlink.js +67 -0
  488. package/esm/components/Avatar/AvatarView/utils/useEyeBlink.js.map +1 -0
  489. package/esm/components/Avatar/AvatarView/utils/useHeadMovement.js.map +1 -0
  490. package/esm/components/Avatar/AvatarView/utils/useLoadingMorphAnim.js.map +1 -0
  491. package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.d.ts +16 -0
  492. package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.js +55 -0
  493. package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.js.map +1 -0
  494. package/esm/components/Avatar/AvatarView/utils/useSmile.js +25 -0
  495. package/esm/components/Avatar/AvatarView/utils/useSmile.js.map +1 -0
  496. package/esm/components/Avatar/AvatarView/utils/utils.js.map +1 -0
  497. package/esm/components/Blob/Blob.d.ts +1 -0
  498. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.d.ts +1 -0
  499. package/esm/components/Chat/Chat.d.ts +15 -7
  500. package/esm/components/Chat/Chat.js +49 -30
  501. package/esm/components/Chat/Chat.js.map +1 -1
  502. package/esm/components/ChatBubble/ChatBubble.css +91 -14
  503. package/esm/components/ChatBubble/ChatBubble.d.ts +14 -0
  504. package/esm/components/ChatBubble/ChatBubble.js +93 -68
  505. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  506. package/esm/components/ChatHistoryDrawer/ChatHistory.css +414 -0
  507. package/esm/components/ChatHistoryDrawer/ChatHistory.d.ts +20 -0
  508. package/esm/components/ChatHistoryDrawer/ChatHistory.js +627 -0
  509. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -0
  510. package/esm/components/ChatInputs/ChatInputs.d.ts +9 -3
  511. package/esm/components/ChatInputs/ChatInputs.js +48 -7
  512. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  513. package/esm/components/ChatTextArea/ChatTextArea.css +9 -5
  514. package/esm/components/ChatTextArea/ChatTextArea.js +1 -1
  515. package/esm/components/ChatTextArea/ChatTextArea.js.map +1 -1
  516. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.css +35 -17
  517. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.d.ts +5 -3
  518. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js +143 -29
  519. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
  520. package/esm/components/CustomGLBModelViewer/ModelViewer.d.ts +1 -0
  521. package/esm/components/ExpertsDrawer/ExpertsDrawer.d.ts +1 -0
  522. package/esm/components/ExpertsDrawer/ExpertsDrawer.js +2 -2
  523. package/esm/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  524. package/esm/components/FeedbackButtons/FeedbackButtons.d.ts +1 -0
  525. package/esm/components/FilePreview/FilePreview.css +184 -0
  526. package/esm/components/FilePreview/FilePreview.d.ts +9 -0
  527. package/esm/components/FilePreview/FilePreview.js +71 -0
  528. package/esm/components/FilePreview/FilePreview.js.map +1 -0
  529. package/esm/components/Header/Header.css +3 -3
  530. package/esm/components/Header/Header.d.ts +5 -1
  531. package/esm/components/Header/Header.js +27 -13
  532. package/esm/components/Header/Header.js.map +1 -1
  533. package/esm/components/KnownFacts/KnownFacts.d.ts +4 -2
  534. package/esm/components/KnownFacts/KnownFacts.js +3 -5
  535. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  536. package/esm/components/LoginDrawer/LoginDrawer.css +302 -0
  537. package/esm/components/LoginDrawer/LoginDrawer.d.ts +4 -2
  538. package/esm/components/LoginDrawer/LoginDrawer.js +9 -11
  539. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  540. package/esm/components/MediaWidget/LinkItemWidget.css +10 -0
  541. package/esm/components/MediaWidget/LinkItemWidget.d.ts +1 -0
  542. package/esm/components/MediaWidget/LinkItemWidget.js +5 -2
  543. package/esm/components/MediaWidget/LinkItemWidget.js.map +1 -1
  544. package/esm/components/MediaWidget/MediaItemWidget.css +153 -3
  545. package/esm/components/MediaWidget/MediaItemWidget.d.ts +7 -2
  546. package/esm/components/MediaWidget/MediaItemWidget.js +90 -38
  547. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  548. package/esm/components/MediaWidget/MediaWidget.d.ts +4 -1
  549. package/esm/components/MediaWidget/MediaWidget.js +2 -2
  550. package/esm/components/MediaWidget/MediaWidget.js.map +1 -1
  551. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +163 -0
  552. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.d.ts +12 -0
  553. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +130 -0
  554. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -0
  555. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.d.ts +4 -0
  556. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +283 -0
  557. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -0
  558. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.d.ts +6 -0
  559. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js +37 -0
  560. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js.map +1 -0
  561. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.d.ts +6 -0
  562. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.js +487 -0
  563. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.js.map +1 -0
  564. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/index.d.ts +5 -0
  565. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/index.js +6 -0
  566. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/index.js.map +1 -0
  567. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +489 -0
  568. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.d.ts +3 -0
  569. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js +62 -0
  570. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js.map +1 -0
  571. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/types.d.ts +61 -0
  572. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/types.js +2 -0
  573. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/types.js.map +1 -0
  574. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.d.ts +15 -0
  575. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.js +348 -0
  576. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.js.map +1 -0
  577. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +1059 -0
  578. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.d.ts +5 -0
  579. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +164 -0
  580. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -0
  581. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +150 -0
  582. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.d.ts +9 -0
  583. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js +32 -0
  584. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js.map +1 -0
  585. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +253 -0
  586. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.d.ts +8 -0
  587. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +101 -0
  588. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -0
  589. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +346 -0
  590. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.d.ts +7 -0
  591. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +86 -0
  592. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -0
  593. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +13 -0
  594. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js +50 -0
  595. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -0
  596. package/esm/components/MemoriArtifactSystem/types/artifact.types.d.ts +14 -0
  597. package/esm/components/MemoriArtifactSystem/types/artifact.types.js +2 -0
  598. package/esm/components/MemoriArtifactSystem/types/artifact.types.js.map +1 -0
  599. package/esm/components/MemoriWidget/MemoriWidget.css +10 -4
  600. package/esm/components/MemoriWidget/MemoriWidget.d.ts +29 -11
  601. package/esm/components/MemoriWidget/MemoriWidget.js +766 -1054
  602. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  603. package/esm/components/MicrophoneButton/MicrophoneButton.d.ts +1 -0
  604. package/esm/components/MicrophoneButton/MicrophoneButton.js +1 -1
  605. package/esm/components/MicrophoneButton/MicrophoneButton.js.map +1 -1
  606. package/esm/components/PositionDrawer/PositionDrawer.d.ts +1 -0
  607. package/esm/components/PoweredBy/PoweredBy.d.ts +1 -0
  608. package/esm/components/SendOnEnterMenu/SendOnEnterMenu.css +3 -3
  609. package/esm/components/SettingsDrawer/SettingsDrawer.css +9 -2
  610. package/esm/components/SettingsDrawer/SettingsDrawer.d.ts +8 -1
  611. package/esm/components/SettingsDrawer/SettingsDrawer.js +15 -6
  612. package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  613. package/esm/components/ShareButton/ShareButton.css +6 -0
  614. package/esm/components/ShareButton/ShareButton.d.ts +3 -1
  615. package/esm/components/ShareButton/ShareButton.js +14 -3
  616. package/esm/components/ShareButton/ShareButton.js.map +1 -1
  617. package/esm/components/SignupForm/SignupForm.d.ts +4 -2
  618. package/esm/components/SignupForm/SignupForm.js +6 -8
  619. package/esm/components/SignupForm/SignupForm.js.map +1 -1
  620. package/esm/components/Snippet/Snippet.d.ts +2 -2
  621. package/esm/components/Snippet/Snippet.js +36 -25
  622. package/esm/components/Snippet/Snippet.js.map +1 -1
  623. package/esm/components/StartPanel/StartPanel.css +34 -8
  624. package/esm/components/StartPanel/StartPanel.d.ts +8 -3
  625. package/esm/components/StartPanel/StartPanel.js +26 -15
  626. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  627. package/esm/components/Typing/Typing.d.ts +1 -0
  628. package/esm/components/Typing/Typing.js +49 -47
  629. package/esm/components/Typing/Typing.js.map +1 -1
  630. package/esm/components/UploadButton/UploadButton.css +544 -0
  631. package/esm/components/UploadButton/UploadButton.d.ts +19 -0
  632. package/esm/components/UploadButton/UploadButton.js +223 -0
  633. package/esm/components/UploadButton/UploadButton.js.map +1 -0
  634. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.d.ts +31 -0
  635. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +241 -0
  636. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -0
  637. package/esm/components/UploadButton/UploadImages/UploadImages.d.ts +20 -0
  638. package/esm/components/UploadButton/UploadImages/UploadImages.js +169 -0
  639. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -0
  640. package/esm/components/UploadMenu/UploadMenu.css +3 -3
  641. package/esm/components/VenueWidget/VenueWidget.css +7 -0
  642. package/esm/components/VenueWidget/VenueWidget.d.ts +1 -0
  643. package/esm/components/VenueWidget/VenueWidget.js +1 -1
  644. package/esm/components/VenueWidget/VenueWidget.js.map +1 -1
  645. package/esm/components/WhyThisAnswer/WhyThisAnswer.css +43 -0
  646. package/esm/components/WhyThisAnswer/WhyThisAnswer.d.ts +4 -2
  647. package/esm/components/WhyThisAnswer/WhyThisAnswer.js +5 -6
  648. package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  649. package/esm/components/icons/AI.d.ts +1 -0
  650. package/esm/components/icons/Alert.d.ts +6 -0
  651. package/esm/components/icons/Alert.js +4 -0
  652. package/esm/components/icons/Alert.js.map +1 -0
  653. package/esm/components/icons/ArrowUp.d.ts +6 -0
  654. package/esm/components/icons/ArrowUp.js +4 -0
  655. package/esm/components/icons/ArrowUp.js.map +1 -0
  656. package/esm/components/icons/Bug.d.ts +6 -0
  657. package/esm/components/icons/Bug.js +4 -0
  658. package/esm/components/icons/Bug.js.map +1 -0
  659. package/esm/components/icons/Chat.d.ts +6 -0
  660. package/esm/components/icons/Chat.js +4 -0
  661. package/esm/components/icons/Chat.js.map +1 -0
  662. package/esm/components/icons/ChevronDown.d.ts +6 -0
  663. package/esm/components/icons/ChevronDown.js +4 -0
  664. package/esm/components/icons/ChevronDown.js.map +1 -0
  665. package/esm/components/icons/ChevronLeft.d.ts +1 -0
  666. package/esm/components/icons/ChevronRight.d.ts +1 -0
  667. package/esm/components/icons/ChevronUp.d.ts +6 -0
  668. package/esm/components/icons/ChevronUp.js +4 -0
  669. package/esm/components/icons/ChevronUp.js.map +1 -0
  670. package/esm/components/icons/Clear.d.ts +1 -0
  671. package/esm/components/icons/Close.d.ts +3 -1
  672. package/esm/components/icons/Close.js +1 -1
  673. package/esm/components/icons/Close.js.map +1 -1
  674. package/esm/components/icons/Code.d.ts +6 -0
  675. package/esm/components/icons/Code.js +4 -0
  676. package/esm/components/icons/Code.js.map +1 -0
  677. package/esm/components/icons/Copy.d.ts +1 -0
  678. package/esm/components/icons/Copy.js +2 -2
  679. package/esm/components/icons/Copy.js.map +1 -1
  680. package/esm/components/icons/DeepThought.d.ts +1 -0
  681. package/esm/components/icons/Delete.d.ts +1 -0
  682. package/esm/components/icons/Document.d.ts +5 -0
  683. package/esm/components/icons/Document.js +6 -0
  684. package/esm/components/icons/Document.js.map +1 -0
  685. package/esm/components/icons/Download.d.ts +1 -0
  686. package/esm/components/icons/Edit.d.ts +1 -0
  687. package/esm/components/icons/Expand.d.ts +1 -0
  688. package/esm/components/icons/Eye.d.ts +1 -0
  689. package/esm/components/icons/EyeInvisible.d.ts +1 -0
  690. package/esm/components/icons/Facebook.d.ts +1 -0
  691. package/esm/components/icons/Feedback.d.ts +1 -0
  692. package/esm/components/icons/File.d.ts +1 -0
  693. package/esm/components/icons/FileExcel.d.ts +1 -0
  694. package/esm/components/icons/FilePdf.d.ts +1 -0
  695. package/esm/components/icons/FileWord.d.ts +1 -0
  696. package/esm/components/icons/Fullscreen.d.ts +1 -0
  697. package/esm/components/icons/FullscreenExit.d.ts +1 -0
  698. package/esm/components/icons/Group.d.ts +1 -0
  699. package/esm/components/icons/History.d.ts +7 -0
  700. package/esm/components/icons/History.js +4 -0
  701. package/esm/components/icons/History.js.map +1 -0
  702. package/esm/components/icons/Image.d.ts +4 -0
  703. package/esm/components/icons/Image.js +5 -0
  704. package/esm/components/icons/Image.js.map +1 -0
  705. package/esm/components/icons/Info.d.ts +6 -0
  706. package/esm/components/icons/Info.js +4 -0
  707. package/esm/components/icons/Info.js.map +1 -0
  708. package/esm/components/icons/Link.d.ts +1 -0
  709. package/esm/components/icons/Linkedin.d.ts +1 -0
  710. package/esm/components/icons/Loading.d.ts +1 -0
  711. package/esm/components/icons/Mail.d.ts +1 -0
  712. package/esm/components/icons/MapMarker.d.ts +1 -0
  713. package/esm/components/icons/MenuHorizontal.d.ts +7 -0
  714. package/esm/components/icons/MenuHorizontal.js +4 -0
  715. package/esm/components/icons/MenuHorizontal.js.map +1 -0
  716. package/esm/components/icons/MenuVertical.d.ts +7 -0
  717. package/esm/components/icons/MenuVertical.js +4 -0
  718. package/esm/components/icons/MenuVertical.js.map +1 -0
  719. package/esm/components/icons/Message.d.ts +1 -0
  720. package/esm/components/icons/Microphone.d.ts +1 -0
  721. package/esm/components/icons/Minus.d.ts +1 -0
  722. package/esm/components/icons/MinusCircle.d.ts +1 -0
  723. package/esm/components/icons/PaperClip.d.ts +1 -0
  724. package/esm/components/icons/Picture.d.ts +1 -0
  725. package/esm/components/icons/Plus.d.ts +1 -0
  726. package/esm/components/icons/Preview.d.ts +4 -0
  727. package/esm/components/icons/Preview.js +5 -0
  728. package/esm/components/icons/Preview.js.map +1 -0
  729. package/esm/components/icons/Print.d.ts +6 -0
  730. package/esm/components/icons/Print.js +4 -0
  731. package/esm/components/icons/Print.js.map +1 -0
  732. package/esm/components/icons/QuestionHelp.d.ts +1 -0
  733. package/esm/components/icons/Refresh.d.ts +1 -0
  734. package/esm/components/icons/SelectIcon.d.ts +1 -0
  735. package/esm/components/icons/Send.d.ts +1 -0
  736. package/esm/components/icons/Setting.d.ts +1 -0
  737. package/esm/components/icons/Share.d.ts +1 -0
  738. package/esm/components/icons/Sound.d.ts +1 -0
  739. package/esm/components/icons/SoundDeactivated.d.ts +1 -0
  740. package/esm/components/icons/Telegram.d.ts +1 -0
  741. package/esm/components/icons/ThumbDown.d.ts +1 -0
  742. package/esm/components/icons/ThumbUp.d.ts +1 -0
  743. package/esm/components/icons/Translation.d.ts +1 -0
  744. package/esm/components/icons/Twitter.d.ts +1 -0
  745. package/esm/components/icons/Upload.d.ts +4 -0
  746. package/esm/components/icons/Upload.js +5 -0
  747. package/esm/components/icons/Upload.js.map +1 -0
  748. package/esm/components/icons/User.d.ts +1 -0
  749. package/esm/components/icons/Warning.d.ts +1 -0
  750. package/esm/components/icons/Warning.js +1 -1
  751. package/esm/components/icons/Warning.js.map +1 -1
  752. package/esm/components/icons/WhatsApp.d.ts +1 -0
  753. package/esm/components/layouts/Chat.js +9 -1
  754. package/esm/components/layouts/Chat.js.map +1 -1
  755. package/esm/components/layouts/FullPage.js +10 -1
  756. package/esm/components/layouts/FullPage.js.map +1 -1
  757. package/esm/components/layouts/HiddenChat.d.ts +4 -0
  758. package/esm/components/layouts/HiddenChat.js +144 -0
  759. package/esm/components/layouts/HiddenChat.js.map +1 -0
  760. package/esm/components/layouts/Totem.js +1 -1
  761. package/esm/components/layouts/Totem.js.map +1 -1
  762. package/esm/components/layouts/WebsiteAssistant.js +2 -2
  763. package/esm/components/layouts/WebsiteAssistant.js.map +1 -1
  764. package/esm/components/layouts/ZoomedFullBody.d.ts +4 -0
  765. package/esm/components/layouts/ZoomedFullBody.js +14 -0
  766. package/esm/components/layouts/ZoomedFullBody.js.map +1 -0
  767. package/esm/components/layouts/chat.css +358 -19
  768. package/esm/components/layouts/hidden-chat.css +254 -0
  769. package/esm/components/layouts/totem.css +19 -10
  770. package/esm/components/layouts/website-assistant.css +2 -2
  771. package/esm/components/layouts/zoomed-full-body.css +18 -0
  772. package/esm/components/ui/Alert.css +93 -0
  773. package/esm/components/ui/Alert.d.ts +18 -0
  774. package/esm/components/ui/Alert.js +39 -0
  775. package/esm/components/ui/Alert.js.map +1 -0
  776. package/esm/components/ui/Button.css +8 -2
  777. package/esm/components/ui/Button.d.ts +1 -0
  778. package/esm/components/ui/Button.js +2 -1
  779. package/esm/components/ui/Button.js.map +1 -1
  780. package/esm/components/ui/Card.css +5 -0
  781. package/esm/components/ui/Card.d.ts +1 -0
  782. package/esm/components/ui/Card.js +2 -1
  783. package/esm/components/ui/Card.js.map +1 -1
  784. package/esm/components/ui/ConfirmDialog.css +42 -0
  785. package/esm/components/ui/ConfirmDialog.d.ts +11 -0
  786. package/esm/components/ui/ConfirmDialog.js +9 -0
  787. package/esm/components/ui/ConfirmDialog.js.map +1 -0
  788. package/esm/components/ui/Drawer.css +121 -96
  789. package/esm/components/ui/Drawer.d.ts +17 -6
  790. package/esm/components/ui/Drawer.js +45 -14
  791. package/esm/components/ui/Drawer.js.map +1 -1
  792. package/esm/components/ui/Expandable.d.ts +3 -2
  793. package/esm/components/ui/Expandable.js +35 -20
  794. package/esm/components/ui/Expandable.js.map +1 -1
  795. package/esm/components/ui/Select.d.ts +1 -0
  796. package/esm/components/ui/Slider.css +192 -0
  797. package/esm/components/ui/Slider.d.ts +12 -0
  798. package/esm/components/ui/Slider.js +75 -0
  799. package/esm/components/ui/Slider.js.map +1 -0
  800. package/esm/components/ui/Table.css +15 -2
  801. package/esm/context/visemeContext.d.ts +24 -0
  802. package/esm/context/visemeContext.js +187 -0
  803. package/esm/context/visemeContext.js.map +1 -0
  804. package/esm/helpers/configuration.js +0 -1
  805. package/esm/helpers/configuration.js.map +1 -1
  806. package/esm/helpers/constants.d.ts +6 -0
  807. package/esm/helpers/constants.js +6 -0
  808. package/esm/helpers/constants.js.map +1 -1
  809. package/esm/helpers/error.js +53 -6
  810. package/esm/helpers/error.js.map +1 -1
  811. package/esm/helpers/markedExtendedTables.js +1 -1
  812. package/esm/helpers/markedExtendedTables.js.map +1 -1
  813. package/esm/helpers/message.d.ts +5 -0
  814. package/esm/helpers/message.js +91 -0
  815. package/esm/helpers/message.js.map +1 -0
  816. package/esm/helpers/sanitizer.d.ts +1 -0
  817. package/esm/helpers/sanitizer.js +5 -0
  818. package/esm/helpers/sanitizer.js.map +1 -0
  819. package/esm/helpers/statistics.d.ts +1 -12
  820. package/esm/helpers/statistics.js +0 -156
  821. package/esm/helpers/statistics.js.map +1 -1
  822. package/esm/helpers/stt/useSTT.d.ts +40 -0
  823. package/esm/helpers/stt/useSTT.js +523 -0
  824. package/esm/helpers/stt/useSTT.js.map +1 -0
  825. package/esm/helpers/translations.js +23 -4
  826. package/esm/helpers/translations.js.map +1 -1
  827. package/esm/helpers/tts/ttsVoiceUtility.d.ts +158 -0
  828. package/esm/helpers/tts/ttsVoiceUtility.js +182 -0
  829. package/esm/helpers/tts/ttsVoiceUtility.js.map +1 -0
  830. package/esm/helpers/tts/useTTS.d.ts +27 -0
  831. package/esm/helpers/tts/useTTS.js +293 -0
  832. package/esm/helpers/tts/useTTS.js.map +1 -0
  833. package/esm/helpers/utils.d.ts +40 -0
  834. package/esm/helpers/utils.js +143 -0
  835. package/esm/helpers/utils.js.map +1 -1
  836. package/esm/i18n.js +13 -1
  837. package/esm/i18n.js.map +1 -1
  838. package/esm/index.d.ts +14 -4
  839. package/esm/index.js +137 -85
  840. package/esm/index.js.map +1 -1
  841. package/esm/locales/de.json +593 -0
  842. package/esm/locales/en.json +250 -40
  843. package/esm/locales/es.json +593 -0
  844. package/esm/locales/fr.json +603 -0
  845. package/esm/locales/it.json +260 -48
  846. package/esm/styles.css +18 -2
  847. package/package.json +12 -13
  848. package/src/I18nWrapper.tsx +3 -60
  849. package/src/__snapshots__/index.test.tsx.snap +60 -0
  850. package/src/components/AccountForm/AccountForm.test.tsx +2 -1
  851. package/src/components/AccountForm/AccountForm.tsx +3 -5
  852. package/src/components/AgeVerificationModal/AgeVerificationModal.css +1 -1
  853. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +1 -1
  854. package/src/components/Avatar/Avatar.css +2 -2
  855. package/src/components/Avatar/Avatar.test.tsx +39 -20
  856. package/src/components/Avatar/Avatar.tsx +175 -145
  857. package/src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx +103 -0
  858. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +106 -0
  859. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +348 -0
  860. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.ts +44 -0
  861. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.ts +1250 -0
  862. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.ts +83 -0
  863. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.ts +301 -0
  864. package/src/components/Avatar/AvatarView/AvatarComponent/components/controls.tsx +100 -0
  865. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +152 -0
  866. package/src/components/{AvatarView → Avatar/AvatarView/AvatarComponent}/components/loader.tsx +1 -1
  867. package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +128 -0
  868. package/src/components/Avatar/AvatarView/AvatarComponent/lights/Lights.tsx +145 -0
  869. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +111 -0
  870. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.tsx +201 -0
  871. package/src/components/{AvatarView → Avatar/AvatarView}/AvatarView.stories.tsx +41 -7
  872. package/src/components/Avatar/AvatarView/index.tsx +194 -0
  873. package/src/components/Avatar/AvatarView/utils/hideHands.ts +11 -0
  874. package/src/components/Avatar/AvatarView/utils/useEyeBlink.ts +100 -0
  875. package/src/components/Avatar/AvatarView/utils/useMouthAnimation.ts +93 -0
  876. package/src/components/Avatar/AvatarView/utils/useSmile.ts +39 -0
  877. package/src/components/Avatar/__snapshots__/Avatar.test.tsx.snap +32 -93
  878. package/src/components/BlockedMemoriBadge/__snapshots__/BlockedMemoriBadge.test.tsx.snap +10 -0
  879. package/src/components/Chat/Chat.stories.tsx +498 -2
  880. package/src/components/Chat/Chat.test.tsx +241 -301
  881. package/src/components/Chat/Chat.tsx +120 -58
  882. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +1756 -1222
  883. package/src/components/ChatBubble/ChatBubble.css +91 -14
  884. package/src/components/ChatBubble/ChatBubble.stories.tsx +759 -16
  885. package/src/components/ChatBubble/ChatBubble.test.tsx +217 -2
  886. package/src/components/ChatBubble/ChatBubble.tsx +242 -90
  887. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +7728 -254
  888. package/src/components/ChatHistoryDrawer/ChatHistory.css +414 -0
  889. package/src/components/ChatHistoryDrawer/ChatHistory.stories.tsx +361 -0
  890. package/src/components/ChatHistoryDrawer/ChatHistory.test.tsx +107 -0
  891. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +1191 -0
  892. package/src/components/ChatHistoryDrawer/__snapshots__/ChatHistory.test.tsx.snap +27 -0
  893. package/src/components/ChatInputs/ChatInputs.stories.tsx +5 -0
  894. package/src/components/ChatInputs/ChatInputs.test.tsx +0 -6
  895. package/src/components/ChatInputs/ChatInputs.tsx +136 -25
  896. package/src/components/ChatInputs/__snapshots__/ChatInputs.test.tsx.snap +6 -138
  897. package/src/components/ChatTextArea/ChatTextArea.css +9 -5
  898. package/src/components/ChatTextArea/ChatTextArea.tsx +1 -0
  899. package/src/components/ChatTextArea/__snapshots__/ChatTextArea.test.tsx.snap +3 -0
  900. package/src/components/CompletionProviderStatus/CompletionProviderStatus.css +35 -17
  901. package/src/components/CompletionProviderStatus/CompletionProviderStatus.stories.tsx +275 -22
  902. package/src/components/CompletionProviderStatus/CompletionProviderStatus.test.tsx +6 -4
  903. package/src/components/CompletionProviderStatus/CompletionProviderStatus.tsx +192 -39
  904. package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +83 -15
  905. package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +4 -2
  906. package/src/components/FilePreview/FilePreview.css +184 -0
  907. package/src/components/FilePreview/FilePreview.stories.tsx +66 -0
  908. package/src/components/FilePreview/FilePreview.test.tsx +26 -0
  909. package/src/components/FilePreview/FilePreview.tsx +177 -0
  910. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +275 -0
  911. package/src/components/Header/Header.css +3 -3
  912. package/src/components/Header/Header.stories.tsx +21 -1
  913. package/src/components/Header/Header.test.tsx +38 -1
  914. package/src/components/Header/Header.tsx +56 -16
  915. package/src/components/Header/__snapshots__/Header.test.tsx.snap +127 -375
  916. package/src/components/KnownFacts/KnownFacts.stories.tsx +5 -4
  917. package/src/components/KnownFacts/KnownFacts.test.tsx +6 -3
  918. package/src/components/KnownFacts/KnownFacts.tsx +4 -5
  919. package/src/components/LoginDrawer/LoginDrawer.css +302 -0
  920. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +27 -1
  921. package/src/components/LoginDrawer/LoginDrawer.test.tsx +65 -8
  922. package/src/components/LoginDrawer/LoginDrawer.tsx +12 -13
  923. package/src/components/LoginDrawer/__snapshots__/LoginDrawer.test.tsx.snap +32 -0
  924. package/src/components/MediaWidget/LinkItemWidget.css +10 -0
  925. package/src/components/MediaWidget/LinkItemWidget.tsx +6 -1
  926. package/src/components/MediaWidget/MediaItemWidget.css +153 -3
  927. package/src/components/MediaWidget/MediaItemWidget.stories.tsx +6 -0
  928. package/src/components/MediaWidget/MediaItemWidget.tsx +229 -161
  929. package/src/components/MediaWidget/MediaWidget.test.tsx +2 -1
  930. package/src/components/MediaWidget/MediaWidget.tsx +5 -2
  931. package/src/components/MediaWidget/__snapshots__/LinkItemWidget.test.tsx.snap +4 -4
  932. package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +150 -249
  933. package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +2 -2
  934. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +755 -0
  935. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +163 -0
  936. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +250 -0
  937. package/src/components/MemoriArtifactSystem/components/ArtifactActions/CopyButton.stories.tsx +30 -0
  938. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.tsx +467 -0
  939. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.tsx +86 -0
  940. package/src/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.ts +619 -0
  941. package/src/components/MemoriArtifactSystem/components/ArtifactActions/index.ts +9 -0
  942. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +489 -0
  943. package/src/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.tsx +90 -0
  944. package/src/components/MemoriArtifactSystem/components/ArtifactActions/types.ts +73 -0
  945. package/src/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.ts +454 -0
  946. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +1059 -0
  947. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +428 -0
  948. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +150 -0
  949. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.tsx +79 -0
  950. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +253 -0
  951. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +169 -0
  952. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +346 -0
  953. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +165 -0
  954. package/src/components/MemoriArtifactSystem/context/ArtifactContext.tsx +69 -0
  955. package/src/components/MemoriArtifactSystem/types/artifact.types.ts +16 -0
  956. package/src/components/MemoriWidget/MemoriWidget.css +10 -4
  957. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +70 -11
  958. package/src/components/MemoriWidget/MemoriWidget.tsx +1344 -1349
  959. package/src/components/MicrophoneButton/MicrophoneButton.tsx +0 -1
  960. package/src/components/SendOnEnterMenu/SendOnEnterMenu.css +3 -3
  961. package/src/components/SettingsDrawer/SettingsDrawer.css +9 -2
  962. package/src/components/SettingsDrawer/SettingsDrawer.test.tsx +24 -0
  963. package/src/components/SettingsDrawer/SettingsDrawer.tsx +104 -14
  964. package/src/components/ShareButton/ShareButton.css +6 -0
  965. package/src/components/ShareButton/ShareButton.stories.tsx +18 -1
  966. package/src/components/ShareButton/ShareButton.test.tsx +8 -1
  967. package/src/components/ShareButton/ShareButton.tsx +49 -2
  968. package/src/components/ShareButton/__snapshots__/ShareButton.test.tsx.snap +35 -0
  969. package/src/components/SignupForm/SignupForm.test.tsx +3 -2
  970. package/src/components/SignupForm/SignupForm.tsx +8 -9
  971. package/src/components/Snippet/Snippet.stories.tsx +0 -8
  972. package/src/components/Snippet/Snippet.test.tsx +0 -1
  973. package/src/components/Snippet/Snippet.tsx +55 -36
  974. package/src/components/Snippet/__snapshots__/Snippet.test.tsx.snap +186 -2560
  975. package/src/components/StartPanel/StartPanel.css +34 -8
  976. package/src/components/StartPanel/StartPanel.stories.tsx +58 -23
  977. package/src/components/StartPanel/StartPanel.test.tsx +50 -17
  978. package/src/components/StartPanel/StartPanel.tsx +218 -152
  979. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +1340 -171
  980. package/src/components/Typing/Typing.tsx +52 -47
  981. package/src/components/UploadButton/UploadButton.css +544 -0
  982. package/src/components/UploadButton/UploadButton.stories.tsx +164 -0
  983. package/src/components/UploadButton/UploadButton.test.tsx +11 -0
  984. package/src/components/UploadButton/UploadButton.tsx +490 -0
  985. package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +422 -0
  986. package/src/components/UploadButton/UploadImages/UploadImages.tsx +362 -0
  987. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +156 -0
  988. package/src/components/UploadMenu/UploadMenu.css +3 -3
  989. package/src/components/VenueWidget/VenueWidget.css +7 -0
  990. package/src/components/VenueWidget/VenueWidget.tsx +4 -4
  991. package/src/components/WhyThisAnswer/WhyThisAnswer.css +43 -0
  992. package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +46 -4
  993. package/src/components/WhyThisAnswer/WhyThisAnswer.test.tsx +132 -11
  994. package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +36 -10
  995. package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +15 -1
  996. package/src/components/icons/Alert.tsx +31 -0
  997. package/src/components/icons/ArrowUp.tsx +28 -0
  998. package/src/components/icons/Bug.tsx +81 -0
  999. package/src/components/icons/Chat.tsx +30 -0
  1000. package/src/components/icons/ChevronDown.tsx +26 -0
  1001. package/src/components/icons/ChevronUp.tsx +24 -0
  1002. package/src/components/icons/Close.tsx +8 -1
  1003. package/src/components/icons/Code.tsx +24 -0
  1004. package/src/components/icons/Copy.tsx +8 -2
  1005. package/src/components/icons/Document.tsx +50 -0
  1006. package/src/components/icons/History.tsx +33 -0
  1007. package/src/components/icons/Image.tsx +37 -0
  1008. package/src/components/icons/Info.tsx +31 -0
  1009. package/src/components/icons/MenuHorizontal.tsx +29 -0
  1010. package/src/components/icons/MenuVertical.tsx +29 -0
  1011. package/src/components/icons/Preview.tsx +29 -0
  1012. package/src/components/icons/Print.tsx +34 -0
  1013. package/src/components/icons/Upload.tsx +34 -0
  1014. package/src/components/icons/Warning.tsx +2 -1
  1015. package/src/components/icons/icons.stories.tsx +14 -6
  1016. package/src/components/layouts/Chat.test.tsx +18 -10
  1017. package/src/components/layouts/Chat.tsx +51 -31
  1018. package/src/components/layouts/FullPage.test.tsx +42 -9
  1019. package/src/components/layouts/FullPage.tsx +55 -30
  1020. package/src/components/layouts/HiddenChat.test.tsx +40 -0
  1021. package/src/components/layouts/HiddenChat.tsx +252 -0
  1022. package/src/components/layouts/Totem.test.tsx +18 -10
  1023. package/src/components/layouts/Totem.tsx +1 -7
  1024. package/src/components/layouts/WebsiteAssistant.test.tsx +18 -10
  1025. package/src/components/layouts/WebsiteAssistant.tsx +0 -7
  1026. package/src/components/layouts/ZoomedFullBody.test.tsx +40 -0
  1027. package/src/components/layouts/ZoomedFullBody.tsx +81 -0
  1028. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +287 -197
  1029. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +827 -201
  1030. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +470 -0
  1031. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +122 -36
  1032. package/src/components/layouts/__snapshots__/WebsiteAssistant.test.tsx.snap +1 -1
  1033. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +533 -0
  1034. package/src/components/layouts/chat.css +358 -19
  1035. package/src/components/layouts/hidden-chat.css +254 -0
  1036. package/src/components/layouts/layouts.stories.tsx +257 -57
  1037. package/src/components/layouts/totem.css +19 -10
  1038. package/src/components/layouts/website-assistant.css +2 -2
  1039. package/src/components/layouts/zoomed-full-body.css +18 -0
  1040. package/src/components/ui/Alert.css +93 -0
  1041. package/src/components/ui/Alert.stories.tsx +137 -0
  1042. package/src/components/ui/Alert.test.tsx +129 -0
  1043. package/src/components/ui/Alert.tsx +123 -0
  1044. package/src/components/ui/Button.css +8 -2
  1045. package/src/components/ui/Button.tsx +3 -0
  1046. package/src/components/ui/Card.css +5 -0
  1047. package/src/components/ui/Card.tsx +4 -0
  1048. package/src/components/ui/ConfirmDialog.css +42 -0
  1049. package/src/components/ui/ConfirmDialog.stories.tsx +216 -0
  1050. package/src/components/ui/ConfirmDialog.test.tsx +124 -0
  1051. package/src/components/ui/ConfirmDialog.tsx +58 -0
  1052. package/src/components/ui/Drawer.css +121 -96
  1053. package/src/components/ui/Drawer.stories.tsx +152 -67
  1054. package/src/components/ui/Drawer.test.tsx +6 -2
  1055. package/src/components/ui/Drawer.tsx +202 -90
  1056. package/src/components/ui/Expandable.stories.tsx +128 -1
  1057. package/src/components/ui/Expandable.tsx +44 -22
  1058. package/src/components/ui/Slider.css +192 -0
  1059. package/src/components/ui/Slider.stories.tsx +63 -0
  1060. package/src/components/ui/Slider.tsx +142 -0
  1061. package/src/components/ui/Table.css +15 -2
  1062. package/src/components/ui/__snapshots__/Alert.test.tsx.snap +59 -0
  1063. package/src/components/ui/__snapshots__/ConfirmDialog.test.tsx.snap +35 -0
  1064. package/src/context/visemeContext.tsx +391 -0
  1065. package/src/helpers/configuration.ts +0 -1
  1066. package/src/helpers/constants.ts +10 -0
  1067. package/src/helpers/error.ts +58 -6
  1068. package/src/helpers/markedExtendedTables.js +1 -1
  1069. package/src/helpers/message.ts +148 -0
  1070. package/src/helpers/sanitizer.ts +17 -0
  1071. package/src/helpers/statistics.ts +1 -195
  1072. package/src/helpers/stt/useSTT.ts +774 -0
  1073. package/src/helpers/translations.ts +29 -7
  1074. package/src/helpers/tts/ttsVoiceUtility.ts +275 -0
  1075. package/src/helpers/tts/useTTS.ts +464 -0
  1076. package/src/helpers/utils.test.ts +38 -1
  1077. package/src/helpers/utils.ts +200 -0
  1078. package/src/i18n.ts +13 -1
  1079. package/src/index.stories.tsx +266 -23
  1080. package/src/index.test.tsx +130 -0
  1081. package/src/index.tsx +245 -153
  1082. package/src/locales/de.json +621 -0
  1083. package/src/locales/en.json +251 -40
  1084. package/src/locales/es.json +593 -0
  1085. package/src/locales/fr.json +603 -0
  1086. package/src/locales/it.json +262 -48
  1087. package/src/mocks/data.ts +272 -9
  1088. package/src/styles.css +18 -2
  1089. package/dist/components/AttachmentMediaModal/AttachmentMediaModal.d.ts +0 -14
  1090. package/dist/components/AttachmentMediaModal/AttachmentMediaModal.js +0 -66
  1091. package/dist/components/AttachmentMediaModal/AttachmentMediaModal.js.map +0 -1
  1092. package/dist/components/AvatarView/components/avatar.d.ts +0 -9
  1093. package/dist/components/AvatarView/components/avatar.js +0 -35
  1094. package/dist/components/AvatarView/components/avatar.js.map +0 -1
  1095. package/dist/components/AvatarView/components/fullbodyAvatar.d.ts +0 -10
  1096. package/dist/components/AvatarView/components/fullbodyAvatar.js +0 -62
  1097. package/dist/components/AvatarView/components/fullbodyAvatar.js.map +0 -1
  1098. package/dist/components/AvatarView/components/loader.js.map +0 -1
  1099. package/dist/components/AvatarView/index.d.ts +0 -17
  1100. package/dist/components/AvatarView/index.js +0 -35
  1101. package/dist/components/AvatarView/index.js.map +0 -1
  1102. package/dist/components/AvatarView/utils/useEyeBlink.d.ts +0 -2
  1103. package/dist/components/AvatarView/utils/useEyeBlink.js +0 -40
  1104. package/dist/components/AvatarView/utils/useEyeBlink.js.map +0 -1
  1105. package/dist/components/AvatarView/utils/useHeadMovement.js.map +0 -1
  1106. package/dist/components/AvatarView/utils/useLoadingMorphAnim.js.map +0 -1
  1107. package/dist/components/AvatarView/utils/useMouthSpeaking.d.ts +0 -2
  1108. package/dist/components/AvatarView/utils/useMouthSpeaking.js +0 -60
  1109. package/dist/components/AvatarView/utils/useMouthSpeaking.js.map +0 -1
  1110. package/dist/components/AvatarView/utils/useSmile.js +0 -30
  1111. package/dist/components/AvatarView/utils/useSmile.js.map +0 -1
  1112. package/dist/components/AvatarView/utils/utils.js.map +0 -1
  1113. package/dist/components/ExportHistoryButton/ExportHistoryButton.d.ts +0 -14
  1114. package/dist/components/ExportHistoryButton/ExportHistoryButton.js +0 -38
  1115. package/dist/components/ExportHistoryButton/ExportHistoryButton.js.map +0 -1
  1116. package/dist/components/ImageUpload/ImageUpload.css +0 -168
  1117. package/dist/components/ImageUpload/ImageUpload.d.ts +0 -28
  1118. package/dist/components/ImageUpload/ImageUpload.js +0 -163
  1119. package/dist/components/ImageUpload/ImageUpload.js.map +0 -1
  1120. package/dist/components/layouts/Default.d.ts +0 -17
  1121. package/dist/components/layouts/Default.js +0 -8
  1122. package/dist/components/layouts/Default.js.map +0 -1
  1123. package/dist/components/ui/Message.d.ts +0 -17
  1124. package/dist/components/ui/Message.js +0 -13
  1125. package/dist/components/ui/Message.js.map +0 -1
  1126. package/dist/helpers/tenant.d.ts +0 -2
  1127. package/dist/helpers/tenant.js +0 -40
  1128. package/dist/helpers/tenant.js.map +0 -1
  1129. package/esm/components/AttachmentMediaModal/AttachmentMediaModal.d.ts +0 -14
  1130. package/esm/components/AttachmentMediaModal/AttachmentMediaModal.js +0 -63
  1131. package/esm/components/AttachmentMediaModal/AttachmentMediaModal.js.map +0 -1
  1132. package/esm/components/AvatarView/components/avatar.d.ts +0 -9
  1133. package/esm/components/AvatarView/components/avatar.js +0 -31
  1134. package/esm/components/AvatarView/components/avatar.js.map +0 -1
  1135. package/esm/components/AvatarView/components/fullbodyAvatar.d.ts +0 -10
  1136. package/esm/components/AvatarView/components/fullbodyAvatar.js +0 -58
  1137. package/esm/components/AvatarView/components/fullbodyAvatar.js.map +0 -1
  1138. package/esm/components/AvatarView/components/loader.js.map +0 -1
  1139. package/esm/components/AvatarView/index.d.ts +0 -17
  1140. package/esm/components/AvatarView/index.js +0 -31
  1141. package/esm/components/AvatarView/index.js.map +0 -1
  1142. package/esm/components/AvatarView/utils/useEyeBlink.d.ts +0 -2
  1143. package/esm/components/AvatarView/utils/useEyeBlink.js +0 -37
  1144. package/esm/components/AvatarView/utils/useEyeBlink.js.map +0 -1
  1145. package/esm/components/AvatarView/utils/useHeadMovement.js.map +0 -1
  1146. package/esm/components/AvatarView/utils/useLoadingMorphAnim.js.map +0 -1
  1147. package/esm/components/AvatarView/utils/useMouthSpeaking.d.ts +0 -2
  1148. package/esm/components/AvatarView/utils/useMouthSpeaking.js +0 -57
  1149. package/esm/components/AvatarView/utils/useMouthSpeaking.js.map +0 -1
  1150. package/esm/components/AvatarView/utils/useSmile.js +0 -27
  1151. package/esm/components/AvatarView/utils/useSmile.js.map +0 -1
  1152. package/esm/components/AvatarView/utils/utils.js.map +0 -1
  1153. package/esm/components/ExportHistoryButton/ExportHistoryButton.d.ts +0 -14
  1154. package/esm/components/ExportHistoryButton/ExportHistoryButton.js +0 -35
  1155. package/esm/components/ExportHistoryButton/ExportHistoryButton.js.map +0 -1
  1156. package/esm/components/ImageUpload/ImageUpload.css +0 -168
  1157. package/esm/components/ImageUpload/ImageUpload.d.ts +0 -28
  1158. package/esm/components/ImageUpload/ImageUpload.js +0 -160
  1159. package/esm/components/ImageUpload/ImageUpload.js.map +0 -1
  1160. package/esm/components/layouts/Default.d.ts +0 -17
  1161. package/esm/components/layouts/Default.js +0 -5
  1162. package/esm/components/layouts/Default.js.map +0 -1
  1163. package/esm/components/ui/Message.d.ts +0 -17
  1164. package/esm/components/ui/Message.js +0 -10
  1165. package/esm/components/ui/Message.js.map +0 -1
  1166. package/esm/helpers/tenant.d.ts +0 -2
  1167. package/esm/helpers/tenant.js +0 -36
  1168. package/esm/helpers/tenant.js.map +0 -1
  1169. package/src/components/AvatarView/components/avatar.tsx +0 -57
  1170. package/src/components/AvatarView/components/fullbodyAvatar.tsx +0 -99
  1171. package/src/components/AvatarView/index.tsx +0 -101
  1172. package/src/components/AvatarView/utils/useEyeBlink.ts +0 -48
  1173. package/src/components/AvatarView/utils/useMouthSpeaking.ts +0 -70
  1174. package/src/components/AvatarView/utils/useSmile.ts +0 -31
  1175. package/src/components/ExportHistoryButton/ExportHistoryButton.stories.tsx +0 -73
  1176. package/src/components/ExportHistoryButton/ExportHistoryButton.test.tsx +0 -69
  1177. package/src/components/ExportHistoryButton/ExportHistoryButton.tsx +0 -103
  1178. package/src/components/ExportHistoryButton/__snapshots__/ExportHistoryButton.test.tsx.snap +0 -239
  1179. package/src/helpers/statistics.test.ts +0 -213
  1180. package/src/helpers/tenant.ts +0 -47
  1181. /package/dist/components/{AvatarView → Avatar/AvatarView}/utils/useHeadMovement.d.ts +0 -0
  1182. /package/dist/components/{AvatarView → Avatar/AvatarView}/utils/useHeadMovement.js +0 -0
  1183. /package/dist/components/{AvatarView → Avatar/AvatarView}/utils/useLoadingMorphAnim.d.ts +0 -0
  1184. /package/dist/components/{AvatarView → Avatar/AvatarView}/utils/useLoadingMorphAnim.js +0 -0
  1185. /package/dist/components/{AvatarView → Avatar/AvatarView}/utils/useSmile.d.ts +0 -0
  1186. /package/dist/components/{AvatarView → Avatar/AvatarView}/utils/utils.d.ts +0 -0
  1187. /package/dist/components/{AvatarView → Avatar/AvatarView}/utils/utils.js +0 -0
  1188. /package/esm/components/{AvatarView → Avatar/AvatarView}/utils/useHeadMovement.d.ts +0 -0
  1189. /package/esm/components/{AvatarView → Avatar/AvatarView}/utils/useHeadMovement.js +0 -0
  1190. /package/esm/components/{AvatarView → Avatar/AvatarView}/utils/useLoadingMorphAnim.d.ts +0 -0
  1191. /package/esm/components/{AvatarView → Avatar/AvatarView}/utils/useLoadingMorphAnim.js +0 -0
  1192. /package/esm/components/{AvatarView → Avatar/AvatarView}/utils/useSmile.d.ts +0 -0
  1193. /package/esm/components/{AvatarView → Avatar/AvatarView}/utils/utils.d.ts +0 -0
  1194. /package/esm/components/{AvatarView → Avatar/AvatarView}/utils/utils.js +0 -0
  1195. /package/src/components/{AvatarView → Avatar/AvatarView}/utils/useHeadMovement.ts +0 -0
  1196. /package/src/components/{AvatarView → Avatar/AvatarView}/utils/useLoadingMorphAnim.ts +0 -0
  1197. /package/src/components/{AvatarView → Avatar/AvatarView}/utils/utils.ts +0 -0
@@ -1,9 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useEffect, useCallback, useRef, } from 'react';
2
+ import { useState, useEffect, useCallback, useRef, useMemo, } from 'react';
3
3
  import { useTranslation } from 'react-i18next';
4
4
  import memoriApiClient from '@memori.ai/memori-api-client';
5
5
  import { AudioContext } from 'standardized-audio-context';
6
- import * as speechSdk from 'microsoft-cognitiveservices-speech-sdk';
7
6
  import cx from 'classnames';
8
7
  import { DateTime } from 'luxon';
9
8
  import toast from 'react-hot-toast';
@@ -12,7 +11,6 @@ import MemoriAuth from '../Auth/Auth';
12
11
  import Chat from '../Chat/Chat';
13
12
  import StartPanel from '../StartPanel/StartPanel';
14
13
  import Avatar from '../Avatar/Avatar';
15
- import ChangeMode from '../ChangeMode/ChangeMode';
16
14
  import Header from '../Header/Header';
17
15
  import PoweredBy from '../PoweredBy/PoweredBy';
18
16
  import AgeVerificationModal from '../AgeVerificationModal/AgeVerificationModal';
@@ -20,17 +18,26 @@ import SettingsDrawer from '../SettingsDrawer/SettingsDrawer';
20
18
  import KnownFacts from '../KnownFacts/KnownFacts';
21
19
  import ExpertsDrawer from '../ExpertsDrawer/ExpertsDrawer';
22
20
  import LoginDrawer from '../LoginDrawer/LoginDrawer';
21
+ import Button from '../ui/Button';
22
+ import CloseIcon from '../icons/Close';
23
23
  import FullPageLayout from '../layouts/FullPage';
24
24
  import TotemLayout from '../layouts/Totem';
25
25
  import ChatLayout from '../layouts/Chat';
26
26
  import WebsiteAssistantLayout from '../layouts/WebsiteAssistant';
27
+ import HiddenChatLayout from '../layouts/HiddenChat';
28
+ import ZoomedFullBodyLayout from '../layouts/ZoomedFullBody';
27
29
  import { getTranslation } from '../../helpers/translations';
28
30
  import { setLocalConfig, getLocalConfig, removeLocalConfig, } from '../../helpers/configuration';
29
- import { hasTouchscreen, stripDuplicates, stripEmojis, escapeHTML, stripMarkdown, } from '../../helpers/utils';
30
- import { anonTag } from '../../helpers/constants';
31
+ import { hasTouchscreen, stripDuplicates, installMathJax, } from '../../helpers/utils';
32
+ import { getTTSVoice } from '../../helpers/tts/ttsVoiceUtility';
33
+ import { allowedMediaTypes, anonTag, uiLanguages, } from '../../helpers/constants';
31
34
  import { getErrori18nKey } from '../../helpers/error';
32
- import { getGamificationLevel } from '../../helpers/statistics';
33
35
  import { getCredits } from '../../helpers/credits';
36
+ import { sanitizeText } from '../../helpers/sanitizer';
37
+ import { useTTS } from '../../helpers/tts/useTTS';
38
+ import Alert from '../ui/Alert';
39
+ import ChatHistoryDrawer from '../ChatHistoryDrawer/ChatHistory';
40
+ import { useSTT } from '../../helpers/stt/useSTT';
34
41
  const getMemoriState = (integrationId) => {
35
42
  var _a, _b, _c, _d, _f;
36
43
  let widget = integrationId
@@ -46,7 +53,11 @@ const getMemoriState = (integrationId) => {
46
53
  if (!engineState)
47
54
  return null;
48
55
  let dialogState = JSON.parse(engineState);
49
- return dialogState;
56
+ let loginToken = getLocalConfig('loginToken', undefined);
57
+ return {
58
+ ...dialogState,
59
+ loginToken,
60
+ };
50
61
  };
51
62
  const typeMessage = (message, waitForPrevious = true, hidden = false, typingText, useLoaderTextAsMsg = false, hasBatchQueued = false) => {
52
63
  const e = new CustomEvent('MemoriTextEntered', {
@@ -141,35 +152,37 @@ window.getMemoriState = getMemoriState;
141
152
  window.typeMessage = typeMessage;
142
153
  window.typeMessageHidden = typeMessageHidden;
143
154
  window.typeBatchMessages = typeBatchMessages;
144
- let recognizer;
145
- let speechConfig;
146
- let speechSynthesizer;
147
- let audioDestination;
148
155
  let audioContext;
149
156
  let memoriPassword;
150
157
  let speakerMuted = false;
151
- let memoriSpeaking = false;
152
158
  let userToken;
153
- const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenantID, memoriLang, multilingual, integration, layout = 'DEFAULT', customLayout, showInstruct = false, showShare, preview = false, embed = false, showInputs = true, showDates = false, showContextPerLine = false, showSettings = true, showTypingText = false, showClear = false, showLogin = false, showOnlyLastMessages, height = '100vh', secret, baseUrl = 'https://aisuru.com', apiUrl = 'https://backend.memori.ai', initialContextVars, initialQuestion, ogImage, sessionID: initialSessionID, tenant, personification, authToken, AZURE_COGNITIVE_SERVICES_TTS_KEY, defaultSpeakerActive = true, onStateChange, additionalInfo, additionalSettings, customMediaRenderer, userAvatar, }) => {
154
- var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _t, _u, _v, _w, _x, _y, _z, _0, _1;
159
+ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenantID, memoriLang, multilingual, integration, layout, customLayout, showShare, preview = false, embed = false, showCopyButton = true, showTranslationOriginal = false, showInputs = true, showDates = false, showContextPerLine = false, showSettings, showTypingText = false, showClear = false, showLogin = false, showUpload, showOnlyLastMessages, showChatHistory, showReasoning, height = '100vh', secret, baseUrl = 'https://aisuru-staging.aclambda.online', apiURL = 'https://backend-staging.memori.ai', engineURL = 'https://engine-staging.memori.ai', initialContextVars, initialQuestion, ttsProvider, ogImage, sessionID: initialSessionID, tenant, personification, authToken, enableAudio, defaultSpeakerActive = true, disableTextEnteredEvents = false, onStateChange, additionalInfo, additionalSettings, customMediaRenderer, userAvatar, useMathFormatting = false, autoStart = false, applyVarsToRoot = false, showFunctionCache = false, }) => {
160
+ var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7;
155
161
  const { t, i18n } = useTranslation();
156
162
  const [isClient, setIsClient] = useState(false);
157
163
  useEffect(() => {
158
164
  setIsClient(true);
159
165
  }, []);
160
- const client = memoriApiClient(apiUrl);
161
- const { initSession, postTextEnteredEvent, postPlaceChangedEvent, postDateChangedEvent, postTimeoutEvent, postTagChangedEvent, getSession, getContentQualityIndexes, getExpertReferences, } = client;
166
+ const client = memoriApiClient(apiURL, engineURL);
167
+ const { initSession, deleteSession, postTextEnteredEvent, postPlaceChangedEvent, postDateChangedEvent, postTimeoutEvent, postTagChangedEvent, getSession, getExpertReferences, getSessionChatLogs, } = client;
162
168
  const [instruct, setInstruct] = useState(false);
169
+ const [enableFocusChatInput, setEnableFocusChatInput] = useState(true);
163
170
  const [loginToken, setLoginToken] = useState((_a = additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _a !== void 0 ? _a : authToken);
164
171
  const [user, setUser] = useState({
165
172
  avatarURL: typeof userAvatar === 'string' ? userAvatar : undefined,
166
173
  });
167
174
  useEffect(() => {
168
- if (loginToken && !(user === null || user === void 0 ? void 0 : user.userID) && showLogin) {
175
+ if (loginToken &&
176
+ !(user === null || user === void 0 ? void 0 : user.userID) &&
177
+ (showLogin || memori.requireLoginToken)) {
169
178
  client.backend.getCurrentUser(loginToken).then(({ user, resultCode }) => {
170
179
  if (user && resultCode === 0) {
171
180
  setUser(user);
172
181
  setLocalConfig('loginToken', loginToken);
182
+ if (!birthDate && user.birthDate) {
183
+ setBirthDate(user.birthDate);
184
+ setLocalConfig('birthDate', user.birthDate);
185
+ }
173
186
  }
174
187
  else {
175
188
  removeLocalConfig('loginToken');
@@ -190,27 +203,44 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
190
203
  : !!(integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.multilanguage);
191
204
  const forcedTimeout = integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.forcedTimeout;
192
205
  const [userLang, setUserLang] = useState((_o = (_m = (_l = (_k = memoriLang !== null && memoriLang !== void 0 ? memoriLang : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.lang) !== null && _k !== void 0 ? _k : language) !== null && _l !== void 0 ? _l : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.uiLang) !== null && _m !== void 0 ? _m : i18n.language) !== null && _o !== void 0 ? _o : 'IT');
206
+ const applyMathFormatting = useMathFormatting !== undefined
207
+ ? useMathFormatting
208
+ : !!(integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.useMathFormatting);
209
+ useEffect(() => {
210
+ if (applyMathFormatting)
211
+ installMathJax();
212
+ }, [applyMathFormatting]);
213
+ useEffect(() => {
214
+ if (isMultilanguageEnabled &&
215
+ userLang &&
216
+ uiLanguages.includes(userLang.toLowerCase())) {
217
+ i18n.changeLanguage(userLang.toLowerCase());
218
+ }
219
+ }, [userLang]);
193
220
  const [loading, setLoading] = useState(false);
194
221
  const [memoriTyping, setMemoriTyping] = useState(false);
195
222
  const [typingText, setTypingText] = useState();
196
223
  const selectedLayout = layout || (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.layout) || 'DEFAULT';
197
- const [hasUserActivatedSpeak, setHasUserActivatedSpeak] = useState(false);
224
+ const defaultEnableAudio = (_p = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _p !== void 0 ? _p : true;
198
225
  const [hasUserActivatedListening, setHasUserActivatedListening] = useState(false);
199
226
  const [showPositionDrawer, setShowPositionDrawer] = useState(false);
200
227
  const [showSettingsDrawer, setShowSettingsDrawer] = useState(false);
228
+ const [showChatHistoryDrawer, setShowChatHistoryDrawer] = useState(false);
201
229
  const [showKnownFactsDrawer, setShowKnownFactsDrawer] = useState(false);
202
230
  const [showExpertsDrawer, setShowExpertsDrawer] = useState(false);
203
- const [muteSpeaker, setMuteSpeaker] = useState(!defaultSpeakerActive);
204
231
  const [continuousSpeech, setContinuousSpeech] = useState(false);
205
232
  const [continuousSpeechTimeout, setContinuousSpeechTimeout] = useState(2);
206
- const [isPlayingAudio, setIsPlayingAudio] = useState(false);
207
233
  const [controlsPosition, setControlsPosition] = useState('center');
234
+ const [enablePositionControls, setEnablePositionControls] = useState(false);
235
+ const [avatarType, setAvatarType] = useState(null);
208
236
  const [hideEmissions, setHideEmissions] = useState(false);
237
+ const speechSynthesizerRef = useRef(null);
238
+ const [memoriSpeaking, setMemoriSpeaking] = useState(false);
209
239
  useEffect(() => {
210
- setIsPlayingAudio(!!speechSynthesizer);
211
- memoriSpeaking = !!speechSynthesizer;
212
- }, [speechSynthesizer]);
240
+ setMemoriSpeaking(!!speechSynthesizerRef.current);
241
+ }, [speechSynthesizerRef.current]);
213
242
  useEffect(() => {
243
+ var _a;
214
244
  let defaultControlsPosition = 'bottom';
215
245
  let microphoneMode = getLocalConfig('microphoneMode', 'HOLD_TO_TALK');
216
246
  if (window.innerWidth <= 768) {
@@ -224,17 +254,27 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
224
254
  else {
225
255
  defaultControlsPosition = 'bottom';
226
256
  }
227
- setMuteSpeaker(getLocalConfig('muteSpeaker', !defaultSpeakerActive));
228
- speakerMuted = getLocalConfig('muteSpeaker', !defaultSpeakerActive);
229
- setContinuousSpeech(microphoneMode === 'CONTINUOUS');
257
+ setContinuousSpeech(speakerMuted ? false : microphoneMode === 'CONTINUOUS');
230
258
  setContinuousSpeechTimeout(getLocalConfig('continuousSpeechTimeout', 2));
231
259
  setControlsPosition(getLocalConfig('controlsPosition', defaultControlsPosition));
260
+ setAvatarType(getLocalConfig('avatarType', 'avatar3d'));
232
261
  setHideEmissions(getLocalConfig('hideEmissions', false));
233
262
  if (!(additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) && !authToken) {
234
263
  setLoginToken(getLocalConfig('loginToken', undefined));
235
264
  userToken = getLocalConfig('loginToken', undefined);
265
+ setBirthDate(getLocalConfig('birthDate', undefined));
266
+ }
267
+ if (!((_a = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _a !== void 0 ? _a : true)) {
268
+ setLocalConfig('muteSpeaker', true);
236
269
  }
237
270
  }, []);
271
+ useEffect(() => {
272
+ var _a;
273
+ const isAudioEnabled = (_a = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _a !== void 0 ? _a : true;
274
+ if (!isAudioEnabled) {
275
+ setLocalConfig('muteSpeaker', true);
276
+ }
277
+ }, [enableAudio, integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio]);
238
278
  const [memoriPwd, setMemoriPwd] = useState(secret);
239
279
  const [memoriTokens, setMemoriTokens] = useState();
240
280
  const [authModalState, setAuthModalState] = useState(null);
@@ -242,7 +282,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
242
282
  const applyPosition = async (venue, sessionID) => {
243
283
  var _a;
244
284
  const session = sessionID !== null && sessionID !== void 0 ? sessionID : sessionId;
245
- if (venue && session) {
285
+ if (venue && session && memori.needsPosition) {
246
286
  const { currentState, ...response } = await postPlaceChangedEvent({
247
287
  sessionId: session,
248
288
  placeName: venue.placeName,
@@ -265,24 +305,25 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
265
305
  const setPosition = (venue) => {
266
306
  _setPosition(venue);
267
307
  applyPosition(venue);
268
- if (venue) {
308
+ if (venue && memori.needsPosition) {
269
309
  setLocalConfig('position', JSON.stringify(venue));
270
310
  }
271
- else {
311
+ else if (!venue) {
272
312
  removeLocalConfig('position');
273
313
  }
274
314
  };
275
315
  useEffect(() => {
276
- const position = getLocalConfig('position', undefined);
277
- if (position) {
278
- _setPosition(position);
316
+ if (memori.needsPosition) {
317
+ const position = getLocalConfig('position', undefined);
318
+ if (position) {
319
+ _setPosition(position);
320
+ }
279
321
  }
280
- }, []);
322
+ }, [memori.needsPosition]);
281
323
  const [userMessage, setUserMessage] = useState('');
282
324
  const onChangeUserMessage = (value) => {
283
325
  if (!value || value === '\n' || value.trim() === '') {
284
326
  setUserMessage('');
285
- resetInteractionTimeout();
286
327
  return;
287
328
  }
288
329
  setUserMessage(value);
@@ -302,8 +343,9 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
302
343
  ];
303
344
  });
304
345
  };
346
+ const [chatLogID, setChatLogID] = useState(undefined);
305
347
  const sendMessage = async (text, media, newSessionId, translate = true, translatedText, hidden = false, typingText, useLoaderTextAsMsg = false, hasBatchQueued = false) => {
306
- var _a, _b, _c, _d;
348
+ var _a, _b, _c, _d, _f;
307
349
  const sessionID = newSessionId ||
308
350
  sessionId ||
309
351
  ((_a = window.getMemoriState()) === null || _a === void 0 ? void 0 : _a.sessionID);
@@ -323,32 +365,58 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
323
365
  setTypingText(typingText);
324
366
  let msg = text;
325
367
  let gotError = false;
326
- if (translate &&
327
- !instruct &&
328
- isMultilanguageEnabled &&
329
- userLang.toUpperCase() !== language.toUpperCase()) {
330
- const translation = await getTranslation(text, language, userLang, baseUrl);
331
- msg = translation.text;
332
- }
333
- const { currentState, ...response } = await postTextEnteredEvent({
334
- sessionId: sessionID,
335
- text: msg,
336
- });
337
- if (response.resultCode === 0 && currentState) {
338
- const emission = useLoaderTextAsMsg && typingText
339
- ? typingText
340
- : (_b = currentState.emission) !== null && _b !== void 0 ? _b : currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission;
341
- if (currentState.state === 'X4' && memori.giverTag) {
342
- const { currentState, ...resp } = await postTagChangedEvent(sessionID, memori.giverTag);
343
- if (resp.resultCode === 0) {
344
- setCurrentDialogState(currentState);
368
+ try {
369
+ if (!hidden &&
370
+ translate &&
371
+ isMultilanguageEnabled &&
372
+ userLang.toUpperCase() !== language.toUpperCase()) {
373
+ const translation = await getTranslation(text, language, userLang, baseUrl);
374
+ msg = translation.text;
375
+ }
376
+ const findMediaDocument = media === null || media === void 0 ? void 0 : media.find(m => { var _a; return !m.mediumID && ((_a = m.properties) === null || _a === void 0 ? void 0 : _a.isAttachedFile); });
377
+ if (findMediaDocument) {
378
+ msg = msg + ' ' + findMediaDocument.content;
379
+ }
380
+ const mediaDocuments = media === null || media === void 0 ? void 0 : media.filter(m => { var _a; return !m.mediumID && ((_a = m.properties) === null || _a === void 0 ? void 0 : _a.isAttachedFile); });
381
+ if (mediaDocuments && mediaDocuments.length > 0) {
382
+ const documentContents = mediaDocuments
383
+ .map(doc => doc.content)
384
+ .join(' ');
385
+ msg = msg + ' ' + documentContents;
386
+ }
387
+ const { currentState, ...response } = await postTextEnteredEvent({
388
+ sessionId: sessionID,
389
+ text: msg,
390
+ });
391
+ if (response.resultCode === 0 && currentState) {
392
+ setChatLogID(undefined);
393
+ const emission = useLoaderTextAsMsg && typingText
394
+ ? typingText
395
+ : (_b = currentState.emission) !== null && _b !== void 0 ? _b : currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission;
396
+ if (userLang.toLowerCase() !== language.toLowerCase() &&
397
+ emission &&
398
+ isMultilanguageEnabled) {
399
+ currentState.emission = emission;
400
+ translateDialogState(currentState, userLang, msg).then(ts => {
401
+ let text = ts.translatedEmission || ts.emission;
402
+ if (text && text.trim() && !speakerMuted) {
403
+ handleSpeak(text);
404
+ }
405
+ });
406
+ }
407
+ else {
408
+ setCurrentDialogState({
409
+ ...currentState,
410
+ emission,
411
+ });
345
412
  if (emission) {
346
413
  pushMessage({
347
414
  text: emission,
348
415
  emitter: currentState.emitter,
349
- media: currentState.media,
416
+ media: (_c = currentState.emittedMedia) !== null && _c !== void 0 ? _c : currentState.media,
350
417
  fromUser: false,
351
418
  questionAnswered: msg,
419
+ generatedByAI: !!currentState.completion,
352
420
  contextVars: currentState.contextVars,
353
421
  date: currentState.currentDate,
354
422
  placeName: currentState.currentPlaceName,
@@ -358,126 +426,54 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
358
426
  tag: currentState.currentTag,
359
427
  memoryTags: currentState.memoryTags,
360
428
  });
361
- speak(emission);
362
- }
363
- }
364
- else {
365
- console.error(response, resp);
366
- toast.error(t(getErrori18nKey(resp.resultCode)));
367
- gotError = true;
368
- }
369
- }
370
- else if (currentState.state === 'X2d' && memori.giverTag) {
371
- const { currentState, ...resp } = await postTextEnteredEvent({
372
- sessionId: sessionID,
373
- text: Math.random().toString().substring(2, 8),
374
- });
375
- if (resp.resultCode === 0) {
376
- const { currentState, ...resp } = await postTagChangedEvent(sessionID, memori.giverTag);
377
- if (resp.resultCode === 0) {
378
- setCurrentDialogState(currentState);
379
- if (emission) {
380
- pushMessage({
381
- text: emission,
382
- emitter: currentState.emitter,
383
- media: currentState.media,
384
- fromUser: false,
385
- questionAnswered: msg,
386
- contextVars: currentState.contextVars,
387
- date: currentState.currentDate,
388
- placeName: currentState.currentPlaceName,
389
- placeLatitude: currentState.currentLatitude,
390
- placeLongitude: currentState.currentLongitude,
391
- placeUncertaintyKm: currentState.currentUncertaintyKm,
392
- tag: currentState.currentTag,
393
- memoryTags: currentState.memoryTags,
394
- });
395
- speak(emission);
429
+ if (emission && emission.trim()) {
430
+ handleSpeak(emission);
396
431
  }
397
432
  }
398
- else {
399
- console.error(response, resp);
400
- toast.error(t(getErrori18nKey(resp.resultCode)));
401
- gotError = true;
402
- }
403
- }
404
- else {
405
- console.error(response, resp);
406
- toast.error(t(getErrori18nKey(resp.resultCode)));
407
- gotError = true;
408
433
  }
409
434
  }
410
- else if (userLang.toLowerCase() !== language.toLowerCase() &&
411
- emission &&
412
- !instruct &&
413
- isMultilanguageEnabled) {
414
- translateDialogState(currentState, userLang, msg).then(ts => {
415
- if (ts.emission) {
416
- speak(ts.emission);
435
+ else if (response.resultCode === 404) {
436
+ setHistory(h => [...h.slice(0, h.length - 1)]);
437
+ reopenSession(false, memoriPwd || memori.secretToken, memoriTokens, undefined, undefined, {
438
+ PATHNAME: window.location.pathname,
439
+ ROUTE: ((_f = (_d = window.location.pathname) === null || _d === void 0 ? void 0 : _d.split('/')) === null || _f === void 0 ? void 0 : _f.pop()) || '',
440
+ ...(initialContextVars || {}),
441
+ }, initialQuestion).then(state => {
442
+ console.info('session timeout');
443
+ if (state === null || state === void 0 ? void 0 : state.sessionID) {
444
+ setTimeout(() => {
445
+ sendMessage(text, media, state === null || state === void 0 ? void 0 : state.sessionID);
446
+ }, 500);
417
447
  }
418
448
  });
419
449
  }
420
- else {
421
- setCurrentDialogState({
422
- ...currentState,
423
- emission,
424
- });
425
- if (emission) {
426
- pushMessage({
427
- text: emission,
428
- emitter: currentState.emitter,
429
- media: currentState.media,
430
- fromUser: false,
431
- questionAnswered: msg,
432
- generatedByAI: !!currentState.completion,
433
- contextVars: currentState.contextVars,
434
- date: currentState.currentDate,
435
- placeName: currentState.currentPlaceName,
436
- placeLatitude: currentState.currentLatitude,
437
- placeLongitude: currentState.currentLongitude,
438
- placeUncertaintyKm: currentState.currentUncertaintyKm,
439
- tag: currentState.currentTag,
440
- memoryTags: currentState.memoryTags,
441
- });
442
- speak(emission);
443
- }
444
- }
445
450
  }
446
- else if (response.resultCode === 404) {
447
- setHistory(h => [...h.slice(0, h.length - 1)]);
448
- reopenSession(false, memoriPwd || memori.secretToken, memoriTokens, instruct && memori.giverTag ? memori.giverTag : undefined, instruct && memori.giverPIN ? memori.giverPIN : undefined, {
449
- PATHNAME: window.location.pathname,
450
- ROUTE: ((_d = (_c = window.location.pathname) === null || _c === void 0 ? void 0 : _c.split('/')) === null || _d === void 0 ? void 0 : _d.pop()) || '',
451
- ...(initialContextVars || {}),
452
- }, initialQuestion).then(state => {
453
- console.info('session timeout');
454
- if (state === null || state === void 0 ? void 0 : state.sessionID) {
455
- setTimeout(() => {
456
- sendMessage(text, media, state === null || state === void 0 ? void 0 : state.sessionID);
457
- }, 500);
458
- }
459
- });
451
+ catch (error) {
452
+ console.error(error);
453
+ gotError = true;
454
+ setTypingText(undefined);
455
+ setMemoriTyping(false);
460
456
  }
461
457
  if (!hasBatchQueued) {
462
458
  setTypingText(undefined);
463
459
  setMemoriTyping(false);
464
460
  }
465
461
  };
466
- const translateDialogState = async (state, userLang, msg) => {
467
- var _a, _b, _c;
468
- const emission = (_a = state.emission) !== null && _a !== void 0 ? _a : currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission;
462
+ const translateDialogState = async (state, userLang, msg, avoidPushingMessage = false) => {
463
+ var _a, _b, _c, _d, _f, _g;
464
+ const emission = (_a = state === null || state === void 0 ? void 0 : state.emission) !== null && _a !== void 0 ? _a : currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission;
469
465
  let translatedState = { ...state };
470
466
  let translatedMsg = null;
471
467
  if (!emission ||
472
- instruct ||
473
468
  language.toUpperCase() === userLang.toUpperCase() ||
474
- !isMultilanguageEnabled) {
469
+ !isMultilanguageEnabled ||
470
+ avoidPushingMessage) {
475
471
  translatedState = { ...state, emission };
476
472
  if (emission) {
477
473
  translatedMsg = {
478
474
  text: emission,
479
475
  emitter: state.emitter,
480
- media: state.media,
476
+ media: (_b = state.emittedMedia) !== null && _b !== void 0 ? _b : state.media,
481
477
  fromUser: false,
482
478
  questionAnswered: msg,
483
479
  contextVars: state.contextVars,
@@ -492,37 +488,60 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
492
488
  }
493
489
  }
494
490
  else {
495
- const t = await getTranslation(emission, userLang, language, baseUrl);
496
- if (state.hints && state.hints.length > 0) {
497
- const translatedHints = await Promise.all(((_b = state.hints) !== null && _b !== void 0 ? _b : []).map(async (hint) => {
498
- var _a;
499
- const tHint = await getTranslation(hint, userLang, language, baseUrl);
500
- return {
501
- text: (_a = tHint === null || tHint === void 0 ? void 0 : tHint.text) !== null && _a !== void 0 ? _a : hint,
502
- originalText: hint,
491
+ try {
492
+ const t = await getTranslation(emission, userLang, language, baseUrl);
493
+ if (state.hints && state.hints.length > 0) {
494
+ const translatedHints = await Promise.all(((_c = state.hints) !== null && _c !== void 0 ? _c : []).map(async (hint) => {
495
+ var _a;
496
+ const tHint = await getTranslation(hint, userLang, language, baseUrl);
497
+ return {
498
+ text: (_a = tHint === null || tHint === void 0 ? void 0 : tHint.text) !== null && _a !== void 0 ? _a : hint,
499
+ originalText: hint,
500
+ };
501
+ }));
502
+ translatedState = {
503
+ ...state,
504
+ emission: t.text,
505
+ translatedHints,
503
506
  };
504
- }));
505
- translatedState = {
506
- ...state,
507
- emission: t.text,
508
- translatedHints,
509
- };
510
- }
511
- else {
512
- translatedState = {
513
- ...state,
514
- emission: t.text,
515
- hints: (_c = state.hints) !== null && _c !== void 0 ? _c : (state.state === 'G1' ? currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.hints : []),
516
- };
507
+ }
508
+ else {
509
+ translatedState = {
510
+ ...state,
511
+ emission: emission,
512
+ translatedEmission: t.text,
513
+ hints: (_d = state.hints) !== null && _d !== void 0 ? _d : (state.state === 'G1' ? currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.hints : []),
514
+ };
515
+ }
516
+ if (t.text.length > 0) {
517
+ translatedMsg = {
518
+ text: emission,
519
+ translatedText: t.text,
520
+ emitter: state.emitter,
521
+ media: (_f = state.emittedMedia) !== null && _f !== void 0 ? _f : state.media,
522
+ fromUser: false,
523
+ questionAnswered: msg,
524
+ generatedByAI: !!state.completion,
525
+ contextVars: state.contextVars,
526
+ date: state.currentDate,
527
+ placeName: state.currentPlaceName,
528
+ placeLatitude: state.currentLatitude,
529
+ placeLongitude: state.currentLongitude,
530
+ placeUncertaintyKm: state.currentUncertaintyKm,
531
+ tag: state.currentTag,
532
+ memoryTags: state.memoryTags,
533
+ };
534
+ }
517
535
  }
518
- if (t.text.length > 0)
536
+ catch (error) {
537
+ console.error('[TRANSLATE] Error during translation:', error);
538
+ translatedState = { ...state, emission };
519
539
  translatedMsg = {
520
- text: t.text,
540
+ text: emission,
521
541
  emitter: state.emitter,
522
- media: state.media,
542
+ media: (_g = state.emittedMedia) !== null && _g !== void 0 ? _g : state.media,
523
543
  fromUser: false,
524
544
  questionAnswered: msg,
525
- generatedByAI: !!state.completion,
526
545
  contextVars: state.contextVars,
527
546
  date: state.currentDate,
528
547
  placeName: state.currentPlaceName,
@@ -532,9 +551,10 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
532
551
  tag: state.currentTag,
533
552
  memoryTags: state.memoryTags,
534
553
  };
554
+ }
535
555
  }
536
556
  setCurrentDialogState(translatedState);
537
- if (translatedMsg) {
557
+ if (!avoidPushingMessage && translatedMsg) {
538
558
  pushMessage(translatedMsg);
539
559
  }
540
560
  return translatedState;
@@ -548,15 +568,75 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
548
568
  : 0;
549
569
  const [birthDate, setBirthDate] = useState();
550
570
  const [showAgeVerification, setShowAgeVerification] = useState(false);
571
+ const getCultureCodeByLanguage = (lang) => {
572
+ var _a, _b;
573
+ let voice = '';
574
+ let voiceLang = (lang ||
575
+ ((_b = (_a = memori.culture) === null || _a === void 0 ? void 0 : _a.split('-')) === null || _b === void 0 ? void 0 : _b[0]) ||
576
+ i18n.language ||
577
+ 'IT').toUpperCase();
578
+ switch (voiceLang) {
579
+ case 'IT':
580
+ voice = 'it-IT';
581
+ break;
582
+ case 'DE':
583
+ voice = 'de-DE';
584
+ break;
585
+ case 'EN':
586
+ voice = 'en-GB';
587
+ break;
588
+ case 'ES':
589
+ voice = 'es-ES';
590
+ break;
591
+ case 'FR':
592
+ voice = 'fr-FR';
593
+ break;
594
+ case 'PT':
595
+ voice = 'pt-PT';
596
+ break;
597
+ case 'UK':
598
+ voice = 'uk-UK';
599
+ break;
600
+ case 'RU':
601
+ voice = 'ru-RU';
602
+ break;
603
+ case 'PL':
604
+ voice = 'pl-PL';
605
+ break;
606
+ case 'FI':
607
+ voice = 'fi-FI';
608
+ break;
609
+ case 'EL':
610
+ voice = 'el-GR';
611
+ break;
612
+ case 'AR':
613
+ voice = 'ar-SA';
614
+ break;
615
+ case 'ZH':
616
+ voice = 'zh-CN';
617
+ break;
618
+ case 'JA':
619
+ voice = 'ja-JP';
620
+ break;
621
+ default:
622
+ voice = 'it-IT';
623
+ break;
624
+ }
625
+ return voice;
626
+ };
551
627
  const [sessionId, setSessionId] = useState(initialSessionID);
552
628
  const [currentDialogState, _setCurrentDialogState] = useState();
553
629
  const setCurrentDialogState = (state) => {
554
- var _a;
630
+ var _a, _b;
555
631
  _setCurrentDialogState(state);
556
632
  if (onStateChange) {
557
633
  onStateChange(state);
558
634
  }
559
- const executableSnippets = (_a = state === null || state === void 0 ? void 0 : state.media) === null || _a === void 0 ? void 0 : _a.filter(m => { var _a; return m.mimeType === 'text/javascript' && !!((_a = m.properties) === null || _a === void 0 ? void 0 : _a.executable); });
635
+ const e = new CustomEvent('MemoriNewDialogState', {
636
+ detail: state,
637
+ });
638
+ document.dispatchEvent(e);
639
+ const executableSnippets = (_b = ((_a = state === null || state === void 0 ? void 0 : state.emittedMedia) !== null && _a !== void 0 ? _a : state === null || state === void 0 ? void 0 : state.media)) === null || _b === void 0 ? void 0 : _b.filter(m => { var _a; return m.mimeType === 'text/javascript' && !!((_a = m.properties) === null || _a === void 0 ? void 0 : _a.executable); });
560
640
  executableSnippets === null || executableSnippets === void 0 ? void 0 : executableSnippets.forEach(s => {
561
641
  try {
562
642
  setTimeout(() => {
@@ -571,14 +651,15 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
571
651
  }, 1000);
572
652
  }
573
653
  catch (e) {
574
- console.error(e);
654
+ console.warn(e);
575
655
  }
576
656
  });
577
657
  };
578
658
  const fetchSession = async (params) => {
579
659
  var _a, _b, _c, _d, _f;
580
660
  let storageBirthDate = getLocalConfig('birthDate', undefined);
581
- if (!(birthDate || storageBirthDate) && !!minAge) {
661
+ let userBirthDate = (_a = birthDate !== null && birthDate !== void 0 ? birthDate : params.birthDate) !== null && _a !== void 0 ? _a : storageBirthDate;
662
+ if (!userBirthDate && !!minAge) {
582
663
  setShowAgeVerification(true);
583
664
  return;
584
665
  }
@@ -591,13 +672,6 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
591
672
  }
592
673
  setLoading(true);
593
674
  try {
594
- if (!memori.giverTag && !!((_a = memori.receivedInvitations) === null || _a === void 0 ? void 0 : _a.length)) {
595
- let giverInvitation = memori.receivedInvitations.find((i) => i.type === 'GIVER' && i.state === 'ACCEPTED');
596
- if (giverInvitation) {
597
- memori.giverTag = giverInvitation.tag;
598
- memori.giverPIN = giverInvitation.pin;
599
- }
600
- }
601
675
  let referral;
602
676
  try {
603
677
  referral = (() => {
@@ -605,10 +679,11 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
605
679
  })();
606
680
  }
607
681
  catch (err) {
608
- console.error(err);
682
+ console.debug(err);
609
683
  }
610
684
  const session = await initSession({
611
685
  ...params,
686
+ birthDate: userBirthDate,
612
687
  tag: (_b = params.tag) !== null && _b !== void 0 ? _b : personification === null || personification === void 0 ? void 0 : personification.tag,
613
688
  pin: (_c = params.pin) !== null && _c !== void 0 ? _c : personification === null || personification === void 0 ? void 0 : personification.pin,
614
689
  additionalInfo: {
@@ -616,13 +691,20 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
616
691
  loginToken: (_f = (_d = userToken !== null && userToken !== void 0 ? userToken : loginToken) !== null && _d !== void 0 ? _d : additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _f !== void 0 ? _f : authToken,
617
692
  language: getCultureCodeByLanguage(userLang),
618
693
  referral: referral,
694
+ timeZoneOffset: new Date().getTimezoneOffset().toString(),
619
695
  },
620
696
  });
621
697
  if ((session === null || session === void 0 ? void 0 : session.sessionID) &&
622
698
  (session === null || session === void 0 ? void 0 : session.currentState) &&
623
699
  session.resultCode === 0) {
624
700
  setSessionId(session.sessionID);
625
- if (position)
701
+ if ((currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.currentTag) && memori.giverTag) {
702
+ setInstruct((currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.currentTag) === memori.giverTag);
703
+ }
704
+ else {
705
+ setInstruct(false);
706
+ }
707
+ if (position && memori.needsPosition)
626
708
  applyPosition(position, session.sessionID);
627
709
  setLoading(false);
628
710
  return {
@@ -631,31 +713,35 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
631
713
  };
632
714
  }
633
715
  else if (session === null || session === void 0 ? void 0 : session.resultMessage.startsWith('This Memori is aged restricted')) {
634
- console.error(session);
716
+ console.warn(session);
635
717
  toast.error(t('underageTwinSession', { age: minAge }));
636
718
  setGotErrorInOpening(true);
637
719
  }
638
720
  else if ((session === null || session === void 0 ? void 0 : session.resultCode) === 403) {
639
721
  setMemoriPwd(undefined);
640
722
  setAuthModalState('password');
723
+ return session;
641
724
  }
642
725
  else {
643
- console.error(session);
644
- toast.error(t(getErrori18nKey(session === null || session === void 0 ? void 0 : session.resultCode)));
726
+ console.warn(session);
727
+ toast.error(tst => (_jsxs("div", { children: [_jsx("p", { children: t(getErrori18nKey(session === null || session === void 0 ? void 0 : session.resultCode)) }), _jsx(Button, { outlined: true, padded: false, onClick: () => toast.dismiss(tst.id), icon: _jsx(CloseIcon, {}), children: t('close') })] })), {
728
+ duration: Infinity,
729
+ });
645
730
  setGotErrorInOpening(true);
731
+ return session;
646
732
  }
647
733
  }
648
734
  catch (err) {
649
735
  console.error(err);
650
- new Error('Error fetching session');
651
736
  }
652
737
  };
653
738
  const reopenSession = async (updateDialogState = false, password, recoveryTokens, tag, pin, initialContextVars, initialQuestion, birthDate) => {
654
- var _a, _b, _c, _d, _f;
739
+ var _a, _b, _c, _d, _f, _g, _h;
655
740
  setLoading(true);
741
+ let storageBirthDate = getLocalConfig('birthDate', undefined);
742
+ let userBirthDate = birthDate !== null && birthDate !== void 0 ? birthDate : storageBirthDate;
656
743
  try {
657
- let storageBirthDate = getLocalConfig('birthDate', undefined);
658
- if (!(birthDate || storageBirthDate) && !!minAge) {
744
+ if (!userBirthDate && !!minAge) {
659
745
  setShowAgeVerification(true);
660
746
  return;
661
747
  }
@@ -673,28 +759,30 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
673
759
  referral = (() => {
674
760
  return window.location.href;
675
761
  })();
762
+ console.log('[REOPEN_SESSION] Got referral:', referral);
676
763
  }
677
764
  catch (err) {
678
- console.error(err);
765
+ console.debug('[REOPEN_SESSION] Error getting referral:', err);
679
766
  }
680
767
  const { sessionID, currentState, ...response } = await initSession({
681
768
  memoriID: (_a = memori.engineMemoriID) !== null && _a !== void 0 ? _a : '',
682
769
  password: password || memoriPwd || memori.secretToken,
683
770
  recoveryTokens: recoveryTokens || memoriTokens,
684
- tag,
685
- pin,
771
+ tag: tag !== null && tag !== void 0 ? tag : personification === null || personification === void 0 ? void 0 : personification.tag,
772
+ pin: pin !== null && pin !== void 0 ? pin : personification === null || personification === void 0 ? void 0 : personification.pin,
686
773
  initialContextVars: {
687
774
  PATHNAME: window.location.pathname,
688
775
  ROUTE: ((_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) || '',
689
776
  ...(initialContextVars || {}),
690
777
  },
691
778
  initialQuestion,
692
- birthDate: birthDate || storageBirthDate || undefined,
779
+ birthDate: userBirthDate,
693
780
  additionalInfo: {
694
781
  ...(additionalInfo || {}),
695
782
  loginToken: (_f = (_d = userToken !== null && userToken !== void 0 ? userToken : loginToken) !== null && _d !== void 0 ? _d : additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _f !== void 0 ? _f : authToken,
696
783
  language: getCultureCodeByLanguage(userLang),
697
784
  referral: referral,
785
+ timeZoneOffset: new Date().getTimezoneOffset().toString(),
698
786
  },
699
787
  });
700
788
  if (sessionID && currentState && response.resultCode === 0) {
@@ -707,7 +795,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
707
795
  {
708
796
  text: currentState.emission,
709
797
  emitter: currentState.emitter,
710
- media: currentState.media,
798
+ media: (_g = currentState.emittedMedia) !== null && _g !== void 0 ? _g : currentState.media,
711
799
  fromUser: false,
712
800
  initial: true,
713
801
  contextVars: currentState.contextVars,
@@ -723,7 +811,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
723
811
  : pushMessage({
724
812
  text: currentState.emission,
725
813
  emitter: currentState.emitter,
726
- media: currentState.media,
814
+ media: (_h = currentState.emittedMedia) !== null && _h !== void 0 ? _h : currentState.media,
727
815
  fromUser: false,
728
816
  initial: true,
729
817
  contextVars: currentState.contextVars,
@@ -737,10 +825,12 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
737
825
  });
738
826
  }
739
827
  }
740
- if (position)
828
+ if (position && memori.needsPosition) {
741
829
  applyPosition(position, sessionID);
742
- if (memori.needsDateTime)
830
+ }
831
+ if (memori.needsDateTime) {
743
832
  sendDateChangedEvent({ sessionID: sessionID, state: currentState });
833
+ }
744
834
  setLoading(false);
745
835
  return {
746
836
  dialogState: currentState,
@@ -748,26 +838,118 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
748
838
  };
749
839
  }
750
840
  else if (response === null || response === void 0 ? void 0 : response.resultMessage.startsWith('This Memori is aged restricted')) {
751
- console.error(response);
841
+ console.error('[REOPEN_SESSION] Age restriction error:', response);
752
842
  toast.error(t('underageTwinSession', { age: minAge }));
753
843
  setGotErrorInOpening(true);
754
844
  }
755
845
  else if ((response === null || response === void 0 ? void 0 : response.resultCode) === 403) {
846
+ console.error('[REOPEN_SESSION] Authentication error');
756
847
  setMemoriPwd(undefined);
757
848
  setAuthModalState('password');
758
849
  }
759
850
  else {
760
- console.error(response);
851
+ console.error('[REOPEN_SESSION] Other error:', response);
761
852
  toast.error(t(getErrori18nKey(response.resultCode)));
762
853
  setGotErrorInOpening(true);
763
854
  }
764
855
  }
765
856
  catch (err) {
766
- console.error(err);
857
+ console.error('[REOPEN_SESSION] Caught error:', err);
767
858
  }
768
859
  setLoading(false);
769
860
  return null;
770
861
  };
862
+ const [chatLogs, setChatLogs] = useState([]);
863
+ const resumeSession = async (chatLog, questionsAndAnswers, initialContextVars, initialQuestion, birthDate) => {
864
+ var _a, _b, _c, _d, _f;
865
+ setLoading(true);
866
+ let storageBirthDate = getLocalConfig('birthDate', undefined);
867
+ let userBirthDate = birthDate !== null && birthDate !== void 0 ? birthDate : storageBirthDate;
868
+ try {
869
+ if (!userBirthDate && !!minAge) {
870
+ setShowAgeVerification(true);
871
+ return;
872
+ }
873
+ if (memori.privacyType !== 'PUBLIC' &&
874
+ !memoriPassword &&
875
+ !memori.secretToken &&
876
+ !memoriPwd &&
877
+ !memoriTokens) {
878
+ setAuthModalState('password');
879
+ return;
880
+ }
881
+ let referral;
882
+ try {
883
+ referral = (() => {
884
+ return window.location.href;
885
+ })();
886
+ console.log('[REOPEN_SESSION] Got referral:', referral);
887
+ }
888
+ catch (err) {
889
+ console.debug('[REOPEN_SESSION] Error getting referral:', err);
890
+ }
891
+ const { sessionID, currentState, ...response } = await initSession({
892
+ memoriID: (_a = memori.engineMemoriID) !== null && _a !== void 0 ? _a : '',
893
+ password: memoriPassword || memoriPwd || memori.secretToken,
894
+ recoveryTokens: memoriTokens,
895
+ tag: personification === null || personification === void 0 ? void 0 : personification.tag,
896
+ pin: personification === null || personification === void 0 ? void 0 : personification.pin,
897
+ continueFromChatLogID: chatLog.chatLogID,
898
+ initialContextVars: {
899
+ PATHNAME: window.location.pathname,
900
+ ROUTE: ((_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) || '',
901
+ ...(initialContextVars || {}),
902
+ },
903
+ initialQuestion,
904
+ birthDate: userBirthDate,
905
+ additionalInfo: {
906
+ ...(additionalInfo || {}),
907
+ loginToken: (_f = (_d = userToken !== null && userToken !== void 0 ? userToken : loginToken) !== null && _d !== void 0 ? _d : additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _f !== void 0 ? _f : authToken,
908
+ language: getCultureCodeByLanguage(userLang),
909
+ referral: referral,
910
+ timeZoneOffset: new Date().getTimezoneOffset().toString(),
911
+ },
912
+ });
913
+ if (sessionID) {
914
+ setSessionId(sessionID);
915
+ setHistory(chatLog.lines.map(log => {
916
+ var _a;
917
+ return ({
918
+ text: log.text,
919
+ emitter: log.emitter,
920
+ media: (_a = log.media) === null || _a === void 0 ? void 0 : _a.map(m => ({
921
+ ...m,
922
+ mediumID: 'mediumID' in m ? String(m.mediumID) : crypto.randomUUID(),
923
+ })),
924
+ fromUser: log.inbound,
925
+ initial: false,
926
+ contextVars: log.contextVars,
927
+ date: log.timestamp,
928
+ });
929
+ }));
930
+ setChatLogs(questionsAndAnswers);
931
+ }
932
+ else if (response === null || response === void 0 ? void 0 : response.resultMessage.startsWith('This Memori is aged restricted')) {
933
+ console.error('[REOPEN_SESSION] Age restriction error:', response);
934
+ toast.error(t('underageTwinSession', { age: minAge }));
935
+ setGotErrorInOpening(true);
936
+ }
937
+ else if ((response === null || response === void 0 ? void 0 : response.resultCode) === 403) {
938
+ console.error('[REOPEN_SESSION] Authentication error');
939
+ setMemoriPwd(undefined);
940
+ setAuthModalState('password');
941
+ }
942
+ else {
943
+ console.error('[REOPEN_SESSION] Other error:', response);
944
+ toast.error(t(getErrori18nKey(response.resultCode)));
945
+ setGotErrorInOpening(true);
946
+ }
947
+ }
948
+ catch (err) {
949
+ console.error('[RESUME_SESSION] Caught error:', err);
950
+ }
951
+ setLoading(false);
952
+ };
771
953
  const changeTag = async (memoriId, sessionId, tag, pin) => {
772
954
  var _a, _b, _c, _d, _f;
773
955
  if (!memoriId || !sessionId) {
@@ -807,13 +989,13 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
807
989
  })();
808
990
  }
809
991
  catch (err) {
810
- console.error(err);
992
+ console.debug(err);
811
993
  }
812
994
  fetchSession({
813
995
  memoriID: (_a = memori.engineMemoriID) !== null && _a !== void 0 ? _a : '',
814
996
  password: secret || memoriPwd || memori.secretToken,
815
- tag: memori.giverTag,
816
- pin: memori.giverPIN,
997
+ tag: tag !== null && tag !== void 0 ? tag : personification === null || personification === void 0 ? void 0 : personification.tag,
998
+ pin: pin !== null && pin !== void 0 ? pin : personification === null || personification === void 0 ? void 0 : personification.pin,
817
999
  initialContextVars: {
818
1000
  PATHNAME: window.location.pathname,
819
1001
  ROUTE: ((_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) || '',
@@ -826,6 +1008,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
826
1008
  loginToken: (_f = (_d = userToken !== null && userToken !== void 0 ? userToken : loginToken) !== null && _d !== void 0 ? _d : additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _f !== void 0 ? _f : authToken,
827
1009
  language: getCultureCodeByLanguage(userLang),
828
1010
  referral: referral,
1011
+ timeZoneOffset: new Date().getTimezoneOffset().toString(),
829
1012
  },
830
1013
  });
831
1014
  }
@@ -840,24 +1023,11 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
840
1023
  }
841
1024
  catch (_e) {
842
1025
  let err = _e;
843
- console.error('[APPCONTEXT/CHANGETAG]', err);
1026
+ console.warn('[APPCONTEXT/CHANGETAG]', err);
844
1027
  return Promise.reject(err);
845
1028
  }
846
1029
  return null;
847
1030
  };
848
- const restoreGiverTag = async () => {
849
- if (sessionId && memori.giverTag && memori.giverPIN) {
850
- setHistory([]);
851
- await changeTag(memori.engineMemoriID, sessionId, memori.giverTag, memori.giverPIN);
852
- }
853
- };
854
- useEffect(() => {
855
- return () => {
856
- if (!currentDialogState ||
857
- (currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.currentTag) !== memori.giverTag)
858
- restoreGiverTag();
859
- };
860
- }, []);
861
1031
  const sendDateChangedEvent = useCallback(async ({ sessionID, date, state, }) => {
862
1032
  var _a;
863
1033
  const session = sessionID !== null && sessionID !== void 0 ? sessionID : sessionId;
@@ -908,547 +1078,122 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
908
1078
  timeoutRef.current = undefined;
909
1079
  }
910
1080
  };
911
- const resetInteractionTimeout = () => {
912
- clearInteractionTimeout();
913
- if (!isPlayingAudio && !userMessage.length && !memoriTyping && !listening)
914
- setInteractionTimeout();
915
- };
916
- const handleTimeout = async () => {
917
- var _a;
918
- if (!hasUserActivatedSpeak ||
919
- isPlayingAudio ||
920
- !!userMessage.length ||
921
- !!memoriTyping ||
922
- listening) {
923
- resetInteractionTimeout();
1081
+ useEffect(() => {
1082
+ return () => {
1083
+ setHasUserActivatedSpeak(false);
1084
+ setClickedStart(false);
1085
+ clearInteractionTimeout();
1086
+ timeoutRef.current = undefined;
1087
+ };
1088
+ }, []);
1089
+ const [requestedListening, setRequestedListening] = useState(false);
1090
+ const startListeningRef = useRef(null);
1091
+ console.log('tenantID', tenantID);
1092
+ const ttsConfig = useMemo(() => {
1093
+ var _a, _b;
1094
+ return ({
1095
+ provider: ttsProvider,
1096
+ voice: getTTSVoice(userLang || ((_b = (_a = memori.culture) === null || _a === void 0 ? void 0 : _a.split('-')) === null || _b === void 0 ? void 0 : _b[0]) || 'EN', ttsProvider, memori.voiceType),
1097
+ tenant: tenantID,
1098
+ region: 'westeurope',
1099
+ voiceType: memori.voiceType,
1100
+ layout: selectedLayout,
1101
+ });
1102
+ }, [ttsProvider, userLang, memori.culture, memori.voiceType]);
1103
+ const sttConfig = useMemo(() => ({
1104
+ provider: ttsProvider,
1105
+ language: getCultureCodeByLanguage(userLang),
1106
+ tenant: tenantID,
1107
+ }), [ttsProvider, userLang]);
1108
+ const { speak: ttsSpeak, stop: ttsStop, isPlaying: isPlayingAudio, speakerMuted, toggleMute, hasUserActivatedSpeak, setHasUserActivatedSpeak, error, setError, } = useTTS(ttsConfig, {
1109
+ apiUrl: `${baseUrl}/api/tts`,
1110
+ continuousSpeech: continuousSpeech,
1111
+ preview: preview,
1112
+ }, autoStart, defaultEnableAudio, defaultSpeakerActive);
1113
+ const processSpeechAndSendMessage = (text) => {
1114
+ console.log('processSpeechAndSendMessage', text);
1115
+ if (!text || text.trim().length === 0) {
924
1116
  return;
925
1117
  }
926
- else if (sessionId &&
927
- hasUserActivatedSpeak &&
928
- (currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.acceptsTimeout)) {
929
- const { currentState, ...response } = await postTimeoutEvent(sessionId);
930
- if (response.resultCode === 0 && currentState) {
931
- const emission = currentState.emission;
932
- if (!instruct &&
933
- isMultilanguageEnabled &&
934
- userLang !== (i18n === null || i18n === void 0 ? void 0 : i18n.language) &&
935
- emission &&
936
- emission.length > 0) {
937
- translateDialogState({ ...currentState, emission: emission }, userLang).then(ts => {
938
- if (ts.emission) {
939
- speak(ts.emission);
940
- }
941
- });
942
- }
943
- else if (emission && emission.length > 0) {
944
- pushMessage({
945
- text: emission,
946
- emitter: currentState.emitter,
947
- media: currentState.media,
948
- fromUser: false,
949
- generatedByAI: !!currentState.completion,
950
- contextVars: currentState.contextVars,
951
- date: currentState.currentDate,
952
- placeName: currentState.currentPlaceName,
953
- placeLatitude: currentState.currentLatitude,
954
- placeLongitude: currentState.currentLongitude,
955
- placeUncertaintyKm: currentState.currentUncertaintyKm,
956
- tag: currentState.currentTag,
957
- memoryTags: currentState.memoryTags,
958
- });
959
- speak(emission);
960
- setCurrentDialogState({
961
- ...currentState,
962
- hints: (_a = currentState.hints) !== null && _a !== void 0 ? _a : (currentState.state === 'G1' ? currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.hints : []),
963
- });
964
- }
965
- else {
966
- resetInteractionTimeout();
967
- return;
968
- }
969
- }
970
- }
971
- };
972
- const setInteractionTimeout = () => {
973
- let timeout = currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.timeout;
974
- if (!timeout) {
975
- let timeoutLimit = 40;
976
- let timeoutMinLimit = 25;
977
- timeout =
978
- Math.floor(Math.random() * (timeoutLimit - timeoutMinLimit)) +
979
- timeoutMinLimit;
980
- if (currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission) {
981
- let readTime = currentDialogState.emission.length / 26.5;
982
- timeout = timeout + readTime;
983
- }
984
- }
985
- if (forcedTimeout) {
986
- timeout = forcedTimeout;
987
- if (currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission) {
988
- let readTime = currentDialogState.emission.length / 26.5;
989
- timeout = timeout + readTime;
990
- }
991
- }
992
- let uiTimeout = setTimeout(handleTimeout, timeout * 1000);
993
- setUserInteractionTimeout(uiTimeout);
994
- timeoutRef.current = uiTimeout;
995
- };
996
- useEffect(() => {
997
- if (!!userMessage.length || isPlayingAudio || !!memoriTyping)
998
- clearInteractionTimeout();
999
- if (sessionId && !!!userMessage.length)
1000
- resetInteractionTimeout();
1001
- }, [
1002
- currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.acceptsTimeout,
1003
- currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.timeout,
1004
- currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.state,
1005
- isPlayingAudio,
1006
- sessionId,
1007
- history,
1008
- userMessage,
1009
- memoriTyping,
1010
- hasUserActivatedSpeak,
1011
- ]);
1012
- useEffect(() => {
1013
- return () => {
1014
- setHasUserActivatedSpeak(false);
1015
- setClickedStart(false);
1016
- clearInteractionTimeout();
1017
- timeoutRef.current = undefined;
1018
- };
1019
- }, []);
1020
- const initializeTTS = () => {
1021
- if (!AZURE_COGNITIVE_SERVICES_TTS_KEY)
1022
- return;
1023
- speechConfig = speechSdk.SpeechConfig.fromSubscription(AZURE_COGNITIVE_SERVICES_TTS_KEY, 'eastus');
1024
- speechConfig.speechSynthesisLanguage = getCultureCodeByLanguage(userLang);
1025
- speechConfig.speechSynthesisVoiceName = getTTSVoice(userLang);
1026
- speechConfig.speechRecognitionLanguage = getCultureCodeByLanguage(userLang);
1027
- if (hasTouchscreen())
1028
- speechConfig.speechSynthesisOutputFormat =
1029
- speechSdk.SpeechSynthesisOutputFormat.Audio16Khz32KBitRateMonoMp3;
1030
- audioContext = new AudioContext();
1031
- let buffer = audioContext.createBuffer(1, 10000, 22050);
1032
- let source = audioContext.createBufferSource();
1033
- source.buffer = buffer;
1034
- source.connect(audioContext.destination);
1035
- audioDestination = new speechSdk.SpeakerAudioDestination();
1036
- let audioConfig = speechSdk.AudioConfig.fromSpeakerOutput(audioDestination);
1037
- speechSynthesizer = new speechSdk.SpeechSynthesizer(speechConfig, audioConfig);
1038
- };
1039
- const getTTSVoice = useCallback((lang) => {
1040
- var _a, _b, _c, _d;
1041
- let voice = '';
1042
- let voiceLang = ((_d = (_c = lang !== null && lang !== void 0 ? lang : (_b = (_a = memori.culture) === null || _a === void 0 ? void 0 : _a.split('-')) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : i18n.language) !== null && _d !== void 0 ? _d : 'IT').toUpperCase();
1043
- let voiceType = memori.voiceType;
1044
- if (memori.enableBoardOfExperts && (currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emitter)) {
1045
- let expert = experts === null || experts === void 0 ? void 0 : experts.find(e => e.name === (currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emitter));
1046
- }
1047
- switch (voiceLang) {
1048
- case 'IT':
1049
- voice = `${voiceType === 'MALE' ? 'it-IT-DiegoNeural' : 'it-IT-ElsaNeural'}`;
1050
- break;
1051
- case 'DE':
1052
- voice = `${voiceType === 'MALE' ? 'de-DE-ConradNeural' : 'de-DE-KatjaNeural'}`;
1053
- break;
1054
- case 'EN':
1055
- voice = `${voiceType === 'MALE' ? 'en-GB-RyanNeural' : 'en-GB-SoniaNeural'}`;
1056
- break;
1057
- case 'ES':
1058
- voice = `${voiceType === 'MALE' ? 'es-ES-AlvaroNeural' : 'es-ES-ElviraNeural'}`;
1059
- break;
1060
- case 'FR':
1061
- voice = `${voiceType === 'MALE' ? 'fr-FR-HenriNeural' : 'fr-FR-DeniseNeural'}`;
1062
- break;
1063
- case 'PT':
1064
- voice = `${voiceType === 'MALE' ? 'pt-PT-DuarteNeural' : 'pt-PT-RaquelNeural'}`;
1065
- break;
1066
- case 'UK':
1067
- voice = `${voiceType === 'MALE' ? 'uk-UA-OstapNeural' : 'uk-UA-PolinaNeural'}`;
1068
- break;
1069
- case 'RU':
1070
- voice = `${voiceType === 'MALE' ? 'ru-RU-DmitryNeural' : 'ru-RU-SvetlanaNeural'}`;
1071
- break;
1072
- case 'PL':
1073
- voice = `${voiceType === 'MALE' ? 'pl-PL-MarekNeural' : 'pl-PL-AgnieszkaNeural'}`;
1074
- break;
1075
- case 'FI':
1076
- voice = `${voiceType === 'MALE' ? 'fi-FI-HarriNeural' : 'fi-FI-SelmaNeural'}`;
1077
- break;
1078
- case 'EL':
1079
- voice = `${voiceType === 'MALE' ? 'el-GR-NestorasNeural' : 'el-GR-AthinaNeural'}`;
1080
- break;
1081
- case 'AR':
1082
- voice = `${voiceType === 'MALE' ? 'ar-SA-HamedNeural' : 'ar-SA-ZariyahNeural'}`;
1083
- break;
1084
- case 'ZH':
1085
- voice = `${voiceType === 'MALE' ? 'zh-CN-YunxiNeural' : 'zh-CN-XiaoxiaoNeural'}`;
1086
- break;
1087
- case 'JA':
1088
- voice = `${voiceType === 'MALE' ? 'ja-JP-KeitaNeural' : 'ja-JP-NanamiNeural'}`;
1089
- break;
1090
- default:
1091
- voice = `${voiceType === 'MALE' ? 'it-IT-DiegoNeural' : 'it-IT-IsabellaNeural'}`;
1092
- break;
1093
- }
1094
- return voice;
1095
- }, [
1096
- memori.voiceType,
1097
- memori.enableBoardOfExperts,
1098
- currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emitter,
1099
- i18n.language,
1100
- memori.culture,
1101
- ]);
1102
- const getCultureCodeByLanguage = (lang) => {
1103
- var _a, _b;
1104
- let voice = '';
1105
- let voiceLang = (lang ||
1106
- ((_b = (_a = memori.culture) === null || _a === void 0 ? void 0 : _a.split('-')) === null || _b === void 0 ? void 0 : _b[0]) ||
1107
- i18n.language ||
1108
- 'IT').toUpperCase();
1109
- switch (voiceLang) {
1110
- case 'IT':
1111
- voice = 'it-IT';
1112
- break;
1113
- case 'DE':
1114
- voice = 'de-DE';
1115
- break;
1116
- case 'EN':
1117
- voice = 'en-GB';
1118
- break;
1119
- case 'ES':
1120
- voice = 'es-ES';
1121
- break;
1122
- case 'FR':
1123
- voice = 'fr-FR';
1124
- break;
1125
- case 'PT':
1126
- voice = 'pt-PT';
1127
- break;
1128
- case 'UK':
1129
- voice = 'uk-UK';
1130
- break;
1131
- case 'RU':
1132
- voice = 'ru-RU';
1133
- break;
1134
- case 'PL':
1135
- voice = 'pl-PL';
1136
- break;
1137
- case 'FI':
1138
- voice = 'fi-FI';
1139
- break;
1140
- case 'EL':
1141
- voice = 'el-GR';
1142
- break;
1143
- case 'AR':
1144
- voice = 'ar-SA';
1145
- break;
1146
- case 'ZH':
1147
- voice = 'zh-CN';
1148
- break;
1149
- case 'JA':
1150
- voice = 'ja-JP';
1151
- break;
1152
- default:
1153
- voice = 'it-IT';
1154
- break;
1155
- }
1156
- return voice;
1157
- };
1158
- const [phonemesMap, setPhonemesMap] = useState();
1159
- const fetchLexiconJSON = async () => {
1160
1118
  try {
1161
- const lexiconReq = await fetch(`${baseUrl || 'https://aisuru.com'}/api/lexiconmap`);
1162
- const lexicon = await lexiconReq.json();
1163
- return lexicon;
1164
- }
1165
- catch (err) {
1166
- console.error(err);
1167
- }
1168
- };
1169
- useEffect(() => {
1170
- fetchLexiconJSON().then(lexicon => {
1171
- setPhonemesMap(lexicon);
1172
- });
1173
- }, []);
1174
- const replaceTextWithPhonemes = (text, lang) => {
1175
- var _a;
1176
- if (!phonemesMap)
1177
- return text;
1178
- const phonemes = {
1179
- ...((_a = phonemesMap.common) !== null && _a !== void 0 ? _a : {}),
1180
- ...((tenant === null || tenant === void 0 ? void 0 : tenant.id) && phonemesMap[tenant.id] ? phonemesMap[tenant.id] : {}),
1181
- };
1182
- const phonemesPairs = Object.keys(phonemes).map(word => {
1183
- var _a;
1184
- const phoneme = (_a = phonemes[word][lang.toLowerCase()]) !== null && _a !== void 0 ? _a : phonemes[word].default;
1185
- return { word, phoneme, caseSensitive: phonemes[word].caseSensitive };
1186
- });
1187
- const ssmlText = phonemesPairs.reduce((acc, { word, phoneme, caseSensitive }) => {
1188
- return acc.replace(new RegExp(`\\b${word}\\b`, caseSensitive ? 'g' : 'gi'), `<phoneme alphabet="ipa" ph="${phoneme}">${word}</phoneme>`);
1189
- }, text);
1190
- return ssmlText;
1191
- };
1192
- const emitEndSpeakEvent = () => {
1193
- const e = new CustomEvent('MemoriEndSpeak');
1194
- document.dispatchEvent(e);
1195
- };
1196
- const speak = (text) => {
1197
- if (!AZURE_COGNITIVE_SERVICES_TTS_KEY || preview) {
1198
- emitEndSpeakEvent();
1199
- return;
1200
- }
1201
- stopListening();
1202
- if (preview)
1203
- return;
1204
- if (muteSpeaker || speakerMuted) {
1205
- memoriSpeaking = false;
1206
- setMemoriTyping(false);
1207
- emitEndSpeakEvent();
1208
- if (continuousSpeech) {
1209
- setListeningTimeout();
1119
+ const message = stripDuplicates(text);
1120
+ console.debug('Processing speech message:', message);
1121
+ if (message.length > 0) {
1122
+ setUserMessage('');
1123
+ console.debug('Sending message:', message);
1124
+ sendMessage(message);
1210
1125
  }
1211
- return;
1212
- }
1213
- if (audioDestination)
1214
- audioDestination.pause();
1215
- let isSafari = window.navigator.userAgent.includes('Safari') &&
1216
- !window.navigator.userAgent.includes('Chrome');
1217
- let isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
1218
- if (audioContext.state === 'interrupted') {
1219
- audioContext.resume().then(() => speak(text));
1220
- return;
1221
1126
  }
1222
- if (audioContext.state === 'closed') {
1223
- audioContext = new AudioContext();
1224
- let buffer = audioContext.createBuffer(1, 10000, 22050);
1225
- let source = audioContext.createBufferSource();
1226
- source.buffer = buffer;
1227
- source.connect(audioContext.destination);
1127
+ catch (error) {
1128
+ console.error('Error in processSpeechAndSendMessage:', error);
1228
1129
  }
1229
- else if (audioContext.state === 'suspended') {
1230
- stopAudio();
1231
- audioContext = new AudioContext();
1232
- let buffer = audioContext.createBuffer(1, 10000, 22050);
1233
- let source = audioContext.createBufferSource();
1234
- source.buffer = buffer;
1235
- source.connect(audioContext.destination);
1236
- }
1237
- if (!speechSynthesizer) {
1238
- if (!isIOS) {
1239
- audioDestination = new speechSdk.SpeakerAudioDestination();
1240
- }
1241
- let audioConfig = speechSdk.AudioConfig.fromSpeakerOutput(audioDestination);
1242
- speechSynthesizer = new speechSdk.SpeechSynthesizer(speechConfig, audioConfig);
1243
- }
1244
- const source = audioContext.createBufferSource();
1245
- source.addEventListener('ended', () => {
1246
- setIsPlayingAudio(false);
1247
- memoriSpeaking = false;
1248
- });
1249
- audioDestination.onAudioEnd = () => {
1250
- setIsPlayingAudio(false);
1251
- memoriSpeaking = false;
1252
- source.disconnect();
1253
- emitEndSpeakEvent();
1254
- onEndSpeakStartListen();
1255
- };
1256
- 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(escapeHTML(stripMarkdown(stripEmojis(text))), userLang.toLowerCase())}</s></voice></speak>`, result => {
1257
- if (result) {
1258
- setIsPlayingAudio(true);
1259
- memoriSpeaking = true;
1260
- try {
1261
- audioContext.decodeAudioData(result.audioData, function (buffer) {
1262
- source.buffer = buffer;
1263
- source.connect(audioContext.destination);
1264
- if (history.length < 1 || (isSafari && isIOS)) {
1265
- source.start(0);
1266
- }
1267
- });
1268
- audioContext.onstatechange = () => {
1269
- if (audioContext.state === 'suspended' ||
1270
- audioContext.state === 'closed') {
1271
- source.disconnect();
1272
- setIsPlayingAudio(false);
1273
- memoriSpeaking = false;
1274
- }
1275
- else if (audioContext.state === 'interrupted') {
1276
- audioContext.resume();
1277
- }
1278
- };
1279
- audioContext.resume();
1280
- if (speechSynthesizer) {
1281
- speechSynthesizer.close();
1282
- speechSynthesizer = null;
1283
- }
1284
- }
1285
- catch (e) {
1286
- console.error('speak error: ', e);
1287
- window.speechSynthesis.speak(new SpeechSynthesisUtterance(text));
1288
- setIsPlayingAudio(false);
1289
- memoriSpeaking = false;
1290
- if (speechSynthesizer) {
1291
- speechSynthesizer.close();
1292
- speechSynthesizer = null;
1293
- }
1294
- emitEndSpeakEvent();
1295
- }
1296
- }
1297
- else {
1298
- audioContext.resume();
1299
- setIsPlayingAudio(false);
1300
- memoriSpeaking = false;
1301
- emitEndSpeakEvent();
1302
- }
1303
- }, error => {
1304
- console.error('speak:', error);
1305
- window.speechSynthesis.speak(new SpeechSynthesisUtterance(text));
1306
- setIsPlayingAudio(false);
1307
- memoriSpeaking = false;
1308
- emitEndSpeakEvent();
1309
- });
1310
- setMemoriTyping(false);
1311
1130
  };
1312
- const stopAudio = () => {
1313
- setIsPlayingAudio(false);
1314
- memoriSpeaking = false;
1131
+ const { isListening, startRecording, stopRecording, } = useSTT(sttConfig, processSpeechAndSendMessage, {
1132
+ apiUrl: `${baseUrl}/api/stt`,
1133
+ continuousRecording: continuousSpeech,
1134
+ silenceTimeout: continuousSpeechTimeout,
1135
+ autoStart: autoStart,
1136
+ }, defaultEnableAudio);
1137
+ const handleSpeak = async (text) => {
1138
+ if (!text || !text.trim() || preview || speakerMuted || !defaultEnableAudio) {
1139
+ const e = new CustomEvent('MemoriEndSpeak');
1140
+ document.dispatchEvent(e);
1141
+ return Promise.resolve();
1142
+ }
1143
+ if (typeof stopRecording === 'function') {
1144
+ stopRecording();
1145
+ }
1146
+ const processedText = sanitizeText(text);
1147
+ return ttsSpeak(processedText);
1148
+ };
1149
+ const translateAndSpeak = useCallback(async (dialogState, language, msg, skipEmission = false) => {
1315
1150
  try {
1316
- if (speechSynthesizer) {
1317
- speechSynthesizer.close();
1318
- speechSynthesizer = null;
1151
+ if (!dialogState) {
1152
+ console.warn('translateAndSpeak called with empty dialog state');
1153
+ return null;
1319
1154
  }
1320
- if (audioContext.state !== 'closed') {
1321
- audioContext.close();
1322
- }
1323
- if (audioDestination) {
1324
- audioDestination.pause();
1325
- audioDestination.close();
1155
+ const translatedState = await translateDialogState(dialogState, language, msg, skipEmission);
1156
+ const textToSpeak = translatedState.translatedEmission || translatedState.emission;
1157
+ if (textToSpeak && textToSpeak.trim() && !skipEmission && !speakerMuted) {
1158
+ if (!hasUserActivatedSpeak) {
1159
+ setHasUserActivatedSpeak(true);
1160
+ }
1161
+ await handleSpeak(textToSpeak);
1326
1162
  }
1163
+ return translatedState;
1327
1164
  }
1328
- catch (e) {
1329
- console.error('stopAudio error: ', e);
1165
+ catch (error) {
1166
+ console.error('Error in translateAndSpeak:', error);
1167
+ if (!hasUserActivatedSpeak) {
1168
+ setHasUserActivatedSpeak(true);
1169
+ }
1170
+ return dialogState;
1330
1171
  }
1331
- };
1332
- useEffect(() => {
1172
+ }, [
1173
+ translateDialogState,
1174
+ handleSpeak,
1175
+ hasUserActivatedSpeak,
1176
+ setHasUserActivatedSpeak,
1177
+ ]);
1178
+ const stopAudio = useCallback(async () => {
1179
+ ttsStop();
1180
+ }, [ttsStop]);
1181
+ const focusChatInput = () => {
1333
1182
  let textarea = document.querySelector('#chat-fieldset textarea');
1334
- if (textarea)
1183
+ if (textarea && enableFocusChatInput) {
1335
1184
  textarea.focus();
1336
- }, [currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission]);
1337
- const [transcript, setTranscript] = useState('');
1338
- const resetTranscript = () => setTranscript('');
1339
- const [transcriptTimeout, setTranscriptTimeout] = useState(null);
1340
- const setListeningTimeout = () => {
1341
- let timeout = setTimeout(async () => {
1342
- clearListening();
1343
- const message = stripDuplicates(transcript);
1344
- if (message.length > 0 && listening) {
1345
- sendMessage(message);
1346
- resetTranscript();
1347
- setUserMessage('');
1348
- }
1349
- else if (listening) {
1350
- resetInteractionTimeout();
1351
- }
1352
- }, continuousSpeechTimeout * 1000);
1353
- setTranscriptTimeout(timeout);
1354
- };
1355
- const clearListeningTimeout = () => {
1356
- if (transcriptTimeout) {
1357
- clearTimeout(transcriptTimeout);
1358
- setTranscriptTimeout(null);
1359
1185
  }
1360
- };
1361
- const resetListeningTimeout = () => {
1362
- clearListeningTimeout();
1363
- if (continuousSpeech)
1364
- setListeningTimeout();
1365
- };
1366
- useEffect(() => {
1367
- resetListeningTimeout();
1368
- resetInteractionTimeout();
1369
- }, [transcript]);
1370
- const startListening = () => {
1371
- if (!AZURE_COGNITIVE_SERVICES_TTS_KEY)
1372
- return;
1373
- clearListening();
1374
- setTranscript('');
1375
- resetTranscript();
1376
- try {
1377
- navigator.mediaDevices
1378
- .getUserMedia({ audio: true })
1379
- .then(function (_stream) {
1380
- setHasUserActivatedListening(true);
1381
- if (!speechConfig) {
1382
- speechConfig = speechSdk.SpeechConfig.fromSubscription(AZURE_COGNITIVE_SERVICES_TTS_KEY, 'eastus');
1383
- speechConfig.speechRecognitionLanguage =
1384
- getCultureCodeByLanguage(userLang);
1385
- speechConfig.speechSynthesisLanguage =
1386
- getCultureCodeByLanguage(userLang);
1387
- speechConfig.speechSynthesisVoiceName = getTTSVoice(userLang);
1388
- }
1389
- const audioConfig = speechSdk.AudioConfig.fromDefaultMicrophoneInput();
1390
- recognizer = new speechSdk.SpeechRecognizer(speechConfig, audioConfig);
1391
- setListening(true);
1392
- recognizer.recognized = (_s, e) => {
1393
- if (!e.result.text)
1394
- return;
1395
- if (e.result.reason === speechSdk.ResultReason.RecognizedSpeech) {
1396
- let transcript = e.result.text;
1397
- setTranscript(transcript || '');
1398
- if ((transcript === null || transcript === void 0 ? void 0 : transcript.length) > 0) {
1399
- const transcriptMessage = stripDuplicates(transcript);
1400
- if (transcriptMessage.length > 0)
1401
- setUserMessage(msg => `${msg} ${transcriptMessage}`);
1402
- }
1403
- }
1404
- else if (e.result.reason === speechSdk.ResultReason.NoMatch) {
1405
- console.debug('NOMATCH: Speech could not be recognized.');
1406
- }
1407
- };
1408
- recognizer.canceled = (_s, e) => {
1409
- if (e.reason === speechSdk.CancellationReason.Error) {
1410
- console.debug(`"CANCELED: ErrorCode=${e.errorCode}`);
1411
- console.debug(`"CANCELED: ErrorDetails=${e.errorDetails}`);
1412
- console.debug('CANCELED: Did you set the speech resource key and region values?');
1413
- }
1414
- stopListening();
1415
- };
1416
- recognizer.sessionStopped = (_s, _e) => {
1417
- stopListening();
1418
- };
1419
- resetTranscript();
1420
- recognizer.startContinuousRecognitionAsync();
1421
- })
1422
- .catch(console.error);
1423
- }
1424
- catch (error) {
1425
- console.error(error);
1426
- }
1427
- };
1428
- const stopListening = () => {
1429
- if (recognizer) {
1430
- recognizer.stopContinuousRecognitionAsync();
1431
- recognizer.close();
1432
- recognizer = null;
1186
+ else {
1187
+ textarea === null || textarea === void 0 ? void 0 : textarea.blur();
1433
1188
  }
1434
- setListening(false);
1435
1189
  };
1436
- const clearListening = () => {
1437
- setHasUserActivatedListening(false);
1438
- stopListening();
1439
- clearListeningTimeout();
1440
- };
1441
- const resetListening = () => {
1442
- if (listening) {
1443
- clearListening();
1444
- resetTranscript();
1445
- setUserMessage('');
1446
- startListening();
1190
+ useEffect(() => {
1191
+ if (selectedLayout !== 'TOTEM') {
1192
+ focusChatInput();
1447
1193
  }
1448
- };
1194
+ }, [currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission]);
1449
1195
  const resetUIEffects = () => {
1450
1196
  try {
1451
- clearListening();
1452
1197
  clearInteractionTimeout();
1453
1198
  setClickedStart(false);
1454
1199
  timeoutRef.current = undefined;
@@ -1470,45 +1215,26 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1470
1215
  };
1471
1216
  }, []);
1472
1217
  useEffect(() => {
1473
- if ((currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.state) === 'Z0')
1474
- clearListening();
1475
- }, [currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.state]);
1476
- const [requestedListening, setRequestedListening] = useState(false);
1477
- const onEndSpeakStartListen = useCallback((_e) => {
1478
- if (isPlayingAudio && speechSynthesizer) {
1479
- speechSynthesizer.close();
1480
- speechSynthesizer = null;
1481
- }
1482
- if (continuousSpeech &&
1483
- (hasUserActivatedListening || !requestedListening)) {
1484
- setRequestedListening(true);
1485
- startListening();
1486
- }
1487
- }, [continuousSpeech, hasUserActivatedListening]);
1488
- useEffect(() => {
1489
- if (history.length > 1 &&
1490
- !isPlayingAudio &&
1218
+ if (!isPlayingAudio &&
1491
1219
  continuousSpeech &&
1492
- (hasUserActivatedListening || !requestedListening))
1493
- startListening();
1494
- else if (isPlayingAudio && listening) {
1495
- stopListening();
1220
+ (hasUserActivatedListening || !requestedListening) &&
1221
+ sessionId) {
1222
+ startRecording();
1496
1223
  }
1497
- }, [isPlayingAudio]);
1224
+ else if (isPlayingAudio && isListening) {
1225
+ stopRecording();
1226
+ }
1227
+ }, [isPlayingAudio, hasUserActivatedListening]);
1498
1228
  useEffect(() => {
1499
- resetListening();
1229
+ stopRecording();
1500
1230
  }, [language]);
1501
1231
  const [sendOnEnter, setSendOnEnter] = useState('keypress');
1502
1232
  useEffect(() => {
1503
- const stored = getLocalConfig('sendOnEnter', 'keypress');
1504
- if (window.innerWidth <= 768)
1233
+ if (window.innerWidth <= 768 && hasTouchscreen())
1505
1234
  setSendOnEnter('click');
1506
1235
  else
1507
- setSendOnEnter(stored);
1236
+ setSendOnEnter('keypress');
1508
1237
  }, []);
1509
- useEffect(() => {
1510
- setLocalConfig('sendOnEnter', sendOnEnter);
1511
- }, [sendOnEnter]);
1512
1238
  const [attachmentsMenuOpen, setAttachmentsMenuOpen] = useState();
1513
1239
  const globalBackground = integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.globalBackground;
1514
1240
  const globalBackgroundUrl = globalBackground
@@ -1517,8 +1243,8 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1517
1243
  const integrationProperties = (integration
1518
1244
  ? {
1519
1245
  '--memori-chat-bubble-bg': '#fff',
1520
- ...(integrationConfig && !showInstruct
1521
- ? { '--memori-text-color': (_p = integrationConfig.textColor) !== null && _p !== void 0 ? _p : '#000' }
1246
+ ...(integrationConfig && !instruct
1247
+ ? { '--memori-text-color': (_q = integrationConfig.textColor) !== null && _q !== void 0 ? _q : '#000' }
1522
1248
  : {}),
1523
1249
  ...((integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.buttonBgColor)
1524
1250
  ? {
@@ -1542,12 +1268,12 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1542
1268
  ? {
1543
1269
  '--memori-inner-bg': `rgba(${integrationConfig.innerBgColor === 'dark'
1544
1270
  ? '0, 0, 0'
1545
- : '255, 255, 255'}, ${(_q = integrationConfig.innerBgAlpha) !== null && _q !== void 0 ? _q : 0.4})`,
1271
+ : '255, 255, 255'}, ${(_r = integrationConfig.innerBgAlpha) !== null && _r !== void 0 ? _r : 0.4})`,
1546
1272
  '--memori-inner-content-pad': '1.5rem',
1547
1273
  '--memori-nav-bg-image': 'none',
1548
1274
  '--memori-nav-bg': `rgba(${integrationConfig.innerBgColor === 'dark'
1549
1275
  ? '0, 0, 0'
1550
- : '255, 255, 255'}, ${(_r = integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.innerBgAlpha) !== null && _r !== void 0 ? _r : 0.4})`,
1276
+ : '255, 255, 255'}, ${(_s = integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.innerBgAlpha) !== null && _s !== void 0 ? _s : 0.4})`,
1551
1277
  }
1552
1278
  : {
1553
1279
  '--memori-inner-content-pad': '0px',
@@ -1555,11 +1281,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1555
1281
  }
1556
1282
  : {});
1557
1283
  const integrationStylesheet = `
1558
- ${preview
1559
- ? '#preview,'
1560
- : selectedLayout === 'WEBSITE_ASSISTANT'
1561
- ? ''
1562
- : ':root,'} .memori-widget, .memori-drawer, .memori-modal {
1284
+ ${preview ? '#preview, ' : applyVarsToRoot ? ':root, ' : ''}memori-client, .memori-widget, .memori-drawer, .memori-modal {
1563
1285
  ${Object.entries(integrationProperties)
1564
1286
  .map(([key, value]) => `${key}: ${value};`)
1565
1287
  .join('\n')}
@@ -1568,6 +1290,8 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1568
1290
  const showAIicon = (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showAIicon) === undefined
1569
1291
  ? true
1570
1292
  : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showAIicon;
1293
+ const enableUpload = !!(showUpload !== null && showUpload !== void 0 ? showUpload : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showUpload);
1294
+ const enableReasoning = !!(showReasoning !== null && showReasoning !== void 0 ? showReasoning : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showReasoning);
1571
1295
  const showWhyThisAnswer = (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showWhyThisAnswer) === undefined
1572
1296
  ? true
1573
1297
  : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showWhyThisAnswer;
@@ -1578,35 +1302,6 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1578
1302
  setAvatar3dVisible(true);
1579
1303
  }
1580
1304
  }, []);
1581
- const [gamificationLevel, setGamificationLevel] = useState();
1582
- const getGamificationPoints = async (memoriID) => {
1583
- let gamificationPoints;
1584
- let unansQuestions;
1585
- try {
1586
- const { contentQualityIndex, answerQualityIndex, unansweredQuestions, ...cqResp } = await getContentQualityIndexes(memoriID);
1587
- if (cqResp.resultCode === 0) {
1588
- gamificationPoints = contentQualityIndex;
1589
- unansQuestions = unansweredQuestions;
1590
- }
1591
- }
1592
- catch (_e) {
1593
- let err = _e;
1594
- console.error('[APPCONTEXT/QUERYGAMIFICATIONPOINTS]', err);
1595
- }
1596
- return {
1597
- points: gamificationPoints !== null && gamificationPoints !== void 0 ? gamificationPoints : 0,
1598
- unansweredQuestions: unansQuestions !== null && unansQuestions !== void 0 ? unansQuestions : 0,
1599
- };
1600
- };
1601
- useEffect(() => {
1602
- if (memori.engineMemoriID) {
1603
- getGamificationPoints(memori.engineMemoriID)
1604
- .then(value => {
1605
- setGamificationLevel(getGamificationLevel(value.points));
1606
- })
1607
- .catch(console.error);
1608
- }
1609
- }, [memori.engineMemoriID]);
1610
1305
  useEffect(() => {
1611
1306
  if (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.seoTitle) {
1612
1307
  let meta = document.createElement('meta');
@@ -1634,80 +1329,13 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1634
1329
  document.head.append(meta);
1635
1330
  }
1636
1331
  }, [integrationConfig, memori.avatarURL, ogImage]);
1637
- const selectReceiverTag = async (tag) => {
1638
- var _a;
1639
- if (!sessionId)
1640
- return;
1641
- try {
1642
- const { currentState, ...resp } = await postTagChangedEvent(sessionId, tag);
1643
- if (resp.resultCode === 0) {
1644
- pushMessage({
1645
- text: tag,
1646
- fromUser: true,
1647
- });
1648
- if (currentState.state === 'X4' && memori.giverTag) {
1649
- const { currentState, ...resp } = await client.postTagChangedEvent(sessionId, memori.giverTag);
1650
- if (resp.resultCode === 0) {
1651
- setCurrentDialogState(currentState);
1652
- if (currentState.emission) {
1653
- pushMessage({
1654
- text: currentState.emission,
1655
- emitter: currentState.emitter,
1656
- media: currentState.media,
1657
- fromUser: false,
1658
- contextVars: currentState.contextVars,
1659
- date: currentState.currentDate,
1660
- placeName: currentState.currentPlaceName,
1661
- placeLatitude: currentState.currentLatitude,
1662
- placeLongitude: currentState.currentLongitude,
1663
- placeUncertaintyKm: currentState.currentUncertaintyKm,
1664
- tag: currentState.currentTag,
1665
- memoryTags: currentState.memoryTags,
1666
- });
1667
- }
1668
- }
1669
- else {
1670
- console.error(resp);
1671
- toast.error(t(getErrori18nKey(resp.resultCode)));
1672
- }
1673
- }
1674
- else {
1675
- setCurrentDialogState(currentState);
1676
- if (currentState.emission) {
1677
- pushMessage({
1678
- text: currentState.emission,
1679
- emitter: currentState.emitter,
1680
- media: currentState.media,
1681
- fromUser: false,
1682
- contextVars: currentState.contextVars,
1683
- date: currentState.currentDate,
1684
- placeName: currentState.currentPlaceName,
1685
- placeLatitude: currentState.currentLatitude,
1686
- placeLongitude: currentState.currentLongitude,
1687
- placeUncertaintyKm: currentState.currentUncertaintyKm,
1688
- tag: currentState.currentTag,
1689
- memoryTags: currentState.memoryTags,
1690
- });
1691
- }
1692
- }
1693
- }
1694
- else {
1695
- console.error(resp, tag, (_a = currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.knownTags) === null || _a === void 0 ? void 0 : _a[tag]);
1696
- toast.error(t(getErrori18nKey(resp.resultCode)));
1697
- }
1698
- }
1699
- catch (e) {
1700
- let err = e;
1701
- console.error(err);
1702
- toast.error(err.message);
1703
- }
1704
- };
1705
1332
  const simulateUserPrompt = (text, translatedText) => {
1706
- stopListening();
1707
1333
  stopAudio();
1708
1334
  sendMessage(text, undefined, undefined, false, translatedText);
1709
1335
  };
1710
1336
  const memoriTextEnteredHandler = useCallback((e) => {
1337
+ if (disableTextEnteredEvents)
1338
+ return;
1711
1339
  const { text, waitForPrevious, hidden, typingText, useLoaderTextAsMsg, hasBatchQueued, } = e.detail;
1712
1340
  if (text) {
1713
1341
  if (waitForPrevious &&
@@ -1718,34 +1346,45 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1718
1346
  }, 1000);
1719
1347
  }
1720
1348
  else {
1721
- stopListening();
1722
1349
  stopAudio();
1723
1350
  sendMessage(text, undefined, undefined, undefined, undefined, hidden, typingText, useLoaderTextAsMsg, hasBatchQueued);
1724
1351
  }
1725
1352
  }
1726
- }, [sessionId, isPlayingAudio, memoriTyping, userLang]);
1353
+ }, [
1354
+ sessionId,
1355
+ isPlayingAudio,
1356
+ memoriTyping,
1357
+ userLang,
1358
+ disableTextEnteredEvents,
1359
+ ]);
1727
1360
  useEffect(() => {
1728
- document.addEventListener('MemoriTextEntered', memoriTextEnteredHandler);
1361
+ if (!disableTextEnteredEvents) {
1362
+ document.addEventListener('MemoriTextEntered', memoriTextEnteredHandler);
1363
+ }
1364
+ else {
1365
+ document.removeEventListener('MemoriTextEntered', memoriTextEnteredHandler);
1366
+ }
1729
1367
  return () => {
1730
1368
  document.removeEventListener('MemoriTextEntered', memoriTextEnteredHandler);
1731
1369
  };
1732
- }, [sessionId, userLang]);
1733
- const onClickStart = useCallback(async (session) => {
1734
- var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _t, _u, _v;
1735
- const sessionID = (session === null || session === void 0 ? void 0 : session.sessionID) || sessionId;
1736
- const dialogState = (session === null || session === void 0 ? void 0 : session.dialogState) || currentDialogState;
1370
+ }, [sessionId, userLang, disableTextEnteredEvents]);
1371
+ const onClickStart = useCallback(async (session, initialSessionExpired = false, chatLog) => {
1372
+ var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
1373
+ const sessionID = chatLog ? undefined : (session === null || session === void 0 ? void 0 : session.sessionID) || sessionId;
1374
+ const dialogState = chatLog
1375
+ ? undefined
1376
+ : (session === null || session === void 0 ? void 0 : session.dialogState) || currentDialogState;
1737
1377
  setClickedStart(true);
1738
- let memoriAudioElement = document.getElementById('memori-audio');
1739
- let isSafari = window.navigator.userAgent.includes('Safari') &&
1740
- !window.navigator.userAgent.includes('Chrome');
1741
- if (memoriAudioElement && isSafari) {
1742
- memoriAudioElement.muted = false;
1743
- memoriAudioElement.play().catch((e) => {
1744
- console.error('error playing intro audio', e);
1745
- });
1746
- }
1378
+ let translatedMessages = [];
1747
1379
  let storageBirthDate = getLocalConfig('birthDate', undefined);
1748
- let birth = birthDate || storageBirthDate || undefined;
1380
+ let birth = birthDate || storageBirthDate || (user === null || user === void 0 ? void 0 : user.birthDate);
1381
+ if (!birth && autoStart && initialSessionID)
1382
+ birth = '1970-01-01T10:24:03.845Z';
1383
+ const localPosition = getLocalConfig('position', undefined);
1384
+ if (autoStart && !localPosition && memori.needsPosition) {
1385
+ setShowPositionDrawer(true);
1386
+ return;
1387
+ }
1749
1388
  if (!sessionID && !!minAge && !birth) {
1750
1389
  setShowAgeVerification(true);
1751
1390
  setClickedStart(false);
@@ -1760,7 +1399,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1760
1399
  setClickedStart(false);
1761
1400
  return;
1762
1401
  }
1763
- else if (!sessionID) {
1402
+ else if (!sessionID || initialSessionExpired) {
1764
1403
  setClickedStart(false);
1765
1404
  setGotErrorInOpening(false);
1766
1405
  const session = await fetchSession({
@@ -1768,77 +1407,107 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1768
1407
  password: secret || memoriPwd || memori.secretToken,
1769
1408
  tag: personification === null || personification === void 0 ? void 0 : personification.tag,
1770
1409
  pin: personification === null || personification === void 0 ? void 0 : personification.pin,
1410
+ continueFromChatLogID: chatLog === null || chatLog === void 0 ? void 0 : chatLog.chatLogID,
1771
1411
  initialContextVars: {
1772
1412
  PATHNAME: (_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.toUpperCase(),
1773
1413
  ROUTE: ((_d = (_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) === null || _d === void 0 ? void 0 : _d.toUpperCase()) || '',
1774
- ...(initialContextVars || {}),
1414
+ ...((!chatLog
1415
+ ? initialContextVars
1416
+ : chatLog.lines[chatLog.lines.length - 1].contextVars) || {}),
1775
1417
  },
1776
- initialQuestion,
1418
+ initialQuestion: chatLog ? undefined : initialQuestion,
1777
1419
  birthDate: birth,
1778
1420
  additionalInfo: {
1779
1421
  ...(additionalInfo || {}),
1780
1422
  loginToken: (_g = (_f = userToken !== null && userToken !== void 0 ? userToken : loginToken) !== null && _f !== void 0 ? _f : additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _g !== void 0 ? _g : authToken,
1781
1423
  language: getCultureCodeByLanguage(userLang),
1424
+ timeZoneOffset: new Date().getTimezoneOffset().toString(),
1782
1425
  },
1783
1426
  });
1784
1427
  if (session === null || session === void 0 ? void 0 : session.dialogState) {
1785
- setHistory([]);
1786
- translateDialogState(session.dialogState, userLang)
1787
- .then(ts => {
1788
- if (ts.emission) {
1789
- speak(ts.emission);
1790
- }
1791
- })
1792
- .finally(() => {
1428
+ if (!chatLog) {
1429
+ setHistory([]);
1430
+ await translateAndSpeak(session.dialogState, userLang);
1793
1431
  setHasUserActivatedSpeak(true);
1794
- });
1432
+ }
1433
+ else {
1434
+ const messages = chatLog.lines.map((l, i) => {
1435
+ var _a, _b;
1436
+ return ({
1437
+ text: l.text,
1438
+ media: (_b = (_a = l.media) === null || _a === void 0 ? void 0 : _a.filter(m => allowedMediaTypes.includes(m.mimeType))) === null || _b === void 0 ? void 0 : _b.map(m => ({
1439
+ mediumID: `${i}-${m.mimeType}`,
1440
+ ...m,
1441
+ })),
1442
+ fromUser: l.inbound,
1443
+ timestamp: l.timestamp,
1444
+ emitter: l.emitter,
1445
+ initial: i === 0,
1446
+ });
1447
+ });
1448
+ translatedMessages = messages !== null && messages !== void 0 ? messages : [];
1449
+ if (language.toUpperCase() !== userLang.toUpperCase() &&
1450
+ isMultilanguageEnabled) {
1451
+ try {
1452
+ translatedMessages = await Promise.all(messages.map(async (m) => {
1453
+ if ('originalText' in m && m.originalText) {
1454
+ return m;
1455
+ }
1456
+ return {
1457
+ ...m,
1458
+ originalText: m.text,
1459
+ text: (await getTranslation(m.text, userLang, language, baseUrl)).text,
1460
+ };
1461
+ }));
1462
+ }
1463
+ catch (e) {
1464
+ console.error('[CLICK_START] Error translating messages:', e);
1465
+ }
1466
+ }
1467
+ setHistory(translatedMessages);
1468
+ translateDialogState(session.dialogState, userLang, undefined, true).finally(() => {
1469
+ setHasUserActivatedSpeak(true);
1470
+ });
1471
+ }
1795
1472
  }
1796
- else {
1473
+ else if ((session === null || session === void 0 ? void 0 : session.resultCode) === 0) {
1797
1474
  await onClickStart(session || undefined);
1798
1475
  }
1476
+ else {
1477
+ setLoading(false);
1478
+ }
1799
1479
  return;
1800
1480
  }
1801
1481
  else if (initialSessionID) {
1802
1482
  const { currentState, ...response } = await getSession(sessionID);
1803
1483
  if (response.resultCode !== 0 || !currentState) {
1804
- console.debug('session expired, opening new session');
1805
1484
  setGotErrorInOpening(true);
1806
1485
  setSessionId(undefined);
1807
1486
  setClickedStart(false);
1808
- await onClickStart();
1487
+ await onClickStart(undefined, true);
1809
1488
  return;
1810
1489
  }
1811
1490
  setHistory([]);
1812
- if (position)
1491
+ if (position && memori.needsPosition) {
1813
1492
  applyPosition(position, sessionID);
1814
- if (memori.needsDateTime)
1493
+ }
1494
+ if (memori.needsDateTime) {
1815
1495
  sendDateChangedEvent({ sessionID: sessionID, state: currentState });
1816
- if (instruct &&
1817
- memori.giverTag &&
1818
- (currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.currentTag) !== memori.giverTag) {
1496
+ }
1497
+ if (personification &&
1498
+ currentState.currentTag !== personification.tag) {
1819
1499
  try {
1820
- console.debug('change tag #0');
1821
1500
  await changeTag(memori.engineMemoriID, sessionID, '-');
1822
- const session = await changeTag(memori.engineMemoriID, sessionID, memori.giverTag, memori.giverPIN);
1501
+ const session = await changeTag(memori.engineMemoriID, sessionID, personification.tag, personification.pin);
1823
1502
  if (session && session.resultCode === 0) {
1824
- translateDialogState(session.currentState, userLang)
1825
- .then(ts => {
1826
- if (ts.emission) {
1827
- speak(ts.emission);
1828
- }
1829
- })
1830
- .finally(() => {
1831
- setHasUserActivatedSpeak(true);
1832
- });
1503
+ await translateAndSpeak(session.currentState, userLang);
1833
1504
  }
1834
1505
  else {
1835
- console.error('session #1', session);
1836
1506
  throw new Error('No session');
1837
1507
  }
1838
1508
  }
1839
1509
  catch (e) {
1840
- console.error('session #2', e);
1841
- 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, {
1510
+ reopenSession(true, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, personification.tag, personification.pin, {
1842
1511
  PATHNAME: (_h = window.location.pathname) === null || _h === void 0 ? void 0 : _h.toUpperCase(),
1843
1512
  ROUTE: ((_l = (_k = (_j = window.location.pathname) === null || _j === void 0 ? void 0 : _j.split('/')) === null || _k === void 0 ? void 0 : _k.pop()) === null || _l === void 0 ? void 0 : _l.toUpperCase()) ||
1844
1513
  '',
@@ -1848,32 +1517,22 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1848
1517
  });
1849
1518
  }
1850
1519
  }
1851
- else if (!instruct &&
1852
- personification &&
1853
- (currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.currentTag) !== personification.tag) {
1520
+ else if (!personification &&
1521
+ (currentState === null || currentState === void 0 ? void 0 : currentState.currentTag) &&
1522
+ (currentState === null || currentState === void 0 ? void 0 : currentState.currentTag) !== anonTag &&
1523
+ (currentState === null || currentState === void 0 ? void 0 : currentState.currentTag) !== '-') {
1854
1524
  try {
1855
- console.debug('change tag #3');
1856
1525
  await changeTag(memori.engineMemoriID, sessionID, '-');
1857
- const session = await changeTag(memori.engineMemoriID, sessionID, personification.tag, personification.pin);
1526
+ const session = await changeTag(memori.engineMemoriID, sessionID, anonTag);
1858
1527
  if (session && session.resultCode === 0) {
1859
- translateDialogState(session.currentState, userLang)
1860
- .then(ts => {
1861
- if (ts.emission) {
1862
- speak(ts.emission);
1863
- }
1864
- })
1865
- .finally(() => {
1866
- setHasUserActivatedSpeak(true);
1867
- });
1528
+ await translateAndSpeak(session.currentState, userLang);
1868
1529
  }
1869
1530
  else {
1870
- console.error('session #4', session);
1871
1531
  throw new Error('No session');
1872
1532
  }
1873
1533
  }
1874
1534
  catch (e) {
1875
- console.error('session #5', e);
1876
- reopenSession(true, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, personification.tag, personification.pin, {
1535
+ reopenSession(true, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, undefined, undefined, {
1877
1536
  PATHNAME: (_m = window.location.pathname) === null || _m === void 0 ? void 0 : _m.toUpperCase(),
1878
1537
  ROUTE: ((_q = (_p = (_o = window.location.pathname) === null || _o === void 0 ? void 0 : _o.split('/')) === null || _p === void 0 ? void 0 : _p.pop()) === null || _q === void 0 ? void 0 : _q.toUpperCase()) ||
1879
1538
  '',
@@ -1883,70 +1542,77 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1883
1542
  });
1884
1543
  }
1885
1544
  }
1886
- else if (!instruct &&
1887
- !personification &&
1888
- (currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.currentTag) !== anonTag) {
1545
+ else {
1889
1546
  try {
1890
- console.debug('change tag #6');
1891
- await changeTag(memori.engineMemoriID, sessionID, '-');
1892
- const session = await changeTag(memori.engineMemoriID, sessionID, anonTag);
1893
- if (session && session.resultCode === 0) {
1894
- translateDialogState(session.currentState, userLang)
1895
- .then(ts => {
1896
- if (ts.emission) {
1897
- speak(ts.emission);
1898
- }
1899
- })
1900
- .finally(() => {
1901
- setHasUserActivatedSpeak(true);
1547
+ const { chatLogs } = await getSessionChatLogs(sessionID, sessionID);
1548
+ const messages = (_r = chatLogs === null || chatLogs === void 0 ? void 0 : chatLogs[0]) === null || _r === void 0 ? void 0 : _r.lines.map((l, i) => {
1549
+ var _a, _b;
1550
+ return ({
1551
+ text: l.text,
1552
+ media: (_b = (_a = l.media) === null || _a === void 0 ? void 0 : _a.filter(m => allowedMediaTypes.includes(m.mimeType))) === null || _b === void 0 ? void 0 : _b.map(m => ({
1553
+ mediumID: `${i}-${m.mimeType}`,
1554
+ ...m,
1555
+ })),
1556
+ fromUser: l.inbound,
1557
+ timestamp: l.timestamp,
1558
+ emitter: l.emitter,
1559
+ initial: i === 0,
1902
1560
  });
1561
+ });
1562
+ translatedMessages = messages !== null && messages !== void 0 ? messages : [];
1563
+ if (language.toUpperCase() !== userLang.toUpperCase() &&
1564
+ isMultilanguageEnabled) {
1565
+ try {
1566
+ translatedMessages = await Promise.all(messages.map(async (m) => ({
1567
+ ...m,
1568
+ originalText: m.text,
1569
+ text: (await getTranslation(m.text, userLang, language, baseUrl)).text,
1570
+ })));
1571
+ }
1572
+ catch (e) {
1573
+ console.error('[CLICK_START] Error translating messages:', e);
1574
+ }
1903
1575
  }
1904
- else {
1905
- console.error('session #7', session);
1906
- throw new Error('No session');
1907
- }
1576
+ setHistory(translatedMessages);
1908
1577
  }
1909
1578
  catch (e) {
1910
- console.error('session #8', e);
1911
- reopenSession(true, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, undefined, undefined, {
1912
- PATHNAME: (_r = window.location.pathname) === null || _r === void 0 ? void 0 : _r.toUpperCase(),
1913
- ROUTE: ((_v = (_u = (_t = window.location.pathname) === null || _t === void 0 ? void 0 : _t.split('/')) === null || _u === void 0 ? void 0 : _u.pop()) === null || _v === void 0 ? void 0 : _v.toUpperCase()) ||
1914
- '',
1915
- ...(initialContextVars || {}),
1916
- }, initialQuestion, birth).then(() => {
1917
- setHasUserActivatedSpeak(true);
1579
+ console.error('[CLICK_START] Error retrieving chat logs:', e);
1580
+ }
1581
+ if ((!!(translatedMessages === null || translatedMessages === void 0 ? void 0 : translatedMessages.length) && translatedMessages.length > 1) ||
1582
+ !initialQuestion) {
1583
+ await translateAndSpeak(currentState, userLang, undefined, !!(translatedMessages === null || translatedMessages === void 0 ? void 0 : translatedMessages.length));
1584
+ }
1585
+ else {
1586
+ translatedMessages = [];
1587
+ setHistory([]);
1588
+ setMemoriTyping(true);
1589
+ const response = await postTextEnteredEvent({
1590
+ sessionId: sessionID,
1591
+ text: initialQuestion,
1918
1592
  });
1593
+ await translateAndSpeak((_s = response.currentState) !== null && _s !== void 0 ? _s : currentState, userLang, undefined, false);
1919
1594
  }
1920
1595
  }
1921
- else {
1922
- translateDialogState(currentState, userLang)
1923
- .then(ts => {
1924
- if (ts.emission) {
1925
- speak(ts.emission);
1926
- }
1927
- })
1928
- .finally(() => {
1929
- setHasUserActivatedSpeak(true);
1930
- });
1931
- }
1932
- if (position)
1596
+ if (position && memori.needsPosition) {
1933
1597
  applyPosition(position, sessionID);
1934
- if (memori.needsDateTime)
1598
+ }
1599
+ if (memori.needsDateTime) {
1935
1600
  sendDateChangedEvent({ sessionID: sessionID, state: currentState });
1601
+ }
1936
1602
  }
1937
1603
  else {
1938
1604
  setHistory([]);
1939
- translateDialogState(dialogState, userLang)
1940
- .then(ts => {
1941
- if (ts.emission) {
1942
- speak(ts.emission);
1943
- }
1944
- })
1945
- .finally(() => {
1946
- setHasUserActivatedSpeak(true);
1947
- });
1605
+ await translateAndSpeak(dialogState, userLang);
1948
1606
  }
1949
1607
  }, [memoriPwd, memori, memoriTokens, birthDate, sessionId, userLang, position]);
1608
+ useEffect(() => {
1609
+ console.log('clickedStart', clickedStart);
1610
+ console.log('autoStart', autoStart);
1611
+ console.log('selectedLayout', selectedLayout);
1612
+ if (!clickedStart && autoStart && selectedLayout !== 'HIDDEN_CHAT') {
1613
+ onClickStart();
1614
+ }
1615
+ }, [clickedStart, autoStart, selectedLayout]);
1950
1616
  useEffect(() => {
1951
1617
  const targetNode = document.querySelector(`memori-client[memoriname="${memori.name}"]`) ||
1952
1618
  document.querySelector(`memori-client[memoriid="${memori.memoriID}"]`) ||
@@ -2027,7 +1693,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
2027
1693
  }
2028
1694
  catch (e) {
2029
1695
  let err = e;
2030
- console.error(err);
1696
+ console.debug(err);
2031
1697
  }
2032
1698
  }, [tenant === null || tenant === void 0 ? void 0 : tenant.billingDelegation, deepThoughtEnabled]);
2033
1699
  useEffect(() => {
@@ -2035,24 +1701,49 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
2035
1701
  checkCredits();
2036
1702
  }
2037
1703
  }, [tenant === null || tenant === void 0 ? void 0 : tenant.billingDelegation, deepThoughtEnabled]);
1704
+ useEffect(() => {
1705
+ const closeSession = () => {
1706
+ if (sessionId) {
1707
+ deleteSession(sessionId);
1708
+ }
1709
+ };
1710
+ window.addEventListener('beforeunload', closeSession);
1711
+ return () => {
1712
+ window.removeEventListener('beforeunload', closeSession);
1713
+ closeSession();
1714
+ };
1715
+ }, [sessionId]);
2038
1716
  const showFullHistory = showOnlyLastMessages === undefined
2039
- ? layout !== 'TOTEM' && layout !== 'WEBSITE_ASSISTANT'
1717
+ ? selectedLayout !== 'TOTEM' &&
1718
+ selectedLayout !== 'WEBSITE_ASSISTANT' &&
1719
+ selectedLayout !== 'HIDDEN_CHAT'
2040
1720
  : !showOnlyLastMessages;
2041
1721
  const headerProps = {
2042
- memori,
1722
+ memori: {
1723
+ ...memori,
1724
+ ownerUserID: (_u = (_t = memori.ownerUserID) !== null && _t !== void 0 ? _t : ownerUserID) !== null && _u !== void 0 ? _u : undefined,
1725
+ },
2043
1726
  tenant,
2044
1727
  history,
2045
- showShare: (_t = showShare !== null && showShare !== void 0 ? showShare : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showShare) !== null && _t !== void 0 ? _t : true,
1728
+ showShare: (_v = showShare !== null && showShare !== void 0 ? showShare : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showShare) !== null && _v !== void 0 ? _v : true,
2046
1729
  position,
2047
1730
  setShowPositionDrawer,
2048
1731
  setShowSettingsDrawer,
2049
1732
  setShowKnownFactsDrawer,
2050
1733
  setShowExpertsDrawer,
2051
- showSpeaker: !!AZURE_COGNITIVE_SERVICES_TTS_KEY,
2052
- speakerMuted: muteSpeaker || speakerMuted,
1734
+ enableAudio: defaultEnableAudio,
1735
+ speakerMuted: speakerMuted !== null && speakerMuted !== void 0 ? speakerMuted : false,
2053
1736
  setSpeakerMuted: mute => {
2054
- speakerMuted = !!mute;
2055
- setMuteSpeaker(mute);
1737
+ var _a;
1738
+ if (!((_a = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _a !== void 0 ? _a : true)) {
1739
+ mute = true;
1740
+ }
1741
+ toggleMute(mute);
1742
+ let microphoneMode = getLocalConfig('microphoneMode', 'HOLD_TO_TALK');
1743
+ if (microphoneMode === 'CONTINUOUS' && mute) {
1744
+ setContinuousSpeech(false);
1745
+ setLocalConfig('microphoneMode', 'HOLD_TO_TALK');
1746
+ }
2056
1747
  setLocalConfig('muteSpeaker', !!mute);
2057
1748
  if (mute) {
2058
1749
  stopAudio();
@@ -2065,16 +1756,19 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
2065
1756
  source.connect(audioContext.destination);
2066
1757
  }
2067
1758
  },
2068
- showSettings,
1759
+ setShowChatHistoryDrawer,
1760
+ showSettings: (_w = showSettings !== null && showSettings !== void 0 ? showSettings : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showSettings) !== null && _w !== void 0 ? _w : true,
1761
+ showChatHistory: (_x = showChatHistory !== null && showChatHistory !== void 0 ? showChatHistory : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showChatHistory) !== null && _x !== void 0 ? _x : true,
2069
1762
  hasUserActivatedSpeak,
2070
1763
  showReload: selectedLayout === 'TOTEM',
2071
1764
  showClear,
2072
1765
  clearHistory: () => setHistory(h => h.slice(-1)),
2073
- showLogin,
1766
+ showLogin: showLogin !== null && showLogin !== void 0 ? showLogin : memori.requireLoginToken,
2074
1767
  setShowLoginDrawer,
2075
1768
  loginToken,
2076
1769
  user,
2077
1770
  sessionID: sessionId,
1771
+ baseUrl,
2078
1772
  };
2079
1773
  const avatarProps = {
2080
1774
  memori,
@@ -2085,31 +1779,36 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
2085
1779
  avatar3dVisible,
2086
1780
  setAvatar3dVisible,
2087
1781
  hasUserActivatedSpeak,
2088
- isPlayingAudio: isPlayingAudio && !muteSpeaker,
1782
+ isPlayingAudio: isPlayingAudio &&
1783
+ !speakerMuted &&
1784
+ ((_y = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _y !== void 0 ? _y : true),
2089
1785
  loading: !!memoriTyping,
2090
1786
  baseUrl,
2091
- apiUrl,
1787
+ apiUrl: client.constants.BACKEND_URL,
1788
+ enablePositionControls,
1789
+ setEnablePositionControls,
1790
+ avatarType,
2092
1791
  };
2093
1792
  const startPanelProps = {
2094
1793
  memori,
2095
1794
  tenant: tenant,
2096
- gamificationLevel: gamificationLevel,
2097
1795
  language: language,
2098
1796
  userLang: userLang,
2099
1797
  setUserLang: setUserLang,
2100
1798
  baseUrl: baseUrl,
2101
- apiUrl: apiUrl,
1799
+ apiUrl: client.constants.BACKEND_URL,
2102
1800
  position: position,
2103
1801
  openPositionDrawer: () => setShowPositionDrawer(true),
2104
1802
  integrationConfig: integrationConfig,
2105
1803
  instruct: instruct,
2106
1804
  sessionId: sessionId,
2107
1805
  clickedStart: clickedStart,
1806
+ isMultilanguageEnabled: isMultilanguageEnabled,
2108
1807
  onClickStart: onClickStart,
2109
- initializeTTS: initializeTTS,
2110
1808
  isUserLoggedIn: !!loginToken && !!(user === null || user === void 0 ? void 0 : user.userID),
1809
+ hasInitialSession: !!initialSessionID,
2111
1810
  notEnoughCredits: needsCredits && !hasEnoughCredits,
2112
- showLogin,
1811
+ showLogin: showLogin !== null && showLogin !== void 0 ? showLogin : memori.requireLoginToken,
2113
1812
  setShowLoginDrawer,
2114
1813
  user,
2115
1814
  };
@@ -2119,68 +1818,61 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
2119
1818
  tenant,
2120
1819
  translateTo: isMultilanguageEnabled &&
2121
1820
  userLang.toUpperCase() !==
2122
- ((_y = ((_x = (_w = (_v = (_u = memori.culture) === null || _u === void 0 ? void 0 : _u.split('-')) === null || _v === void 0 ? void 0 : _v[0]) !== null && _w !== void 0 ? _w : i18n.language) !== null && _x !== void 0 ? _x : 'IT')) === null || _y === void 0 ? void 0 : _y.toUpperCase())
1821
+ ((_3 = ((_2 = (_1 = (_0 = (_z = memori.culture) === null || _z === void 0 ? void 0 : _z.split('-')) === null || _0 === void 0 ? void 0 : _0[0]) !== null && _1 !== void 0 ? _1 : i18n.language) !== null && _2 !== void 0 ? _2 : 'IT')) === null || _3 === void 0 ? void 0 : _3.toUpperCase())
2123
1822
  ? userLang
2124
1823
  : undefined,
2125
1824
  baseUrl,
2126
- apiUrl,
1825
+ apiUrl: client.constants.BACKEND_URL,
2127
1826
  layout,
2128
1827
  memoriTyping,
2129
1828
  typingText,
2130
1829
  showTypingText,
2131
1830
  history: showFullHistory ? history : history.slice(-2),
2132
- authToken: (_0 = (_z = loginToken !== null && loginToken !== void 0 ? loginToken : userToken) !== null && _z !== void 0 ? _z : additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _0 !== void 0 ? _0 : authToken,
1831
+ authToken: (_5 = (_4 = loginToken !== null && loginToken !== void 0 ? loginToken : userToken) !== null && _4 !== void 0 ? _4 : additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _5 !== void 0 ? _5 : authToken,
2133
1832
  dialogState: currentDialogState,
2134
- setDialogState: setCurrentDialogState,
2135
1833
  pushMessage,
2136
1834
  simulateUserPrompt,
2137
1835
  showDates,
2138
1836
  showContextPerLine,
2139
1837
  showAIicon,
1838
+ showUpload: enableUpload,
1839
+ showReasoning: enableReasoning,
2140
1840
  showWhyThisAnswer,
1841
+ showCopyButton,
1842
+ showTranslationOriginal,
2141
1843
  client,
2142
- selectReceiverTag,
1844
+ instruct,
2143
1845
  preview,
2144
1846
  sendOnEnter,
2145
1847
  setSendOnEnter,
2146
1848
  microphoneMode: continuousSpeech ? 'CONTINUOUS' : 'HOLD_TO_TALK',
2147
1849
  attachmentsMenuOpen,
2148
1850
  setAttachmentsMenuOpen,
2149
- instruct,
2150
1851
  showInputs,
2151
- showMicrophone: !!AZURE_COGNITIVE_SERVICES_TTS_KEY,
1852
+ showMicrophone: !!ttsProvider && ((_6 = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _6 !== void 0 ? _6 : true),
1853
+ showFunctionCache,
2152
1854
  userMessage,
2153
1855
  onChangeUserMessage,
2154
- sendMessage: (msg) => {
1856
+ sendMessage: (msg, media) => {
2155
1857
  stopAudio();
2156
- stopListening();
2157
- sendMessage(msg);
1858
+ stopRecording();
1859
+ sendMessage(msg, media);
2158
1860
  setUserMessage('');
2159
- resetTranscript();
2160
1861
  },
2161
- stopListening: clearListening,
2162
- startListening,
1862
+ stopListening: stopRecording,
1863
+ startListening: startRecording,
2163
1864
  stopAudio,
2164
- resetTranscript,
2165
- listening,
1865
+ listening: isListening,
1866
+ setEnableFocusChatInput,
2166
1867
  isPlayingAudio,
2167
1868
  customMediaRenderer,
2168
1869
  user,
2169
1870
  userAvatar,
2170
1871
  experts,
1872
+ useMathFormatting: applyMathFormatting,
2171
1873
  };
2172
1874
  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" }));
2173
1875
  const integrationStyle = integration ? (_jsx("style", { dangerouslySetInnerHTML: { __html: integrationStylesheet } })) : null;
2174
- const onChangeMode = (mode) => {
2175
- setInstruct(mode === 'instruct');
2176
- setHasUserActivatedSpeak(false);
2177
- setClickedStart(false);
2178
- };
2179
- const changeModeProps = {
2180
- canInstruct: !!memori.giverTag,
2181
- instruct: !!instruct,
2182
- onChangeMode,
2183
- };
2184
1876
  const poweredBy = (_jsx(PoweredBy, { tenant: tenant, userLang: userLang, integrationID: integration === null || integration === void 0 ? void 0 : integration.integrationID, memoriHash: `${memori.ownerTenantName}-${memori.ownerUserName}-${memori.name}` }));
2185
1877
  const Layout = customLayout
2186
1878
  ? customLayout
@@ -2192,19 +1884,24 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
2192
1884
  ? FullPageLayout
2193
1885
  : selectedLayout === 'WEBSITE_ASSISTANT'
2194
1886
  ? WebsiteAssistantLayout
2195
- : FullPageLayout;
2196
- return (_jsxs("div", { className: cx('memori', 'memori-widget', `memori-layout-${layout.toLowerCase()}`, `memori-controls-${controlsPosition.toLowerCase()}`, `memori--avatar-${(integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.avatar) || 'default'}`, {
1887
+ : selectedLayout === 'HIDDEN_CHAT'
1888
+ ? HiddenChatLayout
1889
+ : selectedLayout === 'ZOOMED_FULL_BODY'
1890
+ ? ZoomedFullBodyLayout
1891
+ : FullPageLayout;
1892
+ return (_jsxs("div", { className: cx('memori', 'memori-widget', `memori-layout-${selectedLayout.toLowerCase()}`, `memori-controls-${controlsPosition.toLowerCase()}`, `memori--avatar-${(integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.avatar) || 'default'}`, {
1893
+ 'memori--auto-start': autoStart,
2197
1894
  'memori--preview': preview,
2198
1895
  'memori--embed': embed,
2199
1896
  'memori--with-integration': integration,
2200
- 'memori--with-speechkey': !!AZURE_COGNITIVE_SERVICES_TTS_KEY,
1897
+ 'memori--with-speechkey': !!ttsProvider,
2201
1898
  'memori--active': hasUserActivatedSpeak,
2202
1899
  'memori--hide-emissions': hideEmissions,
2203
1900
  'memori--has-active-session': !!sessionId,
2204
1901
  }), "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({
2205
1902
  ...currentDialogState,
2206
1903
  sessionID: sessionId,
2207
- }), 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://aisuru.com/intro.mp3" }), isClient && (_jsx(MemoriAuth, { withModal: true, pwdOrTokens: authModalState, openModal: !!authModalState, setPwdOrTokens: setAuthModalState, showTokens: memori.privacyType === 'SECRET', onFinish: async (values) => {
1904
+ }), 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, poweredBy: poweredBy, autoStart: autoStart, sessionId: sessionId, hasUserActivatedSpeak: hasUserActivatedSpeak, loading: loading }), _jsx("audio", { id: "memori-audio", style: { display: 'none' }, src: "https://aisuru.com/intro.mp3" }), isClient && (_jsx(MemoriAuth, { withModal: true, pwdOrTokens: authModalState, openModal: !!authModalState, setPwdOrTokens: setAuthModalState, showTokens: memori.privacyType === 'SECRET', onFinish: async (values) => {
2208
1905
  var _a, _b, _c, _d;
2209
1906
  if (values['password'])
2210
1907
  setMemoriPwd(values['password']);
@@ -2212,7 +1909,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
2212
1909
  memoriPassword = values['password'];
2213
1910
  if (values['tokens'])
2214
1911
  setMemoriTokens(values['tokens']);
2215
- reopenSession(!sessionId, values['password'], values['tokens'], instruct ? memori.giverTag : personification === null || personification === void 0 ? void 0 : personification.tag, instruct ? memori.giverPIN : personification === null || personification === void 0 ? void 0 : personification.pin, {
1912
+ reopenSession(!sessionId, values['password'], values['tokens'], personification === null || personification === void 0 ? void 0 : personification.tag, personification === null || personification === void 0 ? void 0 : personification.pin, {
2216
1913
  PATHNAME: (_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.toUpperCase(),
2217
1914
  ROUTE: ((_d = (_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) === null || _d === void 0 ? void 0 : _d.toUpperCase()) ||
2218
1915
  '',
@@ -2220,18 +1917,23 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
2220
1917
  }, initialQuestion, birthDate)
2221
1918
  .then(state => {
2222
1919
  setAuthModalState(null);
2223
- onClickStart(state || undefined);
1920
+ if (state === null || state === void 0 ? void 0 : state.dialogState) {
1921
+ setHasUserActivatedSpeak(true);
1922
+ }
1923
+ else {
1924
+ onClickStart(state || undefined);
1925
+ }
2224
1926
  })
2225
1927
  .catch(() => {
2226
1928
  setAuthModalState(null);
2227
1929
  setGotErrorInOpening(true);
2228
1930
  });
2229
- }, minimumNumberOfRecoveryTokens: (_1 = memori === null || memori === void 0 ? void 0 : memori.minimumNumberOfRecoveryTokens) !== null && _1 !== void 0 ? _1 : 1 })), isClient && (_jsx(AgeVerificationModal, { visible: showAgeVerification, minAge: minAge, onClose: birthDate => {
1931
+ }, minimumNumberOfRecoveryTokens: (_7 = memori === null || memori === void 0 ? void 0 : memori.minimumNumberOfRecoveryTokens) !== null && _7 !== void 0 ? _7 : 1 })), isClient && (_jsx(AgeVerificationModal, { visible: showAgeVerification, minAge: minAge, onClose: birthDate => {
2230
1932
  var _a, _b, _c, _d;
2231
1933
  if (birthDate) {
2232
1934
  setBirthDate(birthDate);
2233
1935
  setLocalConfig('birthDate', birthDate);
2234
- reopenSession(!sessionId, memoriPassword || memoriPwd || (memori === null || memori === void 0 ? void 0 : memori.secretToken), memoriTokens, instruct ? memori.giverTag : personification === null || personification === void 0 ? void 0 : personification.tag, instruct ? memori.giverPIN : personification === null || personification === void 0 ? void 0 : personification.pin, {
1936
+ reopenSession(!sessionId, memoriPassword || memoriPwd || (memori === null || memori === void 0 ? void 0 : memori.secretToken), memoriTokens, personification === null || personification === void 0 ? void 0 : personification.tag, personification === null || personification === void 0 ? void 0 : personification.pin, {
2235
1937
  PATHNAME: (_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.toUpperCase(),
2236
1938
  ROUTE: ((_d = (_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) === null || _d === void 0 ? void 0 : _d.toUpperCase()) || '',
2237
1939
  ...(initialContextVars || {}),
@@ -2250,11 +1952,18 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
2250
1952
  setShowAgeVerification(false);
2251
1953
  setClickedStart(false);
2252
1954
  }
2253
- } })), showSettingsDrawer && (_jsx(SettingsDrawer, { layout: selectedLayout, open: !!showSettingsDrawer, onClose: () => setShowSettingsDrawer(false), microphoneMode: continuousSpeech ? 'CONTINUOUS' : 'HOLD_TO_TALK', continuousSpeechTimeout: continuousSpeechTimeout, setMicrophoneMode: mode => setContinuousSpeech(mode === 'CONTINUOUS'), setContinuousSpeechTimeout: setContinuousSpeechTimeout, controlsPosition: controlsPosition, setControlsPosition: setControlsPosition, hideEmissions: hideEmissions, setHideEmissions: setHideEmissions, additionalSettings: additionalSettings })), showPositionDrawer && (_jsx(PositionDrawer, { memori: memori, open: !!showPositionDrawer, venue: position, setVenue: setPosition, onClose: position => {
1955
+ } })), showSettingsDrawer && (_jsx(SettingsDrawer, { layout: selectedLayout, open: !!showSettingsDrawer, onClose: () => setShowSettingsDrawer(false), microphoneMode: continuousSpeech ? 'CONTINUOUS' : 'HOLD_TO_TALK', continuousSpeechTimeout: continuousSpeechTimeout, setMicrophoneMode: mode => setContinuousSpeech(mode === 'CONTINUOUS'), setContinuousSpeechTimeout: setContinuousSpeechTimeout, controlsPosition: controlsPosition, setControlsPosition: setControlsPosition, hideEmissions: hideEmissions, setHideEmissions: setHideEmissions, avatarType: avatarType, setAvatarType: setAvatarType, enablePositionControls: enablePositionControls, setEnablePositionControls: setEnablePositionControls, isAvatar3d: !!(integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.avatarURL), additionalSettings: additionalSettings, speakerMuted: speakerMuted })), showChatHistoryDrawer && (_jsx(ChatHistoryDrawer, { open: !!showChatHistoryDrawer, onClose: () => setShowChatHistoryDrawer(false), resumeSession: chatLog => {
1956
+ setChatLogID(chatLog.chatLogID);
1957
+ onClickStart(undefined, false, chatLog);
1958
+ setShowChatHistoryDrawer(false);
1959
+ }, apiClient: client, sessionId: sessionId || '', memori: memori, baseUrl: baseUrl, history: history, apiUrl: client.constants.BACKEND_URL, loginToken: loginToken, language: language, userLang: userLang, isMultilanguageEnabled: isMultilanguageEnabled })), showPositionDrawer && (_jsx(PositionDrawer, { memori: memori, open: !!showPositionDrawer, venue: position, setVenue: setPosition, onClose: position => {
2254
1960
  if (position)
2255
1961
  applyPosition(position);
2256
1962
  setShowPositionDrawer(false);
2257
- } })), showKnownFactsDrawer && sessionId && (_jsx(KnownFacts, { apiURL: apiUrl, memori: memori, sessionID: sessionId, visible: showKnownFactsDrawer, closeDrawer: () => setShowKnownFactsDrawer(false) })), showExpertsDrawer && !!experts && (_jsx(ExpertsDrawer, { apiUrl: apiUrl, baseUrl: baseUrl, tenant: tenant, experts: experts, open: showExpertsDrawer, onClose: () => setShowExpertsDrawer(false) })), showLoginDrawer && (tenant === null || tenant === void 0 ? void 0 : tenant.id) && (_jsx(LoginDrawer, { tenant: tenant, apiUrl: apiUrl, open: !!showLoginDrawer, user: user, loginToken: loginToken, onClose: () => setShowLoginDrawer(false), onLogin: (user, token) => {
1963
+ if (autoStart) {
1964
+ onClickStart();
1965
+ }
1966
+ } })), showKnownFactsDrawer && sessionId && (_jsx(KnownFacts, { apiClient: client, memori: memori, sessionID: sessionId, visible: showKnownFactsDrawer, closeDrawer: () => setShowKnownFactsDrawer(false) })), showExpertsDrawer && !!experts && (_jsx(ExpertsDrawer, { apiUrl: client.constants.BACKEND_URL, baseUrl: baseUrl, tenant: tenant, experts: experts, open: showExpertsDrawer, onClose: () => setShowExpertsDrawer(false) })), showLoginDrawer && (tenant === null || tenant === void 0 ? void 0 : tenant.name) && (_jsx(LoginDrawer, { tenant: tenant, apiClient: client, open: !!showLoginDrawer, user: user, loginToken: loginToken, onClose: () => setShowLoginDrawer(false), onLogin: (user, token) => {
2258
1967
  setUser(user);
2259
1968
  setLoginToken(token);
2260
1969
  userToken = token;
@@ -2270,7 +1979,10 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
2270
1979
  userToken = undefined;
2271
1980
  removeLocalConfig('loginToken');
2272
1981
  });
2273
- } }))] }));
1982
+ } })), error && (_jsx(Alert, { open: !!error, onClose: () => {
1983
+ setError(null);
1984
+ window.open('chrome://settings/content/autoplay', '_blank');
1985
+ }, title: "Error", description: error.message, type: "error" }))] }));
2274
1986
  };
2275
1987
  export default MemoriWidget;
2276
1988
  //# sourceMappingURL=MemoriWidget.js.map