@magmamath/students-features 0.11.0-rc.9 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/dist/commonjs/features/chatbot/components/Chat/Chat.js +59 -221
  2. package/dist/commonjs/features/chatbot/components/Chat/Chat.js.map +1 -1
  3. package/dist/commonjs/features/chatbot/components/ChatControls/ChatControls.js +58 -45
  4. package/dist/commonjs/features/chatbot/components/ChatControls/ChatControls.js.map +1 -1
  5. package/dist/commonjs/features/chatbot/components/ChatInput/ChatInput.js +1 -1
  6. package/dist/commonjs/features/chatbot/components/ChatInput/ChatInput.js.map +1 -1
  7. package/dist/commonjs/features/chatbot/components/ChatInput/FreeText/ChatTextInput.js +2 -2
  8. package/dist/commonjs/features/chatbot/components/ChatInput/FreeText/ChatTextInput.js.map +1 -1
  9. package/dist/commonjs/features/chatbot/components/ChatInput/FreeText/SendMessageButton.js +1 -1
  10. package/dist/commonjs/features/chatbot/components/ChatInput/RequestHintButton.js.map +1 -1
  11. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageButtonsBlock.js.map +1 -1
  12. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageLoader.js +34 -14
  13. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageLoader.js.map +1 -1
  14. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageTextToSpeech.js +8 -48
  15. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageTextToSpeech.js.map +1 -1
  16. package/dist/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.js +13 -14
  17. package/dist/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.js.map +1 -1
  18. package/dist/commonjs/features/chatbot/components/ChatMessage/SentMessage.js +1 -1
  19. package/dist/commonjs/features/chatbot/components/Chatbot.js +12 -22
  20. package/dist/commonjs/features/chatbot/components/Chatbot.js.map +1 -1
  21. package/dist/commonjs/features/chatbot/constants.js +4 -4
  22. package/dist/commonjs/features/chatbot/constants.js.map +1 -1
  23. package/dist/commonjs/features/chatbot/helpers.js +1 -8
  24. package/dist/commonjs/features/chatbot/helpers.js.map +1 -1
  25. package/dist/commonjs/features/chatbot/index.js.map +1 -1
  26. package/dist/commonjs/features/chatbot/model/ChatBotModel.js +10 -46
  27. package/dist/commonjs/features/chatbot/model/ChatBotModel.js.map +1 -1
  28. package/dist/commonjs/features/chatbot/model/ChatBoxTextManager.js +1 -2
  29. package/dist/commonjs/features/chatbot/model/ChatBoxTextManager.js.map +1 -1
  30. package/dist/commonjs/features/chatbot/model/ChatbotApi.js +1 -1
  31. package/dist/commonjs/features/chatbot/model/ChatbotApi.js.map +1 -1
  32. package/dist/commonjs/features/chatbot/model/ChatbotTranslation.js +1 -1
  33. package/dist/commonjs/features/chatbot/model/ChatbotTranslation.js.map +1 -1
  34. package/dist/commonjs/features/chatbot/model/ChatsCacheModel.js +0 -9
  35. package/dist/commonjs/features/chatbot/model/ChatsCacheModel.js.map +1 -1
  36. package/dist/commonjs/features/chatbot/types/model.types.js.map +1 -1
  37. package/dist/commonjs/features/gifCelebrations/helpers.js +1 -0
  38. package/dist/commonjs/features/gifCelebrations/helpers.js.map +1 -1
  39. package/dist/commonjs/features/voice/constants.js +23 -0
  40. package/dist/commonjs/features/voice/constants.js.map +1 -0
  41. package/dist/commonjs/features/voice/helpers.js +208 -0
  42. package/dist/commonjs/features/voice/helpers.js.map +1 -0
  43. package/dist/commonjs/features/voice/index.js +105 -0
  44. package/dist/commonjs/features/voice/index.js.map +1 -0
  45. package/dist/commonjs/features/voice/playing/components/VoiceIcon.js +49 -0
  46. package/dist/commonjs/features/voice/playing/components/VoiceIcon.js.map +1 -0
  47. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdown.js +215 -0
  48. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdown.js.map +1 -0
  49. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdownItem.js +108 -0
  50. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdownItem.js.map +1 -0
  51. package/dist/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.js +50 -0
  52. package/dist/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.js.map +1 -0
  53. package/dist/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.js +34 -0
  54. package/dist/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.js.map +1 -0
  55. package/dist/commonjs/features/voice/playing/model/Player.model.js +98 -0
  56. package/dist/commonjs/features/voice/playing/model/Player.model.js.map +1 -0
  57. package/dist/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.js +66 -0
  58. package/dist/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.js.map +1 -0
  59. package/dist/commonjs/features/voice/playing/model/VoiceFileDownloader.model.js +39 -0
  60. package/dist/commonjs/features/voice/playing/model/VoiceFileDownloader.model.js.map +1 -0
  61. package/dist/commonjs/features/voice/playing/model/VoicePlayer.model.js +223 -0
  62. package/dist/commonjs/features/voice/playing/model/VoicePlayer.model.js.map +1 -0
  63. package/dist/commonjs/features/voice/playing/model/VoiceTranscriptionsCollection.js +41 -0
  64. package/dist/commonjs/features/voice/playing/model/VoiceTranscriptionsCollection.js.map +1 -0
  65. package/dist/commonjs/features/voice/playing/model/VoiceTranscriptionsDropdown.model.js +15 -0
  66. package/dist/commonjs/features/voice/playing/model/VoiceTranscriptionsDropdown.model.js.map +1 -0
  67. package/dist/commonjs/features/voice/playing/model/index.js +20 -0
  68. package/dist/commonjs/features/voice/playing/model/index.js.map +1 -0
  69. package/dist/commonjs/features/voice/recording/components/VoiceRecord.js +74 -0
  70. package/dist/commonjs/features/voice/recording/components/VoiceRecord.js.map +1 -0
  71. package/dist/commonjs/features/voice/recording/components/VoiceRecordButton.js +63 -0
  72. package/dist/commonjs/features/voice/recording/components/VoiceRecordButton.js.map +1 -0
  73. package/dist/commonjs/features/voice/recording/components/VoiceRecordDeleteButton.js +35 -0
  74. package/dist/commonjs/features/voice/recording/components/VoiceRecordDeleteButton.js.map +1 -0
  75. package/dist/commonjs/features/voice/recording/components/VoiceRecordDivider.js +27 -0
  76. package/dist/commonjs/features/voice/recording/components/VoiceRecordDivider.js.map +1 -0
  77. package/dist/commonjs/features/voice/recording/components/VoiceRecordTimer.js +50 -0
  78. package/dist/commonjs/features/voice/recording/components/VoiceRecordTimer.js.map +1 -0
  79. package/dist/commonjs/features/voice/recording/hooks/useVoiceRecorder.js +59 -0
  80. package/dist/commonjs/features/voice/recording/hooks/useVoiceRecorder.js.map +1 -0
  81. package/dist/commonjs/features/voice/recording/hooks/useVoiceRecorderAnimation.js +22 -0
  82. package/dist/commonjs/features/voice/recording/hooks/useVoiceRecorderAnimation.js.map +1 -0
  83. package/dist/commonjs/features/voice/recording/modal/ModalFooterButtons.js +53 -0
  84. package/dist/commonjs/features/voice/recording/modal/ModalFooterButtons.js.map +1 -0
  85. package/dist/commonjs/features/voice/recording/modal/VoiceRecordDeleteModal.js +78 -0
  86. package/dist/commonjs/features/voice/recording/modal/VoiceRecordDeleteModal.js.map +1 -0
  87. package/dist/commonjs/features/voice/recording/modal/VoiceRecordUndoModal.js +51 -0
  88. package/dist/commonjs/features/voice/recording/modal/VoiceRecordUndoModal.js.map +1 -0
  89. package/dist/commonjs/features/voice/recording/model/Recorder.model.js +55 -0
  90. package/dist/commonjs/features/voice/recording/model/Recorder.model.js.map +1 -0
  91. package/dist/commonjs/features/voice/recording/model/Uploader.model.js +44 -0
  92. package/dist/commonjs/features/voice/recording/model/Uploader.model.js.map +1 -0
  93. package/dist/commonjs/features/voice/recording/model/VoiceRecord.model.js +248 -0
  94. package/dist/commonjs/features/voice/recording/model/VoiceRecord.model.js.map +1 -0
  95. package/dist/commonjs/features/voice/recording/model/VoiceRecordCollection.js +30 -0
  96. package/dist/commonjs/features/voice/recording/model/VoiceRecordCollection.js.map +1 -0
  97. package/dist/commonjs/features/voice/types.js +6 -0
  98. package/dist/commonjs/features/voice/types.js.map +1 -0
  99. package/dist/commonjs/index.js +12 -0
  100. package/dist/commonjs/index.js.map +1 -1
  101. package/dist/commonjs/shared/components/PlayButton.js +70 -0
  102. package/dist/commonjs/shared/components/PlayButton.js.map +1 -0
  103. package/dist/commonjs/shared/translation/localization/ca.json +18 -2
  104. package/dist/commonjs/shared/translation/localization/de.json +18 -2
  105. package/dist/commonjs/shared/translation/localization/en.json +18 -2
  106. package/dist/commonjs/shared/translation/localization/gb.json +18 -2
  107. package/dist/commonjs/shared/translation/localization/sct.json +18 -2
  108. package/dist/commonjs/shared/translation/localization/sw.json +18 -2
  109. package/dist/module/features/chatbot/components/Chat/Chat.js +61 -223
  110. package/dist/module/features/chatbot/components/Chat/Chat.js.map +1 -1
  111. package/dist/module/features/chatbot/components/ChatControls/ChatControls.js +59 -47
  112. package/dist/module/features/chatbot/components/ChatControls/ChatControls.js.map +1 -1
  113. package/dist/module/features/chatbot/components/ChatInput/ChatInput.js +1 -1
  114. package/dist/module/features/chatbot/components/ChatInput/ChatInput.js.map +1 -1
  115. package/dist/module/features/chatbot/components/ChatInput/FreeText/ChatTextInput.js +2 -2
  116. package/dist/module/features/chatbot/components/ChatInput/FreeText/ChatTextInput.js.map +1 -1
  117. package/dist/module/features/chatbot/components/ChatInput/FreeText/SendMessageButton.js +1 -1
  118. package/dist/module/features/chatbot/components/ChatInput/RequestHintButton.js.map +1 -1
  119. package/dist/module/features/chatbot/components/ChatMessage/MessageButtonsBlock.js.map +1 -1
  120. package/dist/module/features/chatbot/components/ChatMessage/MessageLoader.js +36 -17
  121. package/dist/module/features/chatbot/components/ChatMessage/MessageLoader.js.map +1 -1
  122. package/dist/module/features/chatbot/components/ChatMessage/MessageTextToSpeech.js +9 -49
  123. package/dist/module/features/chatbot/components/ChatMessage/MessageTextToSpeech.js.map +1 -1
  124. package/dist/module/features/chatbot/components/ChatMessage/ReceivedMessage.js +12 -13
  125. package/dist/module/features/chatbot/components/ChatMessage/ReceivedMessage.js.map +1 -1
  126. package/dist/module/features/chatbot/components/ChatMessage/SentMessage.js +1 -1
  127. package/dist/module/features/chatbot/components/Chatbot.js +11 -20
  128. package/dist/module/features/chatbot/components/Chatbot.js.map +1 -1
  129. package/dist/module/features/chatbot/constants.js +5 -5
  130. package/dist/module/features/chatbot/constants.js.map +1 -1
  131. package/dist/module/features/chatbot/helpers.js +1 -8
  132. package/dist/module/features/chatbot/helpers.js.map +1 -1
  133. package/dist/module/features/chatbot/index.js.map +1 -1
  134. package/dist/module/features/chatbot/model/ChatBotModel.js +10 -46
  135. package/dist/module/features/chatbot/model/ChatBotModel.js.map +1 -1
  136. package/dist/module/features/chatbot/model/ChatBoxTextManager.js +1 -2
  137. package/dist/module/features/chatbot/model/ChatBoxTextManager.js.map +1 -1
  138. package/dist/module/features/chatbot/model/ChatbotApi.js +1 -1
  139. package/dist/module/features/chatbot/model/ChatbotApi.js.map +1 -1
  140. package/dist/module/features/chatbot/model/ChatbotTranslation.js +1 -1
  141. package/dist/module/features/chatbot/model/ChatbotTranslation.js.map +1 -1
  142. package/dist/module/features/chatbot/model/ChatsCacheModel.js +0 -9
  143. package/dist/module/features/chatbot/model/ChatsCacheModel.js.map +1 -1
  144. package/dist/module/features/chatbot/types/model.types.js.map +1 -1
  145. package/dist/module/features/gifCelebrations/helpers.js +1 -0
  146. package/dist/module/features/gifCelebrations/helpers.js.map +1 -1
  147. package/dist/module/features/voice/constants.js +19 -0
  148. package/dist/module/features/voice/constants.js.map +1 -0
  149. package/dist/module/features/voice/helpers.js +191 -0
  150. package/dist/module/features/voice/helpers.js.map +1 -0
  151. package/dist/module/features/voice/index.js +12 -0
  152. package/dist/module/features/voice/index.js.map +1 -0
  153. package/dist/module/features/voice/playing/components/VoiceIcon.js +41 -0
  154. package/dist/module/features/voice/playing/components/VoiceIcon.js.map +1 -0
  155. package/dist/module/features/voice/playing/components/VoiceTranscriptionsDropdown.js +208 -0
  156. package/dist/module/features/voice/playing/components/VoiceTranscriptionsDropdown.js.map +1 -0
  157. package/dist/module/features/voice/playing/components/VoiceTranscriptionsDropdownItem.js +102 -0
  158. package/dist/module/features/voice/playing/components/VoiceTranscriptionsDropdownItem.js.map +1 -0
  159. package/dist/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.js +45 -0
  160. package/dist/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.js.map +1 -0
  161. package/dist/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.js +29 -0
  162. package/dist/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.js.map +1 -0
  163. package/dist/module/features/voice/playing/model/Player.model.js +93 -0
  164. package/dist/module/features/voice/playing/model/Player.model.js.map +1 -0
  165. package/dist/module/features/voice/playing/model/TranscriptionsDownloaderModel.js +61 -0
  166. package/dist/module/features/voice/playing/model/TranscriptionsDownloaderModel.js.map +1 -0
  167. package/dist/module/features/voice/playing/model/VoiceFileDownloader.model.js +34 -0
  168. package/dist/module/features/voice/playing/model/VoiceFileDownloader.model.js.map +1 -0
  169. package/dist/module/features/voice/playing/model/VoicePlayer.model.js +218 -0
  170. package/dist/module/features/voice/playing/model/VoicePlayer.model.js.map +1 -0
  171. package/dist/module/features/voice/playing/model/VoiceTranscriptionsCollection.js +36 -0
  172. package/dist/module/features/voice/playing/model/VoiceTranscriptionsCollection.js.map +1 -0
  173. package/dist/module/features/voice/playing/model/VoiceTranscriptionsDropdown.model.js +10 -0
  174. package/dist/module/features/voice/playing/model/VoiceTranscriptionsDropdown.model.js.map +1 -0
  175. package/dist/module/features/voice/playing/model/index.js +5 -0
  176. package/dist/module/features/voice/playing/model/index.js.map +1 -0
  177. package/dist/module/features/voice/recording/components/VoiceRecord.js +67 -0
  178. package/dist/module/features/voice/recording/components/VoiceRecord.js.map +1 -0
  179. package/dist/module/features/voice/recording/components/VoiceRecordButton.js +57 -0
  180. package/dist/module/features/voice/recording/components/VoiceRecordButton.js.map +1 -0
  181. package/dist/module/features/voice/recording/components/VoiceRecordDeleteButton.js +29 -0
  182. package/dist/module/features/voice/recording/components/VoiceRecordDeleteButton.js.map +1 -0
  183. package/dist/module/features/voice/recording/components/VoiceRecordDivider.js +21 -0
  184. package/dist/module/features/voice/recording/components/VoiceRecordDivider.js.map +1 -0
  185. package/dist/module/features/voice/recording/components/VoiceRecordTimer.js +44 -0
  186. package/dist/module/features/voice/recording/components/VoiceRecordTimer.js.map +1 -0
  187. package/dist/module/features/voice/recording/hooks/useVoiceRecorder.js +54 -0
  188. package/dist/module/features/voice/recording/hooks/useVoiceRecorder.js.map +1 -0
  189. package/dist/module/features/voice/recording/hooks/useVoiceRecorderAnimation.js +17 -0
  190. package/dist/module/features/voice/recording/hooks/useVoiceRecorderAnimation.js.map +1 -0
  191. package/dist/module/features/voice/recording/modal/ModalFooterButtons.js +47 -0
  192. package/dist/module/features/voice/recording/modal/ModalFooterButtons.js.map +1 -0
  193. package/dist/module/features/voice/recording/modal/VoiceRecordDeleteModal.js +71 -0
  194. package/dist/module/features/voice/recording/modal/VoiceRecordDeleteModal.js.map +1 -0
  195. package/dist/module/features/voice/recording/modal/VoiceRecordUndoModal.js +45 -0
  196. package/dist/module/features/voice/recording/modal/VoiceRecordUndoModal.js.map +1 -0
  197. package/dist/module/features/voice/recording/model/Recorder.model.js +50 -0
  198. package/dist/module/features/voice/recording/model/Recorder.model.js.map +1 -0
  199. package/dist/module/features/voice/recording/model/Uploader.model.js +39 -0
  200. package/dist/module/features/voice/recording/model/Uploader.model.js.map +1 -0
  201. package/dist/module/features/voice/recording/model/VoiceRecord.model.js +244 -0
  202. package/dist/module/features/voice/recording/model/VoiceRecord.model.js.map +1 -0
  203. package/dist/module/features/voice/recording/model/VoiceRecordCollection.js +25 -0
  204. package/dist/module/features/voice/recording/model/VoiceRecordCollection.js.map +1 -0
  205. package/dist/module/features/voice/types.js +4 -0
  206. package/dist/module/features/voice/types.js.map +1 -0
  207. package/dist/module/index.js +1 -0
  208. package/dist/module/index.js.map +1 -1
  209. package/dist/module/shared/components/PlayButton.js +64 -0
  210. package/dist/module/shared/components/PlayButton.js.map +1 -0
  211. package/dist/module/shared/translation/localization/ca.json +18 -2
  212. package/dist/module/shared/translation/localization/de.json +18 -2
  213. package/dist/module/shared/translation/localization/en.json +18 -2
  214. package/dist/module/shared/translation/localization/gb.json +18 -2
  215. package/dist/module/shared/translation/localization/sct.json +18 -2
  216. package/dist/module/shared/translation/localization/sw.json +18 -2
  217. package/dist/typescript/commonjs/features/chatbot/components/Chat/Chat.d.ts +1 -2
  218. package/dist/typescript/commonjs/features/chatbot/components/Chat/Chat.d.ts.map +1 -1
  219. package/dist/typescript/commonjs/features/chatbot/components/ChatControls/ChatControls.d.ts +3 -3
  220. package/dist/typescript/commonjs/features/chatbot/components/ChatControls/ChatControls.d.ts.map +1 -1
  221. package/dist/typescript/commonjs/features/chatbot/components/ChatInput/ChatInput.d.ts.map +1 -1
  222. package/dist/typescript/commonjs/features/chatbot/components/ChatInput/RequestHintButton.d.ts.map +1 -1
  223. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ChatMessage.d.ts +1 -1
  224. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ChatMessage.d.ts.map +1 -1
  225. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageButtonsBlock.d.ts.map +1 -1
  226. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageLoader.d.ts +3 -2
  227. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageLoader.d.ts.map +1 -1
  228. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageTextToSpeech.d.ts +2 -2
  229. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageTextToSpeech.d.ts.map +1 -1
  230. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts.map +1 -1
  231. package/dist/typescript/commonjs/features/chatbot/components/Chatbot.d.ts +1 -2
  232. package/dist/typescript/commonjs/features/chatbot/components/Chatbot.d.ts.map +1 -1
  233. package/dist/typescript/commonjs/features/chatbot/constants.d.ts +5 -5
  234. package/dist/typescript/commonjs/features/chatbot/constants.d.ts.map +1 -1
  235. package/dist/typescript/commonjs/features/chatbot/helpers.d.ts.map +1 -1
  236. package/dist/typescript/commonjs/features/chatbot/index.d.ts +2 -2
  237. package/dist/typescript/commonjs/features/chatbot/index.d.ts.map +1 -1
  238. package/dist/typescript/commonjs/features/chatbot/model/ChatBotModel.d.ts +1 -2
  239. package/dist/typescript/commonjs/features/chatbot/model/ChatBotModel.d.ts.map +1 -1
  240. package/dist/typescript/commonjs/features/chatbot/model/ChatBoxTextManager.d.ts.map +1 -1
  241. package/dist/typescript/commonjs/features/chatbot/model/ChatsCacheModel.d.ts +0 -1
  242. package/dist/typescript/commonjs/features/chatbot/model/ChatsCacheModel.d.ts.map +1 -1
  243. package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts +17 -19
  244. package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts.map +1 -1
  245. package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts +13 -8
  246. package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts.map +1 -1
  247. package/dist/typescript/commonjs/features/chatbot/types/units.types.d.ts +0 -1
  248. package/dist/typescript/commonjs/features/chatbot/types/units.types.d.ts.map +1 -1
  249. package/dist/typescript/commonjs/features/gifCelebrations/helpers.d.ts.map +1 -1
  250. package/dist/typescript/commonjs/features/voice/constants.d.ts +16 -0
  251. package/dist/typescript/commonjs/features/voice/constants.d.ts.map +1 -0
  252. package/dist/typescript/commonjs/features/voice/helpers.d.ts +46 -0
  253. package/dist/typescript/commonjs/features/voice/helpers.d.ts.map +1 -0
  254. package/dist/typescript/commonjs/features/voice/index.d.ts +10 -0
  255. package/dist/typescript/commonjs/features/voice/index.d.ts.map +1 -0
  256. package/dist/typescript/commonjs/features/voice/playing/components/VoiceIcon.d.ts +8 -0
  257. package/dist/typescript/commonjs/features/voice/playing/components/VoiceIcon.d.ts.map +1 -0
  258. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdown.d.ts +16 -0
  259. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdown.d.ts.map +1 -0
  260. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdownItem.d.ts +12 -0
  261. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdownItem.d.ts.map +1 -0
  262. package/dist/typescript/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.d.ts +16 -0
  263. package/dist/typescript/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.d.ts.map +1 -0
  264. package/dist/typescript/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.d.ts +11 -0
  265. package/dist/typescript/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.d.ts.map +1 -0
  266. package/dist/typescript/commonjs/features/voice/playing/model/Player.model.d.ts +23 -0
  267. package/dist/typescript/commonjs/features/voice/playing/model/Player.model.d.ts.map +1 -0
  268. package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts +15 -0
  269. package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts.map +1 -0
  270. package/dist/typescript/commonjs/features/voice/playing/model/VoiceFileDownloader.model.d.ts +17 -0
  271. package/dist/typescript/commonjs/features/voice/playing/model/VoiceFileDownloader.model.d.ts.map +1 -0
  272. package/dist/typescript/commonjs/features/voice/playing/model/VoicePlayer.model.d.ts +41 -0
  273. package/dist/typescript/commonjs/features/voice/playing/model/VoicePlayer.model.d.ts.map +1 -0
  274. package/dist/typescript/commonjs/features/voice/playing/model/VoiceTranscriptionsCollection.d.ts +13 -0
  275. package/dist/typescript/commonjs/features/voice/playing/model/VoiceTranscriptionsCollection.d.ts.map +1 -0
  276. package/dist/typescript/commonjs/features/voice/playing/model/VoiceTranscriptionsDropdown.model.d.ts +7 -0
  277. package/dist/typescript/commonjs/features/voice/playing/model/VoiceTranscriptionsDropdown.model.d.ts.map +1 -0
  278. package/dist/typescript/commonjs/features/voice/playing/model/index.d.ts +3 -0
  279. package/dist/typescript/commonjs/features/voice/playing/model/index.d.ts.map +1 -0
  280. package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecord.d.ts +10 -0
  281. package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecord.d.ts.map +1 -0
  282. package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecordButton.d.ts +10 -0
  283. package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecordButton.d.ts.map +1 -0
  284. package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecordDeleteButton.d.ts +8 -0
  285. package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecordDeleteButton.d.ts.map +1 -0
  286. package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecordDivider.d.ts +3 -0
  287. package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecordDivider.d.ts.map +1 -0
  288. package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecordTimer.d.ts +11 -0
  289. package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecordTimer.d.ts.map +1 -0
  290. package/dist/typescript/commonjs/features/voice/recording/hooks/useVoiceRecorder.d.ts +5 -0
  291. package/dist/typescript/commonjs/features/voice/recording/hooks/useVoiceRecorder.d.ts.map +1 -0
  292. package/dist/typescript/commonjs/features/voice/recording/hooks/useVoiceRecorderAnimation.d.ts +6 -0
  293. package/dist/typescript/commonjs/features/voice/recording/hooks/useVoiceRecorderAnimation.d.ts.map +1 -0
  294. package/dist/typescript/commonjs/features/voice/recording/modal/ModalFooterButtons.d.ts +12 -0
  295. package/dist/typescript/commonjs/features/voice/recording/modal/ModalFooterButtons.d.ts.map +1 -0
  296. package/dist/typescript/commonjs/features/voice/recording/modal/VoiceRecordDeleteModal.d.ts +11 -0
  297. package/dist/typescript/commonjs/features/voice/recording/modal/VoiceRecordDeleteModal.d.ts.map +1 -0
  298. package/dist/typescript/commonjs/features/voice/recording/modal/VoiceRecordUndoModal.d.ts +11 -0
  299. package/dist/typescript/commonjs/features/voice/recording/modal/VoiceRecordUndoModal.d.ts.map +1 -0
  300. package/dist/typescript/commonjs/features/voice/recording/model/Recorder.model.d.ts +19 -0
  301. package/dist/typescript/commonjs/features/voice/recording/model/Recorder.model.d.ts.map +1 -0
  302. package/dist/typescript/commonjs/features/voice/recording/model/Uploader.model.d.ts +18 -0
  303. package/dist/typescript/commonjs/features/voice/recording/model/Uploader.model.d.ts.map +1 -0
  304. package/dist/typescript/commonjs/features/voice/recording/model/VoiceRecord.model.d.ts +50 -0
  305. package/dist/typescript/commonjs/features/voice/recording/model/VoiceRecord.model.d.ts.map +1 -0
  306. package/dist/typescript/commonjs/features/voice/recording/model/VoiceRecordCollection.d.ts +10 -0
  307. package/dist/typescript/commonjs/features/voice/recording/model/VoiceRecordCollection.d.ts.map +1 -0
  308. package/dist/typescript/commonjs/features/voice/types.d.ts +72 -0
  309. package/dist/typescript/commonjs/features/voice/types.d.ts.map +1 -0
  310. package/dist/typescript/commonjs/index.d.ts +1 -0
  311. package/dist/typescript/commonjs/index.d.ts.map +1 -1
  312. package/dist/typescript/commonjs/shared/components/PlayButton.d.ts +18 -0
  313. package/dist/typescript/commonjs/shared/components/PlayButton.d.ts.map +1 -0
  314. package/dist/typescript/commonjs/shared/translation/constants.d.ts +102 -6
  315. package/dist/typescript/commonjs/shared/translation/constants.d.ts.map +1 -1
  316. package/dist/typescript/commonjs/shared/translation/model.d.ts +34 -2
  317. package/dist/typescript/commonjs/shared/translation/model.d.ts.map +1 -1
  318. package/dist/typescript/commonjs/types/common.types.d.ts +3 -0
  319. package/dist/typescript/commonjs/types/common.types.d.ts.map +1 -1
  320. package/dist/typescript/module/features/chatbot/components/Chat/Chat.d.ts +1 -2
  321. package/dist/typescript/module/features/chatbot/components/Chat/Chat.d.ts.map +1 -1
  322. package/dist/typescript/module/features/chatbot/components/ChatControls/ChatControls.d.ts +3 -3
  323. package/dist/typescript/module/features/chatbot/components/ChatControls/ChatControls.d.ts.map +1 -1
  324. package/dist/typescript/module/features/chatbot/components/ChatInput/ChatInput.d.ts.map +1 -1
  325. package/dist/typescript/module/features/chatbot/components/ChatInput/RequestHintButton.d.ts.map +1 -1
  326. package/dist/typescript/module/features/chatbot/components/ChatMessage/ChatMessage.d.ts +1 -1
  327. package/dist/typescript/module/features/chatbot/components/ChatMessage/ChatMessage.d.ts.map +1 -1
  328. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageButtonsBlock.d.ts.map +1 -1
  329. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageLoader.d.ts +3 -2
  330. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageLoader.d.ts.map +1 -1
  331. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageTextToSpeech.d.ts +2 -2
  332. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageTextToSpeech.d.ts.map +1 -1
  333. package/dist/typescript/module/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts.map +1 -1
  334. package/dist/typescript/module/features/chatbot/components/Chatbot.d.ts +1 -2
  335. package/dist/typescript/module/features/chatbot/components/Chatbot.d.ts.map +1 -1
  336. package/dist/typescript/module/features/chatbot/constants.d.ts +5 -5
  337. package/dist/typescript/module/features/chatbot/constants.d.ts.map +1 -1
  338. package/dist/typescript/module/features/chatbot/helpers.d.ts.map +1 -1
  339. package/dist/typescript/module/features/chatbot/index.d.ts +2 -2
  340. package/dist/typescript/module/features/chatbot/index.d.ts.map +1 -1
  341. package/dist/typescript/module/features/chatbot/model/ChatBotModel.d.ts +1 -2
  342. package/dist/typescript/module/features/chatbot/model/ChatBotModel.d.ts.map +1 -1
  343. package/dist/typescript/module/features/chatbot/model/ChatBoxTextManager.d.ts.map +1 -1
  344. package/dist/typescript/module/features/chatbot/model/ChatsCacheModel.d.ts +0 -1
  345. package/dist/typescript/module/features/chatbot/model/ChatsCacheModel.d.ts.map +1 -1
  346. package/dist/typescript/module/features/chatbot/types/api.types.d.ts +17 -19
  347. package/dist/typescript/module/features/chatbot/types/api.types.d.ts.map +1 -1
  348. package/dist/typescript/module/features/chatbot/types/model.types.d.ts +13 -8
  349. package/dist/typescript/module/features/chatbot/types/model.types.d.ts.map +1 -1
  350. package/dist/typescript/module/features/chatbot/types/units.types.d.ts +0 -1
  351. package/dist/typescript/module/features/chatbot/types/units.types.d.ts.map +1 -1
  352. package/dist/typescript/module/features/gifCelebrations/helpers.d.ts.map +1 -1
  353. package/dist/typescript/module/features/voice/constants.d.ts +16 -0
  354. package/dist/typescript/module/features/voice/constants.d.ts.map +1 -0
  355. package/dist/typescript/module/features/voice/helpers.d.ts +46 -0
  356. package/dist/typescript/module/features/voice/helpers.d.ts.map +1 -0
  357. package/dist/typescript/module/features/voice/index.d.ts +10 -0
  358. package/dist/typescript/module/features/voice/index.d.ts.map +1 -0
  359. package/dist/typescript/module/features/voice/playing/components/VoiceIcon.d.ts +8 -0
  360. package/dist/typescript/module/features/voice/playing/components/VoiceIcon.d.ts.map +1 -0
  361. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptionsDropdown.d.ts +16 -0
  362. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptionsDropdown.d.ts.map +1 -0
  363. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptionsDropdownItem.d.ts +12 -0
  364. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptionsDropdownItem.d.ts.map +1 -0
  365. package/dist/typescript/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.d.ts +16 -0
  366. package/dist/typescript/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.d.ts.map +1 -0
  367. package/dist/typescript/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.d.ts +11 -0
  368. package/dist/typescript/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.d.ts.map +1 -0
  369. package/dist/typescript/module/features/voice/playing/model/Player.model.d.ts +23 -0
  370. package/dist/typescript/module/features/voice/playing/model/Player.model.d.ts.map +1 -0
  371. package/dist/typescript/module/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts +15 -0
  372. package/dist/typescript/module/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts.map +1 -0
  373. package/dist/typescript/module/features/voice/playing/model/VoiceFileDownloader.model.d.ts +17 -0
  374. package/dist/typescript/module/features/voice/playing/model/VoiceFileDownloader.model.d.ts.map +1 -0
  375. package/dist/typescript/module/features/voice/playing/model/VoicePlayer.model.d.ts +41 -0
  376. package/dist/typescript/module/features/voice/playing/model/VoicePlayer.model.d.ts.map +1 -0
  377. package/dist/typescript/module/features/voice/playing/model/VoiceTranscriptionsCollection.d.ts +13 -0
  378. package/dist/typescript/module/features/voice/playing/model/VoiceTranscriptionsCollection.d.ts.map +1 -0
  379. package/dist/typescript/module/features/voice/playing/model/VoiceTranscriptionsDropdown.model.d.ts +7 -0
  380. package/dist/typescript/module/features/voice/playing/model/VoiceTranscriptionsDropdown.model.d.ts.map +1 -0
  381. package/dist/typescript/module/features/voice/playing/model/index.d.ts +3 -0
  382. package/dist/typescript/module/features/voice/playing/model/index.d.ts.map +1 -0
  383. package/dist/typescript/module/features/voice/recording/components/VoiceRecord.d.ts +10 -0
  384. package/dist/typescript/module/features/voice/recording/components/VoiceRecord.d.ts.map +1 -0
  385. package/dist/typescript/module/features/voice/recording/components/VoiceRecordButton.d.ts +10 -0
  386. package/dist/typescript/module/features/voice/recording/components/VoiceRecordButton.d.ts.map +1 -0
  387. package/dist/typescript/module/features/voice/recording/components/VoiceRecordDeleteButton.d.ts +8 -0
  388. package/dist/typescript/module/features/voice/recording/components/VoiceRecordDeleteButton.d.ts.map +1 -0
  389. package/dist/typescript/module/features/voice/recording/components/VoiceRecordDivider.d.ts +3 -0
  390. package/dist/typescript/module/features/voice/recording/components/VoiceRecordDivider.d.ts.map +1 -0
  391. package/dist/typescript/module/features/voice/recording/components/VoiceRecordTimer.d.ts +11 -0
  392. package/dist/typescript/module/features/voice/recording/components/VoiceRecordTimer.d.ts.map +1 -0
  393. package/dist/typescript/module/features/voice/recording/hooks/useVoiceRecorder.d.ts +5 -0
  394. package/dist/typescript/module/features/voice/recording/hooks/useVoiceRecorder.d.ts.map +1 -0
  395. package/dist/typescript/module/features/voice/recording/hooks/useVoiceRecorderAnimation.d.ts +6 -0
  396. package/dist/typescript/module/features/voice/recording/hooks/useVoiceRecorderAnimation.d.ts.map +1 -0
  397. package/dist/typescript/module/features/voice/recording/modal/ModalFooterButtons.d.ts +12 -0
  398. package/dist/typescript/module/features/voice/recording/modal/ModalFooterButtons.d.ts.map +1 -0
  399. package/dist/typescript/module/features/voice/recording/modal/VoiceRecordDeleteModal.d.ts +11 -0
  400. package/dist/typescript/module/features/voice/recording/modal/VoiceRecordDeleteModal.d.ts.map +1 -0
  401. package/dist/typescript/module/features/voice/recording/modal/VoiceRecordUndoModal.d.ts +11 -0
  402. package/dist/typescript/module/features/voice/recording/modal/VoiceRecordUndoModal.d.ts.map +1 -0
  403. package/dist/typescript/module/features/voice/recording/model/Recorder.model.d.ts +19 -0
  404. package/dist/typescript/module/features/voice/recording/model/Recorder.model.d.ts.map +1 -0
  405. package/dist/typescript/module/features/voice/recording/model/Uploader.model.d.ts +18 -0
  406. package/dist/typescript/module/features/voice/recording/model/Uploader.model.d.ts.map +1 -0
  407. package/dist/typescript/module/features/voice/recording/model/VoiceRecord.model.d.ts +50 -0
  408. package/dist/typescript/module/features/voice/recording/model/VoiceRecord.model.d.ts.map +1 -0
  409. package/dist/typescript/module/features/voice/recording/model/VoiceRecordCollection.d.ts +10 -0
  410. package/dist/typescript/module/features/voice/recording/model/VoiceRecordCollection.d.ts.map +1 -0
  411. package/dist/typescript/module/features/voice/types.d.ts +72 -0
  412. package/dist/typescript/module/features/voice/types.d.ts.map +1 -0
  413. package/dist/typescript/module/index.d.ts +1 -0
  414. package/dist/typescript/module/index.d.ts.map +1 -1
  415. package/dist/typescript/module/shared/components/PlayButton.d.ts +18 -0
  416. package/dist/typescript/module/shared/components/PlayButton.d.ts.map +1 -0
  417. package/dist/typescript/module/shared/translation/constants.d.ts +102 -6
  418. package/dist/typescript/module/shared/translation/constants.d.ts.map +1 -1
  419. package/dist/typescript/module/shared/translation/model.d.ts +34 -2
  420. package/dist/typescript/module/shared/translation/model.d.ts.map +1 -1
  421. package/dist/typescript/module/types/common.types.d.ts +3 -0
  422. package/dist/typescript/module/types/common.types.d.ts.map +1 -1
  423. package/package.json +11 -6
  424. package/src/features/chatbot/components/Chat/Chat.tsx +70 -288
  425. package/src/features/chatbot/components/ChatControls/ChatControls.tsx +66 -46
  426. package/src/features/chatbot/components/ChatInput/ChatInput.tsx +1 -2
  427. package/src/features/chatbot/components/ChatInput/FreeText/ChatTextInput.tsx +2 -2
  428. package/src/features/chatbot/components/ChatInput/FreeText/SendMessageButton.tsx +1 -1
  429. package/src/features/chatbot/components/ChatInput/RequestHintButton.tsx +0 -1
  430. package/src/features/chatbot/components/ChatMessage/ChatMessage.tsx +1 -1
  431. package/src/features/chatbot/components/ChatMessage/MessageButtonsBlock.tsx +1 -1
  432. package/src/features/chatbot/components/ChatMessage/MessageLoader.tsx +33 -17
  433. package/src/features/chatbot/components/ChatMessage/MessageTextToSpeech.tsx +9 -51
  434. package/src/features/chatbot/components/ChatMessage/ReceivedMessage.tsx +12 -13
  435. package/src/features/chatbot/components/ChatMessage/SentMessage.tsx +1 -1
  436. package/src/features/chatbot/components/Chatbot.tsx +11 -21
  437. package/src/features/chatbot/constants.ts +4 -4
  438. package/src/features/chatbot/helpers.ts +0 -3
  439. package/src/features/chatbot/index.ts +2 -16
  440. package/src/features/chatbot/model/ChatBotModel.ts +8 -51
  441. package/src/features/chatbot/model/ChatBoxTextManager.ts +0 -1
  442. package/src/features/chatbot/model/ChatbotApi.ts +1 -1
  443. package/src/features/chatbot/model/ChatbotTranslation.ts +1 -1
  444. package/src/features/chatbot/model/ChatsCacheModel.ts +0 -7
  445. package/src/features/chatbot/types/api.types.ts +17 -17
  446. package/src/features/chatbot/types/model.types.ts +15 -8
  447. package/src/features/chatbot/types/units.types.ts +0 -1
  448. package/src/features/gifCelebrations/helpers.ts +1 -0
  449. package/src/features/voice/constants.ts +15 -0
  450. package/src/features/voice/helpers.ts +251 -0
  451. package/src/features/voice/index.ts +11 -0
  452. package/src/features/voice/playing/components/VoiceIcon.tsx +38 -0
  453. package/src/features/voice/playing/components/VoiceTranscriptionsDropdown.tsx +251 -0
  454. package/src/features/voice/playing/components/VoiceTranscriptionsDropdownItem.tsx +127 -0
  455. package/src/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.ts +54 -0
  456. package/src/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.ts +40 -0
  457. package/src/features/voice/playing/model/Player.model.ts +104 -0
  458. package/src/features/voice/playing/model/TranscriptionsDownloaderModel.ts +80 -0
  459. package/src/features/voice/playing/model/VoiceFileDownloader.model.ts +42 -0
  460. package/src/features/voice/playing/model/VoicePlayer.model.ts +255 -0
  461. package/src/features/voice/playing/model/VoiceTranscriptionsCollection.ts +40 -0
  462. package/src/features/voice/playing/model/VoiceTranscriptionsDropdown.model.ts +11 -0
  463. package/src/features/voice/playing/model/index.ts +2 -0
  464. package/src/features/voice/recording/components/VoiceRecord.tsx +65 -0
  465. package/src/features/voice/recording/components/VoiceRecordButton.tsx +64 -0
  466. package/src/features/voice/recording/components/VoiceRecordDeleteButton.tsx +25 -0
  467. package/src/features/voice/recording/components/VoiceRecordDivider.tsx +17 -0
  468. package/src/features/voice/recording/components/VoiceRecordTimer.tsx +49 -0
  469. package/src/features/voice/recording/hooks/useVoiceRecorder.ts +62 -0
  470. package/src/features/voice/recording/hooks/useVoiceRecorderAnimation.ts +19 -0
  471. package/src/features/voice/recording/modal/ModalFooterButtons.tsx +54 -0
  472. package/src/features/voice/recording/modal/VoiceRecordDeleteModal.tsx +82 -0
  473. package/src/features/voice/recording/modal/VoiceRecordUndoModal.tsx +50 -0
  474. package/src/features/voice/recording/model/Recorder.model.ts +63 -0
  475. package/src/features/voice/recording/model/Uploader.model.ts +48 -0
  476. package/src/features/voice/recording/model/VoiceRecord.model.ts +302 -0
  477. package/src/features/voice/recording/model/VoiceRecordCollection.ts +26 -0
  478. package/src/features/voice/types.ts +84 -0
  479. package/src/index.ts +1 -0
  480. package/src/shared/components/PlayButton.tsx +84 -0
  481. package/src/shared/translation/localization/ca.json +18 -2
  482. package/src/shared/translation/localization/de.json +18 -2
  483. package/src/shared/translation/localization/en.json +18 -2
  484. package/src/shared/translation/localization/gb.json +18 -2
  485. package/src/shared/translation/localization/sct.json +18 -2
  486. package/src/shared/translation/localization/sw.json +18 -2
  487. package/src/types/common.types.ts +1 -0
  488. package/dist/commonjs/features/chatbot/TTS_HIGHLIGHTING.md +0 -120
  489. package/dist/commonjs/features/chatbot/components/Chat/CloseButton.js +0 -39
  490. package/dist/commonjs/features/chatbot/components/Chat/CloseButton.js.map +0 -1
  491. package/dist/commonjs/features/chatbot/components/Chat/GradientFade.js +0 -44
  492. package/dist/commonjs/features/chatbot/components/Chat/GradientFade.js.map +0 -1
  493. package/dist/commonjs/features/chatbot/components/ChatMessage/AnimatedMessage.js +0 -41
  494. package/dist/commonjs/features/chatbot/components/ChatMessage/AnimatedMessage.js.map +0 -1
  495. package/dist/module/features/chatbot/TTS_HIGHLIGHTING.md +0 -120
  496. package/dist/module/features/chatbot/components/Chat/CloseButton.js +0 -33
  497. package/dist/module/features/chatbot/components/Chat/CloseButton.js.map +0 -1
  498. package/dist/module/features/chatbot/components/Chat/GradientFade.js +0 -39
  499. package/dist/module/features/chatbot/components/Chat/GradientFade.js.map +0 -1
  500. package/dist/module/features/chatbot/components/ChatMessage/AnimatedMessage.js +0 -34
  501. package/dist/module/features/chatbot/components/ChatMessage/AnimatedMessage.js.map +0 -1
  502. package/dist/typescript/commonjs/features/chatbot/components/Chat/CloseButton.d.ts +0 -7
  503. package/dist/typescript/commonjs/features/chatbot/components/Chat/CloseButton.d.ts.map +0 -1
  504. package/dist/typescript/commonjs/features/chatbot/components/Chat/GradientFade.d.ts +0 -10
  505. package/dist/typescript/commonjs/features/chatbot/components/Chat/GradientFade.d.ts.map +0 -1
  506. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/AnimatedMessage.d.ts +0 -7
  507. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/AnimatedMessage.d.ts.map +0 -1
  508. package/dist/typescript/module/features/chatbot/components/Chat/CloseButton.d.ts +0 -7
  509. package/dist/typescript/module/features/chatbot/components/Chat/CloseButton.d.ts.map +0 -1
  510. package/dist/typescript/module/features/chatbot/components/Chat/GradientFade.d.ts +0 -10
  511. package/dist/typescript/module/features/chatbot/components/Chat/GradientFade.d.ts.map +0 -1
  512. package/dist/typescript/module/features/chatbot/components/ChatMessage/AnimatedMessage.d.ts +0 -7
  513. package/dist/typescript/module/features/chatbot/components/ChatMessage/AnimatedMessage.d.ts.map +0 -1
  514. package/src/features/chatbot/TTS_HIGHLIGHTING.md +0 -120
  515. package/src/features/chatbot/components/Chat/CloseButton.tsx +0 -31
  516. package/src/features/chatbot/components/Chat/GradientFade.tsx +0 -43
  517. package/src/features/chatbot/components/ChatMessage/AnimatedMessage.tsx +0 -30
@@ -20,8 +20,7 @@
20
20
  "errorMessage": "Något gick snett! Försök igen",
21
21
  "howCanIHelp": "Hej! Hur kan jag hjälpa dig?",
22
22
  "showError": "Visa fel",
23
- "inputPlaceholder": "Skriv...",
24
- "wantHelp": "Vill du ha hjälp?"
23
+ "inputPlaceholder": "Skriv..."
25
24
  },
26
25
  "gifCelebrations": {
27
26
  "greatStart": "Bra start!",
@@ -40,5 +39,22 @@
40
39
  "volume": "Volym",
41
40
  "weight": "Vikt",
42
41
  "time": "Tid"
42
+ },
43
+ "voice": {
44
+ "deleteRecording": "Radera inspelningen?",
45
+ "youWontBeAbleToRecover": "Du kommer inte att kunna återställa filen när den väl är borta.",
46
+ "recordingDeleted": "Inspelningen raderad.",
47
+ "delete": "Radera",
48
+ "cancel": "Avbryt",
49
+ "noMicrophoneAccess": "Ingen mikrofonåtkomst.",
50
+ "noMicrophoneAccessBySystem": "Mikrofonåtkomst nekad av systeminställningar.",
51
+ "noMicrophoneFound": "Ingen mikrofon hittades.",
52
+ "uploadFailed": "Uppladdning misslyckades. Försök igen.",
53
+ "redoRecording": "Spela in igen?",
54
+ "redo": "Gör om",
55
+ "thisWillRemoveRecording": "Detta tar bort inspelningen.",
56
+ "transcriptions": "Transkriptioner",
57
+ "attempt": "Försök {{number}}",
58
+ "transcriptNotAvailable": "Transkript inte tillgängligt"
43
59
  }
44
60
  }
@@ -4,5 +4,6 @@ export type Size = {
4
4
  width: number
5
5
  height: number
6
6
  }
7
+ export type WithAbortSignal<T> = T & { signal?: AbortSignal }
7
8
 
8
9
  export type ColorValue = (typeof COLORS)[keyof typeof COLORS]
@@ -1,120 +0,0 @@
1
- # TTS Word-by-Word Highlighting
2
-
3
- ## Overview
4
-
5
- Word-by-word text highlighting synchronized with text-to-speech playback in the chatbot. The feature is optional and enabled via `isWordHighlightEnabled` config flag.
6
-
7
- ## How It Works
8
-
9
- ```
10
- ┌─────────────────────────────────────────────────────────────────┐
11
- │ 1. User clicks TTS button on a message │
12
- │ ↓ │
13
- │ 2. Text is converted to SSML with word marks │
14
- │ "Hello world" → <speak><mark name="w_0"/>Hello │
15
- │ <mark name="w_1"/>world</speak> │
16
- │ ↓ │
17
- │ 3. Google TTS API returns audio + timepoints │
18
- │ [{ markName: "w_0", timeSeconds: 0.0 }, │
19
- │ { markName: "w_1", timeSeconds: 0.5 }] │
20
- │ ↓ │
21
- │ 4. Audio plays, onTimeUpdate fires via RAF loop │
22
- │ ↓ │
23
- │ 5. Current time → find matching timepoint → word index │
24
- │ ↓ │
25
- │ 6. $highlightedWordIndex updates → UI re-renders highlighted │
26
- └─────────────────────────────────────────────────────────────────┘
27
- ```
28
-
29
- ## Usage
30
-
31
- ```tsx
32
- // In students-web model setup
33
- chatModel.bot.setUpT2S({
34
- audioProvider: createT2SAudioProvider(),
35
- textSanitizer: removeKatexPartFromTextToSpeech,
36
- isWordHighlightEnabled: true,
37
- })
38
- ```
39
-
40
- ## Architecture
41
-
42
- ### ChatTTSModel (ChatTTSModel.ts)
43
-
44
- Handles TTS playback and word highlighting. Key design decisions:
45
-
46
- - **Map-based cache** — `audioCache: Map<string, AudioCache>` stores both `audioPath` and `timepoints` per message. When highlighting is off, `timepoints` is `[]`. Cache lives for the model's lifetime (cleared when user leaves the problem).
47
- - **`fetchAudio()` method** — encapsulates API call + audioContent decoding. Highlight vs non-highlight differences are ternaries (SSML vs plain text, `enableTimePointing`).
48
- - **`play()` is linear** — cache lookup → fetch if miss → store → activate highlight if enabled → play audio. No branching between highlight/non-highlight paths.
49
- - **Pause/resume guards** — `wordHighlightEnabled` check before toggling `setIsActive(false)`/`setIsActive(true)` on pause/resume.
50
- - **`wordHighlightEnabled` (private)** — stored result of `!!isWordHighlightEnabled && !!audioProvider.onTimeUpdate`. Set once at `setConfig`.
51
- - **`isWordHighlightEnabled` (public getter)** — read-only access for external consumers (e.g. `Chat.tsx`).
52
-
53
- ### AudioProvider type
54
-
55
- ```typescript
56
- type AudioProvider = {
57
- play: (audioPath: string, onPlaybackComplete: () => void) => Promise<void>
58
- pause: () => void
59
- resume: () => void
60
- stop: () => void
61
- onTimeUpdate?: OnTimeUpdate // optional — presence enables highlight capability
62
- }
63
- ```
64
-
65
- `onTimeUpdate` is optional. It's the mechanism that syncs audio playback time with word highlights via a RAF loop. If the provider doesn't have it, highlighting won't activate even if `isWordHighlightEnabled: true`.
66
-
67
- ### ChatTTSHighlightModel (ChatTTSHighlightModel.ts)
68
-
69
- Manages highlight state using Effector stores with declarative reset. Receives `OnTimeUpdate` callback directly (not the whole `AudioProvider`).
70
-
71
- - **`$isActive`** — gates `$highlightedWordIndex` computation. Toggled on pause/resume without resetting timepoints.
72
- - **`$highlightedWordIndex`** — derived store, returns `-1` when inactive or no match. Parses mark name via `WORD_MARK_REGEX`.
73
- - **`activate(timepoints, onTimeUpdate)`** — sets timepoints, enables highlighting, registers time update callback. Only triggers store updates when the highlighted word actually changes (`lastMark` comparison).
74
- - **`deactivate(onTimeUpdate)`** — stops listening, resets all state via declarative `.reset()` chain.
75
- - **All stores use `.reset(this.reset)`** — single `reset` event clears `$time`, `$timepoints`, and `$isActive`.
76
-
77
- ### Helpers (helpers/ttsHighlight.ts)
78
-
79
- - **`textToSSML(text)`** — converts plain text to SSML with `<mark>` tags for word timing.
80
- - **`findCurrentMark(timepoints, time)`** — iterates backwards through timepoints to find the current mark. Efficient for linear playback.
81
-
82
- ### Constants (constants.ts)
83
-
84
- - **`WORD_MARK_REGEX`** — `/^w_(\d+)$/` — extracts word index from mark names like `w_0`, `w_1`.
85
-
86
- ### Naming conventions
87
-
88
- | Name | Scope | Purpose |
89
- |------|-------|---------|
90
- | `wordHighlight` | public instance | `ChatTTSHighlightModel` instance on `ChatTTSModel` |
91
- | `wordHighlightEnabled` | private field | Whether highlighting is active (set once at config) |
92
- | `isWordHighlightEnabled` | public getter | Read-only access to `wordHighlightEnabled` for external consumers |
93
- | `isWordHighlightEnabled` | T2SConfig field | Config flag passed to `setUpT2S()` |
94
-
95
- ## Data Flow
96
-
97
- ```
98
- AudioProvider.onTimeUpdate(callback)
99
-
100
- ChatTTSHighlightModel.activate(timepoints, onTimeUpdate)
101
-
102
- RAF loop → audio.currentTime → findCurrentMark() → only updates when mark changes
103
-
104
- $highlightedWordIndex = parse mark name "w_N" → N (or -1 if inactive/no match)
105
-
106
- Chat.tsx: model.t2s.isWordHighlightEnabled && isPlayingMessage ? highlightedWordIndex : -1
107
-
108
- ChatMessage → MessageContent → TTSHighlightRenderer({ text, highlightedIndex })
109
- ```
110
-
111
- ## Key Files
112
-
113
- | File | Purpose |
114
- |------|---------|
115
- | `model/ChatTTSModel.ts` | `ChatTTSModel` — TTS playback, caching, highlight orchestration |
116
- | `model/ChatTTSHighlightModel.ts` | Highlight state — timepoints, current time, `$isActive`, derived word index |
117
- | `helpers/ttsHighlight.ts` | `textToSSML` + `findCurrentMark` — SSML conversion and playback position lookup |
118
- | `constants.ts` | `WORD_MARK_REGEX` and audio config defaults |
119
- | `types/t2s.types.ts` | `AudioProvider`, `OnTimeUpdate`, `AudioStatus`, `AudioCache`, `TTSHighlightRendererProps` types |
120
- | `components/Chat/Chat.tsx` | Reads `isWordHighlightEnabled` and `$highlightedWordIndex`, passes to messages |
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.CloseButton = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _reactNative = require("react-native");
9
- var _reactNativeUi = require("@magmamath/react-native-ui");
10
- var _CloseIcon = require("../../../../shared/icons/CloseIcon.js");
11
- var _jsxRuntime = require("react/jsx-runtime");
12
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
- const CloseButton = ({
14
- onPress
15
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeUi.Button, {
16
- onPress: onPress,
17
- style: {
18
- button: styles.button
19
- },
20
- variant: _reactNativeUi.ButtonVariant.PRIMARY,
21
- size: _reactNativeUi.ButtonSize.MEDIUM,
22
- colorScheme: _reactNativeUi.ButtonColor.WHITE,
23
- raiseLevel: 5,
24
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CloseIcon.CloseIcon, {
25
- width: 18,
26
- height: 18
27
- })
28
- });
29
- exports.CloseButton = CloseButton;
30
- const styles = _reactNative.StyleSheet.create({
31
- button: {
32
- width: 38,
33
- height: 38,
34
- borderRadius: 36,
35
- paddingHorizontal: 0,
36
- borderColor: _reactNativeUi.COLORS.NEUTRAL_5
37
- }
38
- });
39
- //# sourceMappingURL=CloseButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeUi","_CloseIcon","_jsxRuntime","e","__esModule","default","CloseButton","onPress","jsx","Button","style","button","styles","variant","ButtonVariant","PRIMARY","size","ButtonSize","MEDIUM","colorScheme","ButtonColor","WHITE","raiseLevel","children","CloseIcon","width","height","exports","StyleSheet","create","borderRadius","paddingHorizontal","borderColor","COLORS","NEUTRAL_5"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/Chat/CloseButton.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAA8D,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAMvD,MAAMG,WAAW,GAAGA,CAAC;EAAEC;AAA0B,CAAC,kBACvD,IAAAL,WAAA,CAAAM,GAAA,EAACR,cAAA,CAAAS,MAAM;EACLF,OAAO,EAAEA,OAAQ;EACjBG,KAAK,EAAE;IAAEC,MAAM,EAAEC,MAAM,CAACD;EAAO,CAAE;EACjCE,OAAO,EAAEC,4BAAa,CAACC,OAAQ;EAC/BC,IAAI,EAAEC,yBAAU,CAACC,MAAO;EACxBC,WAAW,EAAEC,0BAAW,CAACC,KAAM;EAC/BC,UAAU,EAAE,CAAE;EAAAC,QAAA,eAEd,IAAArB,WAAA,CAAAM,GAAA,EAACP,UAAA,CAAAuB,SAAS;IAACC,KAAK,EAAE,EAAG;IAACC,MAAM,EAAE;EAAG,CAAE;AAAC,CAC9B,CACT;AAAAC,OAAA,CAAArB,WAAA,GAAAA,WAAA;AAED,MAAMM,MAAM,GAAGgB,uBAAU,CAACC,MAAM,CAAC;EAC/BlB,MAAM,EAAE;IACNc,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVI,YAAY,EAAE,EAAE;IAChBC,iBAAiB,EAAE,CAAC;IACpBC,WAAW,EAAEC,qBAAM,CAACC;EACtB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,44 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.GradientFade = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _reactNative = require("react-native");
9
- var _jsxRuntime = require("react/jsx-runtime");
10
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
- const WebGradient = ({
12
- colors,
13
- locations,
14
- style
15
- }) => {
16
- const stops = colors.map((color, i) => {
17
- const position = locations ? `${locations[i] * 100}%` : undefined;
18
- return position ? `${color} ${position}` : color;
19
- }).join(', ');
20
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
21
- style: [_reactNative.StyleSheet.absoluteFill, style, {
22
- backgroundImage: `linear-gradient(to bottom, ${stops})`
23
- }]
24
- });
25
- };
26
- const NativeGradient = ({
27
- colors,
28
- locations,
29
- style
30
- }) => {
31
- const {
32
- LinearGradient
33
- } = require('expo-linear-gradient');
34
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(LinearGradient, {
35
- colors: colors,
36
- locations: locations,
37
- style: [_reactNative.StyleSheet.absoluteFill, style]
38
- });
39
- };
40
- const GradientFade = exports.GradientFade = _reactNative.Platform.select({
41
- web: WebGradient,
42
- default: NativeGradient
43
- });
44
- //# sourceMappingURL=GradientFade.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_jsxRuntime","e","__esModule","default","WebGradient","colors","locations","style","stops","map","color","i","position","undefined","join","jsx","View","StyleSheet","absoluteFill","backgroundImage","NativeGradient","LinearGradient","GradientFade","exports","Platform","select","web"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/Chat/GradientFade.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAAoE,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAQpE,MAAMG,WAAW,GAAGA,CAAC;EAAEC,MAAM;EAAEC,SAAS;EAAEC;AAAyB,CAAC,KAAK;EACvE,MAAMC,KAAK,GAAGH,MAAM,CACjBI,GAAG,CAAC,CAACC,KAAK,EAAEC,CAAC,KAAK;IACjB,MAAMC,QAAQ,GAAGN,SAAS,GAAG,GAAGA,SAAS,CAACK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAGE,SAAS;IACjE,OAAOD,QAAQ,GAAG,GAAGF,KAAK,IAAIE,QAAQ,EAAE,GAAGF,KAAK;EAClD,CAAC,CAAC,CACDI,IAAI,CAAC,IAAI,CAAC;EAEb,oBACE,IAAAd,WAAA,CAAAe,GAAA,EAAChB,YAAA,CAAAiB,IAAI;IACHT,KAAK,EAAE,CACLU,uBAAU,CAACC,YAAY,EACvBX,KAAK,EACL;MAAEY,eAAe,EAAE,8BAA8BX,KAAK;IAAI,CAAC;EAC3D,CACH,CAAC;AAEN,CAAC;AAED,MAAMY,cAAc,GAAGA,CAAC;EAAEf,MAAM;EAAEC,SAAS;EAAEC;AAAyB,CAAC,KAAK;EAC1E,MAAM;IAAEc;EAAe,CAAC,GAAGvB,OAAO,CAAC,sBAAsB,CAAC;EAC1D,oBACE,IAAAE,WAAA,CAAAe,GAAA,EAACM,cAAc;IACbhB,MAAM,EAAEA,MAAO;IACfC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAE,CAACU,uBAAU,CAACC,YAAY,EAAEX,KAAK;EAAE,CACzC,CAAC;AAEN,CAAC;AAEM,MAAMe,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAGE,qBAAQ,CAACC,MAAM,CAAC;EAC1CC,GAAG,EAAEtB,WAAW;EAChBD,OAAO,EAAEiB;AACX,CAAC,CAAC","ignoreList":[]}
@@ -1,41 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.AnimatedMessage = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
9
- var _jsxRuntime = require("react/jsx-runtime");
10
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
11
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
- const INITIAL_OFFSET = 25;
13
- const SPRING_CONFIG = {
14
- mass: 1.1,
15
- stiffness: 177,
16
- damping: 20
17
- };
18
- const AnimatedMessage = ({
19
- children,
20
- animate = true
21
- }) => {
22
- const translateY = (0, _reactNativeReanimated.useSharedValue)(animate ? INITIAL_OFFSET : 0);
23
- (0, _react.useEffect)(() => {
24
- if (animate) {
25
- translateY.value = (0, _reactNativeReanimated.withSpring)(0, SPRING_CONFIG);
26
- }
27
- }, []);
28
- const animatedStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
29
- transform: [{
30
- translateY: translateY.value
31
- }]
32
- }), [translateY]);
33
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
34
- style: [animate && animatedStyle, {
35
- alignItems: 'flex-end'
36
- }],
37
- children: children
38
- });
39
- };
40
- exports.AnimatedMessage = AnimatedMessage;
41
- //# sourceMappingURL=AnimatedMessage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNativeReanimated","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","INITIAL_OFFSET","SPRING_CONFIG","mass","stiffness","damping","AnimatedMessage","children","animate","translateY","useSharedValue","useEffect","value","withSpring","animatedStyle","useAnimatedStyle","transform","jsx","View","style","alignItems","exports"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/ChatMessage/AnimatedMessage.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAF,uBAAA,CAAAC,OAAA;AAAgG,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAL,wBAAAK,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAEhG,MAAMW,cAAc,GAAG,EAAE;AACzB,MAAMC,aAAa,GAAG;EAAEC,IAAI,EAAE,GAAG;EAAEC,SAAS,EAAE,GAAG;EAAEC,OAAO,EAAE;AAAG,CAAC;AAIzD,MAAMC,eAAe,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,OAAO,GAAG;AAA2B,CAAC,KAAK;EACrF,MAAMC,UAAU,GAAG,IAAAC,qCAAc,EAACF,OAAO,GAAGP,cAAc,GAAG,CAAC,CAAC;EAE/D,IAAAU,gBAAS,EAAC,MAAM;IACd,IAAIH,OAAO,EAAE;MACXC,UAAU,CAACG,KAAK,GAAG,IAAAC,iCAAU,EAAC,CAAC,EAAEX,aAAa,CAAC;IACjD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMY,aAAa,GAAG,IAAAC,uCAAgB,EACpC,OAAO;IACLC,SAAS,EAAE,CAAC;MAAEP,UAAU,EAAEA,UAAU,CAACG;IAAM,CAAC;EAC9C,CAAC,CAAC,EACF,CAACH,UAAU,CACb,CAAC;EAED,oBACE,IAAA7B,WAAA,CAAAqC,GAAA,EAACtC,sBAAA,CAAAQ,OAAQ,CAAC+B,IAAI;IAACC,KAAK,EAAE,CAACX,OAAO,IAAIM,aAAa,EAAE;MAAEM,UAAU,EAAE;IAAW,CAAC,CAAE;IAAAb,QAAA,EAC1EA;EAAQ,CACI,CAAC;AAEpB,CAAC;AAAAc,OAAA,CAAAf,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -1,120 +0,0 @@
1
- # TTS Word-by-Word Highlighting
2
-
3
- ## Overview
4
-
5
- Word-by-word text highlighting synchronized with text-to-speech playback in the chatbot. The feature is optional and enabled via `isWordHighlightEnabled` config flag.
6
-
7
- ## How It Works
8
-
9
- ```
10
- ┌─────────────────────────────────────────────────────────────────┐
11
- │ 1. User clicks TTS button on a message │
12
- │ ↓ │
13
- │ 2. Text is converted to SSML with word marks │
14
- │ "Hello world" → <speak><mark name="w_0"/>Hello │
15
- │ <mark name="w_1"/>world</speak> │
16
- │ ↓ │
17
- │ 3. Google TTS API returns audio + timepoints │
18
- │ [{ markName: "w_0", timeSeconds: 0.0 }, │
19
- │ { markName: "w_1", timeSeconds: 0.5 }] │
20
- │ ↓ │
21
- │ 4. Audio plays, onTimeUpdate fires via RAF loop │
22
- │ ↓ │
23
- │ 5. Current time → find matching timepoint → word index │
24
- │ ↓ │
25
- │ 6. $highlightedWordIndex updates → UI re-renders highlighted │
26
- └─────────────────────────────────────────────────────────────────┘
27
- ```
28
-
29
- ## Usage
30
-
31
- ```tsx
32
- // In students-web model setup
33
- chatModel.bot.setUpT2S({
34
- audioProvider: createT2SAudioProvider(),
35
- textSanitizer: removeKatexPartFromTextToSpeech,
36
- isWordHighlightEnabled: true,
37
- })
38
- ```
39
-
40
- ## Architecture
41
-
42
- ### ChatTTSModel (ChatTTSModel.ts)
43
-
44
- Handles TTS playback and word highlighting. Key design decisions:
45
-
46
- - **Map-based cache** — `audioCache: Map<string, AudioCache>` stores both `audioPath` and `timepoints` per message. When highlighting is off, `timepoints` is `[]`. Cache lives for the model's lifetime (cleared when user leaves the problem).
47
- - **`fetchAudio()` method** — encapsulates API call + audioContent decoding. Highlight vs non-highlight differences are ternaries (SSML vs plain text, `enableTimePointing`).
48
- - **`play()` is linear** — cache lookup → fetch if miss → store → activate highlight if enabled → play audio. No branching between highlight/non-highlight paths.
49
- - **Pause/resume guards** — `wordHighlightEnabled` check before toggling `setIsActive(false)`/`setIsActive(true)` on pause/resume.
50
- - **`wordHighlightEnabled` (private)** — stored result of `!!isWordHighlightEnabled && !!audioProvider.onTimeUpdate`. Set once at `setConfig`.
51
- - **`isWordHighlightEnabled` (public getter)** — read-only access for external consumers (e.g. `Chat.tsx`).
52
-
53
- ### AudioProvider type
54
-
55
- ```typescript
56
- type AudioProvider = {
57
- play: (audioPath: string, onPlaybackComplete: () => void) => Promise<void>
58
- pause: () => void
59
- resume: () => void
60
- stop: () => void
61
- onTimeUpdate?: OnTimeUpdate // optional — presence enables highlight capability
62
- }
63
- ```
64
-
65
- `onTimeUpdate` is optional. It's the mechanism that syncs audio playback time with word highlights via a RAF loop. If the provider doesn't have it, highlighting won't activate even if `isWordHighlightEnabled: true`.
66
-
67
- ### ChatTTSHighlightModel (ChatTTSHighlightModel.ts)
68
-
69
- Manages highlight state using Effector stores with declarative reset. Receives `OnTimeUpdate` callback directly (not the whole `AudioProvider`).
70
-
71
- - **`$isActive`** — gates `$highlightedWordIndex` computation. Toggled on pause/resume without resetting timepoints.
72
- - **`$highlightedWordIndex`** — derived store, returns `-1` when inactive or no match. Parses mark name via `WORD_MARK_REGEX`.
73
- - **`activate(timepoints, onTimeUpdate)`** — sets timepoints, enables highlighting, registers time update callback. Only triggers store updates when the highlighted word actually changes (`lastMark` comparison).
74
- - **`deactivate(onTimeUpdate)`** — stops listening, resets all state via declarative `.reset()` chain.
75
- - **All stores use `.reset(this.reset)`** — single `reset` event clears `$time`, `$timepoints`, and `$isActive`.
76
-
77
- ### Helpers (helpers/ttsHighlight.ts)
78
-
79
- - **`textToSSML(text)`** — converts plain text to SSML with `<mark>` tags for word timing.
80
- - **`findCurrentMark(timepoints, time)`** — iterates backwards through timepoints to find the current mark. Efficient for linear playback.
81
-
82
- ### Constants (constants.ts)
83
-
84
- - **`WORD_MARK_REGEX`** — `/^w_(\d+)$/` — extracts word index from mark names like `w_0`, `w_1`.
85
-
86
- ### Naming conventions
87
-
88
- | Name | Scope | Purpose |
89
- |------|-------|---------|
90
- | `wordHighlight` | public instance | `ChatTTSHighlightModel` instance on `ChatTTSModel` |
91
- | `wordHighlightEnabled` | private field | Whether highlighting is active (set once at config) |
92
- | `isWordHighlightEnabled` | public getter | Read-only access to `wordHighlightEnabled` for external consumers |
93
- | `isWordHighlightEnabled` | T2SConfig field | Config flag passed to `setUpT2S()` |
94
-
95
- ## Data Flow
96
-
97
- ```
98
- AudioProvider.onTimeUpdate(callback)
99
-
100
- ChatTTSHighlightModel.activate(timepoints, onTimeUpdate)
101
-
102
- RAF loop → audio.currentTime → findCurrentMark() → only updates when mark changes
103
-
104
- $highlightedWordIndex = parse mark name "w_N" → N (or -1 if inactive/no match)
105
-
106
- Chat.tsx: model.t2s.isWordHighlightEnabled && isPlayingMessage ? highlightedWordIndex : -1
107
-
108
- ChatMessage → MessageContent → TTSHighlightRenderer({ text, highlightedIndex })
109
- ```
110
-
111
- ## Key Files
112
-
113
- | File | Purpose |
114
- |------|---------|
115
- | `model/ChatTTSModel.ts` | `ChatTTSModel` — TTS playback, caching, highlight orchestration |
116
- | `model/ChatTTSHighlightModel.ts` | Highlight state — timepoints, current time, `$isActive`, derived word index |
117
- | `helpers/ttsHighlight.ts` | `textToSSML` + `findCurrentMark` — SSML conversion and playback position lookup |
118
- | `constants.ts` | `WORD_MARK_REGEX` and audio config defaults |
119
- | `types/t2s.types.ts` | `AudioProvider`, `OnTimeUpdate`, `AudioStatus`, `AudioCache`, `TTSHighlightRendererProps` types |
120
- | `components/Chat/Chat.tsx` | Reads `isWordHighlightEnabled` and `$highlightedWordIndex`, passes to messages |
@@ -1,33 +0,0 @@
1
- "use strict";
2
-
3
- import React from 'react';
4
- import { StyleSheet } from 'react-native';
5
- import { Button, ButtonColor, ButtonSize, ButtonVariant, COLORS } from '@magmamath/react-native-ui';
6
- import { CloseIcon } from "../../../../shared/icons/CloseIcon.js";
7
- import { jsx as _jsx } from "react/jsx-runtime";
8
- export const CloseButton = ({
9
- onPress
10
- }) => /*#__PURE__*/_jsx(Button, {
11
- onPress: onPress,
12
- style: {
13
- button: styles.button
14
- },
15
- variant: ButtonVariant.PRIMARY,
16
- size: ButtonSize.MEDIUM,
17
- colorScheme: ButtonColor.WHITE,
18
- raiseLevel: 5,
19
- children: /*#__PURE__*/_jsx(CloseIcon, {
20
- width: 18,
21
- height: 18
22
- })
23
- });
24
- const styles = StyleSheet.create({
25
- button: {
26
- width: 38,
27
- height: 38,
28
- borderRadius: 36,
29
- paddingHorizontal: 0,
30
- borderColor: COLORS.NEUTRAL_5
31
- }
32
- });
33
- //# sourceMappingURL=CloseButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","StyleSheet","Button","ButtonColor","ButtonSize","ButtonVariant","COLORS","CloseIcon","jsx","_jsx","CloseButton","onPress","style","button","styles","variant","PRIMARY","size","MEDIUM","colorScheme","WHITE","raiseLevel","children","width","height","create","borderRadius","paddingHorizontal","borderColor","NEUTRAL_5"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/Chat/CloseButton.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,MAAM,EAAEC,WAAW,EAAEC,UAAU,EAAEC,aAAa,EAAEC,MAAM,QAAQ,4BAA4B;AACnG,SAASC,SAAS,QAAQ,uCAAoC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAM9D,OAAO,MAAMC,WAAW,GAAGA,CAAC;EAAEC;AAA0B,CAAC,kBACvDF,IAAA,CAACP,MAAM;EACLS,OAAO,EAAEA,OAAQ;EACjBC,KAAK,EAAE;IAAEC,MAAM,EAAEC,MAAM,CAACD;EAAO,CAAE;EACjCE,OAAO,EAAEV,aAAa,CAACW,OAAQ;EAC/BC,IAAI,EAAEb,UAAU,CAACc,MAAO;EACxBC,WAAW,EAAEhB,WAAW,CAACiB,KAAM;EAC/BC,UAAU,EAAE,CAAE;EAAAC,QAAA,eAEdb,IAAA,CAACF,SAAS;IAACgB,KAAK,EAAE,EAAG;IAACC,MAAM,EAAE;EAAG,CAAE;AAAC,CAC9B,CACT;AAED,MAAMV,MAAM,GAAGb,UAAU,CAACwB,MAAM,CAAC;EAC/BZ,MAAM,EAAE;IACNU,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVE,YAAY,EAAE,EAAE;IAChBC,iBAAiB,EAAE,CAAC;IACpBC,WAAW,EAAEtB,MAAM,CAACuB;EACtB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- import React from 'react';
4
- import { Platform, StyleSheet, View } from 'react-native';
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
- const WebGradient = ({
7
- colors,
8
- locations,
9
- style
10
- }) => {
11
- const stops = colors.map((color, i) => {
12
- const position = locations ? `${locations[i] * 100}%` : undefined;
13
- return position ? `${color} ${position}` : color;
14
- }).join(', ');
15
- return /*#__PURE__*/_jsx(View, {
16
- style: [StyleSheet.absoluteFill, style, {
17
- backgroundImage: `linear-gradient(to bottom, ${stops})`
18
- }]
19
- });
20
- };
21
- const NativeGradient = ({
22
- colors,
23
- locations,
24
- style
25
- }) => {
26
- const {
27
- LinearGradient
28
- } = require('expo-linear-gradient');
29
- return /*#__PURE__*/_jsx(LinearGradient, {
30
- colors: colors,
31
- locations: locations,
32
- style: [StyleSheet.absoluteFill, style]
33
- });
34
- };
35
- export const GradientFade = Platform.select({
36
- web: WebGradient,
37
- default: NativeGradient
38
- });
39
- //# sourceMappingURL=GradientFade.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","Platform","StyleSheet","View","jsx","_jsx","WebGradient","colors","locations","style","stops","map","color","i","position","undefined","join","absoluteFill","backgroundImage","NativeGradient","LinearGradient","require","GradientFade","select","web","default"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/Chat/GradientFade.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,EAAEC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAQpE,MAAMC,WAAW,GAAGA,CAAC;EAAEC,MAAM;EAAEC,SAAS;EAAEC;AAAyB,CAAC,KAAK;EACvE,MAAMC,KAAK,GAAGH,MAAM,CACjBI,GAAG,CAAC,CAACC,KAAK,EAAEC,CAAC,KAAK;IACjB,MAAMC,QAAQ,GAAGN,SAAS,GAAG,GAAGA,SAAS,CAACK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAGE,SAAS;IACjE,OAAOD,QAAQ,GAAG,GAAGF,KAAK,IAAIE,QAAQ,EAAE,GAAGF,KAAK;EAClD,CAAC,CAAC,CACDI,IAAI,CAAC,IAAI,CAAC;EAEb,oBACEX,IAAA,CAACF,IAAI;IACHM,KAAK,EAAE,CACLP,UAAU,CAACe,YAAY,EACvBR,KAAK,EACL;MAAES,eAAe,EAAE,8BAA8BR,KAAK;IAAI,CAAC;EAC3D,CACH,CAAC;AAEN,CAAC;AAED,MAAMS,cAAc,GAAGA,CAAC;EAAEZ,MAAM;EAAEC,SAAS;EAAEC;AAAyB,CAAC,KAAK;EAC1E,MAAM;IAAEW;EAAe,CAAC,GAAGC,OAAO,CAAC,sBAAsB,CAAC;EAC1D,oBACEhB,IAAA,CAACe,cAAc;IACbb,MAAM,EAAEA,MAAO;IACfC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAE,CAACP,UAAU,CAACe,YAAY,EAAER,KAAK;EAAE,CACzC,CAAC;AAEN,CAAC;AAED,OAAO,MAAMa,YAAY,GAAGrB,QAAQ,CAACsB,MAAM,CAAC;EAC1CC,GAAG,EAAElB,WAAW;EAChBmB,OAAO,EAAEN;AACX,CAAC,CAAC","ignoreList":[]}
@@ -1,34 +0,0 @@
1
- "use strict";
2
-
3
- import React, { useEffect } from 'react';
4
- import Animated, { useAnimatedStyle, useSharedValue, withSpring } from 'react-native-reanimated';
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
- const INITIAL_OFFSET = 25;
7
- const SPRING_CONFIG = {
8
- mass: 1.1,
9
- stiffness: 177,
10
- damping: 20
11
- };
12
- export const AnimatedMessage = ({
13
- children,
14
- animate = true
15
- }) => {
16
- const translateY = useSharedValue(animate ? INITIAL_OFFSET : 0);
17
- useEffect(() => {
18
- if (animate) {
19
- translateY.value = withSpring(0, SPRING_CONFIG);
20
- }
21
- }, []);
22
- const animatedStyle = useAnimatedStyle(() => ({
23
- transform: [{
24
- translateY: translateY.value
25
- }]
26
- }), [translateY]);
27
- return /*#__PURE__*/_jsx(Animated.View, {
28
- style: [animate && animatedStyle, {
29
- alignItems: 'flex-end'
30
- }],
31
- children: children
32
- });
33
- };
34
- //# sourceMappingURL=AnimatedMessage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","useEffect","Animated","useAnimatedStyle","useSharedValue","withSpring","jsx","_jsx","INITIAL_OFFSET","SPRING_CONFIG","mass","stiffness","damping","AnimatedMessage","children","animate","translateY","value","animatedStyle","transform","View","style","alignItems"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/ChatMessage/AnimatedMessage.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAuBC,SAAS,QAAQ,OAAO;AAC3D,OAAOC,QAAQ,IAAIC,gBAAgB,EAAEC,cAAc,EAAEC,UAAU,QAAQ,yBAAyB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEhG,MAAMC,cAAc,GAAG,EAAE;AACzB,MAAMC,aAAa,GAAG;EAAEC,IAAI,EAAE,GAAG;EAAEC,SAAS,EAAE,GAAG;EAAEC,OAAO,EAAE;AAAG,CAAC;AAIhE,OAAO,MAAMC,eAAe,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,OAAO,GAAG;AAA2B,CAAC,KAAK;EACrF,MAAMC,UAAU,GAAGZ,cAAc,CAACW,OAAO,GAAGP,cAAc,GAAG,CAAC,CAAC;EAE/DP,SAAS,CAAC,MAAM;IACd,IAAIc,OAAO,EAAE;MACXC,UAAU,CAACC,KAAK,GAAGZ,UAAU,CAAC,CAAC,EAAEI,aAAa,CAAC;IACjD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMS,aAAa,GAAGf,gBAAgB,CACpC,OAAO;IACLgB,SAAS,EAAE,CAAC;MAAEH,UAAU,EAAEA,UAAU,CAACC;IAAM,CAAC;EAC9C,CAAC,CAAC,EACF,CAACD,UAAU,CACb,CAAC;EAED,oBACET,IAAA,CAACL,QAAQ,CAACkB,IAAI;IAACC,KAAK,EAAE,CAACN,OAAO,IAAIG,aAAa,EAAE;MAAEI,UAAU,EAAE;IAAW,CAAC,CAAE;IAAAR,QAAA,EAC1EA;EAAQ,CACI,CAAC;AAEpB,CAAC","ignoreList":[]}
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- type CloseButtonProps = {
3
- onPress?: () => void;
4
- };
5
- export declare const CloseButton: ({ onPress }: CloseButtonProps) => React.JSX.Element;
6
- export {};
7
- //# sourceMappingURL=CloseButton.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CloseButton.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chatbot/components/Chat/CloseButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,KAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,WAAW,gBAAiB,gBAAgB,sBAWxD,CAAA"}
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import { ViewStyle } from 'react-native';
3
- type GradientFadeProps = {
4
- colors: string[];
5
- locations?: number[];
6
- style?: ViewStyle;
7
- };
8
- export declare const GradientFade: ({ colors, locations, style }: GradientFadeProps) => React.JSX.Element;
9
- export {};
10
- //# sourceMappingURL=GradientFade.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GradientFade.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chatbot/components/Chat/GradientFade.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAA8B,SAAS,EAAE,MAAM,cAAc,CAAA;AAEpE,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAgCD,eAAO,MAAM,YAAY,iCAX6B,iBAAiB,sBAcrE,CAAA"}
@@ -1,7 +0,0 @@
1
- import React, { PropsWithChildren } from 'react';
2
- type AnimatedMessageProps = PropsWithChildren<{
3
- animate?: boolean;
4
- }>;
5
- export declare const AnimatedMessage: ({ children, animate }: AnimatedMessageProps) => React.JSX.Element;
6
- export {};
7
- //# sourceMappingURL=AnimatedMessage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnimatedMessage.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chatbot/components/ChatMessage/AnimatedMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAa,MAAM,OAAO,CAAA;AAM3D,KAAK,oBAAoB,GAAG,iBAAiB,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAA;AAEpE,eAAO,MAAM,eAAe,0BAAkC,oBAAoB,sBAqBjF,CAAA"}
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- type CloseButtonProps = {
3
- onPress?: () => void;
4
- };
5
- export declare const CloseButton: ({ onPress }: CloseButtonProps) => React.JSX.Element;
6
- export {};
7
- //# sourceMappingURL=CloseButton.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CloseButton.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chatbot/components/Chat/CloseButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,KAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,WAAW,gBAAiB,gBAAgB,sBAWxD,CAAA"}
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import { ViewStyle } from 'react-native';
3
- type GradientFadeProps = {
4
- colors: string[];
5
- locations?: number[];
6
- style?: ViewStyle;
7
- };
8
- export declare const GradientFade: ({ colors, locations, style }: GradientFadeProps) => React.JSX.Element;
9
- export {};
10
- //# sourceMappingURL=GradientFade.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GradientFade.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chatbot/components/Chat/GradientFade.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAA8B,SAAS,EAAE,MAAM,cAAc,CAAA;AAEpE,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAgCD,eAAO,MAAM,YAAY,iCAX6B,iBAAiB,sBAcrE,CAAA"}
@@ -1,7 +0,0 @@
1
- import React, { PropsWithChildren } from 'react';
2
- type AnimatedMessageProps = PropsWithChildren<{
3
- animate?: boolean;
4
- }>;
5
- export declare const AnimatedMessage: ({ children, animate }: AnimatedMessageProps) => React.JSX.Element;
6
- export {};
7
- //# sourceMappingURL=AnimatedMessage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnimatedMessage.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chatbot/components/ChatMessage/AnimatedMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAa,MAAM,OAAO,CAAA;AAM3D,KAAK,oBAAoB,GAAG,iBAAiB,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAA;AAEpE,eAAO,MAAM,eAAe,0BAAkC,oBAAoB,sBAqBjF,CAAA"}