@magmamath/students-features 0.1.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 (405) hide show
  1. package/README.md +33 -0
  2. package/dist/commonjs/features/chatbot/components/Alternatives/Alternatives.js +60 -0
  3. package/dist/commonjs/features/chatbot/components/Alternatives/Alternatives.js.map +1 -0
  4. package/dist/commonjs/features/chatbot/components/Alternatives/HelpRequestOption.js +96 -0
  5. package/dist/commonjs/features/chatbot/components/Alternatives/HelpRequestOption.js.map +1 -0
  6. package/dist/commonjs/features/chatbot/components/ChatControls/ChatControls.js +97 -0
  7. package/dist/commonjs/features/chatbot/components/ChatControls/ChatControls.js.map +1 -0
  8. package/dist/commonjs/features/chatbot/components/ChatMessage/ChatMessage.js +27 -0
  9. package/dist/commonjs/features/chatbot/components/ChatMessage/ChatMessage.js.map +1 -0
  10. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageLoader.js +56 -0
  11. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageLoader.js.map +1 -0
  12. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageTextToSpeech.js +88 -0
  13. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageTextToSpeech.js.map +1 -0
  14. package/dist/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.js +87 -0
  15. package/dist/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.js.map +1 -0
  16. package/dist/commonjs/features/chatbot/components/ChatMessage/SentMessage.js +43 -0
  17. package/dist/commonjs/features/chatbot/components/ChatMessage/SentMessage.js.map +1 -0
  18. package/dist/commonjs/features/chatbot/components/ChatMessages/ChatbotMessages.js +130 -0
  19. package/dist/commonjs/features/chatbot/components/ChatMessages/ChatbotMessages.js.map +1 -0
  20. package/dist/commonjs/features/chatbot/components/Chatbot.js +69 -0
  21. package/dist/commonjs/features/chatbot/components/Chatbot.js.map +1 -0
  22. package/dist/commonjs/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.js +65 -0
  23. package/dist/commonjs/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.js.map +1 -0
  24. package/dist/commonjs/features/chatbot/constants.js +31 -0
  25. package/dist/commonjs/features/chatbot/constants.js.map +1 -0
  26. package/dist/commonjs/features/chatbot/helpers.js +12 -0
  27. package/dist/commonjs/features/chatbot/helpers.js.map +1 -0
  28. package/dist/commonjs/features/chatbot/index.js +34 -0
  29. package/dist/commonjs/features/chatbot/index.js.map +1 -0
  30. package/dist/commonjs/features/chatbot/model/api.js +18 -0
  31. package/dist/commonjs/features/chatbot/model/api.js.map +1 -0
  32. package/dist/commonjs/features/chatbot/model/model.js +244 -0
  33. package/dist/commonjs/features/chatbot/model/model.js.map +1 -0
  34. package/dist/commonjs/features/chatbot/model/t2s.js +104 -0
  35. package/dist/commonjs/features/chatbot/model/t2s.js.map +1 -0
  36. package/dist/commonjs/features/chatbot/model/translation.js +203 -0
  37. package/dist/commonjs/features/chatbot/model/translation.js.map +1 -0
  38. package/dist/commonjs/features/chatbot/types/api.types.js +2 -0
  39. package/dist/commonjs/features/chatbot/types/api.types.js.map +1 -0
  40. package/dist/commonjs/features/chatbot/types/model.types.js +12 -0
  41. package/dist/commonjs/features/chatbot/types/model.types.js.map +1 -0
  42. package/dist/commonjs/features/chatbot/types/t2s.types.js +13 -0
  43. package/dist/commonjs/features/chatbot/types/t2s.types.js.map +1 -0
  44. package/dist/commonjs/features/chatbot/types/translation.types.js +6 -0
  45. package/dist/commonjs/features/chatbot/types/translation.types.js.map +1 -0
  46. package/dist/commonjs/index.js +42 -0
  47. package/dist/commonjs/index.js.map +1 -0
  48. package/dist/commonjs/lib/createFeature/createFeature.js +28 -0
  49. package/dist/commonjs/lib/createFeature/createFeature.js.map +1 -0
  50. package/dist/commonjs/lib/effector/createControllerEffect.js +51 -0
  51. package/dist/commonjs/lib/effector/createControllerEffect.js.map +1 -0
  52. package/dist/commonjs/lib/effector/createEntityFieldStore.js +42 -0
  53. package/dist/commonjs/lib/effector/createEntityFieldStore.js.map +1 -0
  54. package/dist/commonjs/lib/effector/index.js +20 -0
  55. package/dist/commonjs/lib/effector/index.js.map +1 -0
  56. package/dist/commonjs/lib/helpers/helpers.js +9 -0
  57. package/dist/commonjs/lib/helpers/helpers.js.map +1 -0
  58. package/dist/commonjs/lib/localization/en.json +2 -0
  59. package/dist/commonjs/lib/localization/gb.json +2 -0
  60. package/dist/commonjs/lib/localization/sw.json +2 -0
  61. package/dist/commonjs/shared/hooks/useDebounce.js +21 -0
  62. package/dist/commonjs/shared/hooks/useDebounce.js.map +1 -0
  63. package/dist/commonjs/shared/icons/ArrowRightIcon.js +30 -0
  64. package/dist/commonjs/shared/icons/ArrowRightIcon.js.map +1 -0
  65. package/dist/commonjs/shared/icons/ChatbotIcon.js +148 -0
  66. package/dist/commonjs/shared/icons/ChatbotIcon.js.map +1 -0
  67. package/dist/commonjs/shared/icons/CloseIcon.js +28 -0
  68. package/dist/commonjs/shared/icons/CloseIcon.js.map +1 -0
  69. package/dist/commonjs/shared/icons/GlobeIcon.js +30 -0
  70. package/dist/commonjs/shared/icons/GlobeIcon.js.map +1 -0
  71. package/dist/commonjs/shared/icons/PauseIcon.js +32 -0
  72. package/dist/commonjs/shared/icons/PauseIcon.js.map +1 -0
  73. package/dist/commonjs/shared/icons/PlayIcon.js +32 -0
  74. package/dist/commonjs/shared/icons/PlayIcon.js.map +1 -0
  75. package/dist/commonjs/shared/icons/SpeakerIcon.js +37 -0
  76. package/dist/commonjs/shared/icons/SpeakerIcon.js.map +1 -0
  77. package/dist/commonjs/shared/icons/icon.types.js +2 -0
  78. package/dist/commonjs/shared/icons/icon.types.js.map +1 -0
  79. package/dist/commonjs/shared/translation/constants.js +17 -0
  80. package/dist/commonjs/shared/translation/constants.js.map +1 -0
  81. package/dist/commonjs/shared/translation/helpers.js +31 -0
  82. package/dist/commonjs/shared/translation/helpers.js.map +1 -0
  83. package/dist/commonjs/shared/translation/hooks.js +28 -0
  84. package/dist/commonjs/shared/translation/hooks.js.map +1 -0
  85. package/dist/commonjs/shared/translation/index.js +52 -0
  86. package/dist/commonjs/shared/translation/index.js.map +1 -0
  87. package/dist/commonjs/shared/translation/model.js +15 -0
  88. package/dist/commonjs/shared/translation/model.js.map +1 -0
  89. package/dist/commonjs/shared/translation/types.js +13 -0
  90. package/dist/commonjs/shared/translation/types.js.map +1 -0
  91. package/dist/commonjs/types/types.d.js +2 -0
  92. package/dist/commonjs/types/types.d.js.map +1 -0
  93. package/dist/module/features/chatbot/components/Alternatives/Alternatives.js +54 -0
  94. package/dist/module/features/chatbot/components/Alternatives/Alternatives.js.map +1 -0
  95. package/dist/module/features/chatbot/components/Alternatives/HelpRequestOption.js +90 -0
  96. package/dist/module/features/chatbot/components/Alternatives/HelpRequestOption.js.map +1 -0
  97. package/dist/module/features/chatbot/components/ChatControls/ChatControls.js +91 -0
  98. package/dist/module/features/chatbot/components/ChatControls/ChatControls.js.map +1 -0
  99. package/dist/module/features/chatbot/components/ChatMessage/ChatMessage.js +21 -0
  100. package/dist/module/features/chatbot/components/ChatMessage/ChatMessage.js.map +1 -0
  101. package/dist/module/features/chatbot/components/ChatMessage/MessageLoader.js +50 -0
  102. package/dist/module/features/chatbot/components/ChatMessage/MessageLoader.js.map +1 -0
  103. package/dist/module/features/chatbot/components/ChatMessage/MessageTextToSpeech.js +82 -0
  104. package/dist/module/features/chatbot/components/ChatMessage/MessageTextToSpeech.js.map +1 -0
  105. package/dist/module/features/chatbot/components/ChatMessage/ReceivedMessage.js +81 -0
  106. package/dist/module/features/chatbot/components/ChatMessage/ReceivedMessage.js.map +1 -0
  107. package/dist/module/features/chatbot/components/ChatMessage/SentMessage.js +37 -0
  108. package/dist/module/features/chatbot/components/ChatMessage/SentMessage.js.map +1 -0
  109. package/dist/module/features/chatbot/components/ChatMessages/ChatbotMessages.js +123 -0
  110. package/dist/module/features/chatbot/components/ChatMessages/ChatbotMessages.js.map +1 -0
  111. package/dist/module/features/chatbot/components/Chatbot.js +63 -0
  112. package/dist/module/features/chatbot/components/Chatbot.js.map +1 -0
  113. package/dist/module/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.js +59 -0
  114. package/dist/module/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.js.map +1 -0
  115. package/dist/module/features/chatbot/constants.js +27 -0
  116. package/dist/module/features/chatbot/constants.js.map +1 -0
  117. package/dist/module/features/chatbot/helpers.js +7 -0
  118. package/dist/module/features/chatbot/helpers.js.map +1 -0
  119. package/dist/module/features/chatbot/index.js +7 -0
  120. package/dist/module/features/chatbot/index.js.map +1 -0
  121. package/dist/module/features/chatbot/model/api.js +13 -0
  122. package/dist/module/features/chatbot/model/api.js.map +1 -0
  123. package/dist/module/features/chatbot/model/model.js +239 -0
  124. package/dist/module/features/chatbot/model/model.js.map +1 -0
  125. package/dist/module/features/chatbot/model/t2s.js +99 -0
  126. package/dist/module/features/chatbot/model/t2s.js.map +1 -0
  127. package/dist/module/features/chatbot/model/translation.js +198 -0
  128. package/dist/module/features/chatbot/model/translation.js.map +1 -0
  129. package/dist/module/features/chatbot/types/api.types.js +2 -0
  130. package/dist/module/features/chatbot/types/api.types.js.map +1 -0
  131. package/dist/module/features/chatbot/types/model.types.js +8 -0
  132. package/dist/module/features/chatbot/types/model.types.js.map +1 -0
  133. package/dist/module/features/chatbot/types/t2s.types.js +9 -0
  134. package/dist/module/features/chatbot/types/t2s.types.js.map +1 -0
  135. package/dist/module/features/chatbot/types/translation.types.js +4 -0
  136. package/dist/module/features/chatbot/types/translation.types.js.map +1 -0
  137. package/dist/module/index.js +5 -0
  138. package/dist/module/index.js.map +1 -0
  139. package/dist/module/lib/createFeature/createFeature.js +22 -0
  140. package/dist/module/lib/createFeature/createFeature.js.map +1 -0
  141. package/dist/module/lib/effector/createControllerEffect.js +45 -0
  142. package/dist/module/lib/effector/createControllerEffect.js.map +1 -0
  143. package/dist/module/lib/effector/createEntityFieldStore.js +38 -0
  144. package/dist/module/lib/effector/createEntityFieldStore.js.map +1 -0
  145. package/dist/module/lib/effector/index.js +5 -0
  146. package/dist/module/lib/effector/index.js.map +1 -0
  147. package/dist/module/lib/helpers/helpers.js +4 -0
  148. package/dist/module/lib/helpers/helpers.js.map +1 -0
  149. package/dist/module/lib/localization/en.json +2 -0
  150. package/dist/module/lib/localization/gb.json +2 -0
  151. package/dist/module/lib/localization/sw.json +2 -0
  152. package/dist/module/shared/hooks/useDebounce.js +16 -0
  153. package/dist/module/shared/hooks/useDebounce.js.map +1 -0
  154. package/dist/module/shared/icons/ArrowRightIcon.js +22 -0
  155. package/dist/module/shared/icons/ArrowRightIcon.js.map +1 -0
  156. package/dist/module/shared/icons/ChatbotIcon.js +140 -0
  157. package/dist/module/shared/icons/ChatbotIcon.js.map +1 -0
  158. package/dist/module/shared/icons/CloseIcon.js +20 -0
  159. package/dist/module/shared/icons/CloseIcon.js.map +1 -0
  160. package/dist/module/shared/icons/GlobeIcon.js +22 -0
  161. package/dist/module/shared/icons/GlobeIcon.js.map +1 -0
  162. package/dist/module/shared/icons/PauseIcon.js +24 -0
  163. package/dist/module/shared/icons/PauseIcon.js.map +1 -0
  164. package/dist/module/shared/icons/PlayIcon.js +24 -0
  165. package/dist/module/shared/icons/PlayIcon.js.map +1 -0
  166. package/dist/module/shared/icons/SpeakerIcon.js +29 -0
  167. package/dist/module/shared/icons/SpeakerIcon.js.map +1 -0
  168. package/dist/module/shared/icons/icon.types.js +2 -0
  169. package/dist/module/shared/icons/icon.types.js.map +1 -0
  170. package/dist/module/shared/translation/constants.js +12 -0
  171. package/dist/module/shared/translation/constants.js.map +1 -0
  172. package/dist/module/shared/translation/helpers.js +24 -0
  173. package/dist/module/shared/translation/helpers.js.map +1 -0
  174. package/dist/module/shared/translation/hooks.js +22 -0
  175. package/dist/module/shared/translation/hooks.js.map +1 -0
  176. package/dist/module/shared/translation/index.js +7 -0
  177. package/dist/module/shared/translation/index.js.map +1 -0
  178. package/dist/module/shared/translation/model.js +11 -0
  179. package/dist/module/shared/translation/model.js.map +1 -0
  180. package/dist/module/shared/translation/types.js +9 -0
  181. package/dist/module/shared/translation/types.js.map +1 -0
  182. package/dist/module/types/types.d.js +2 -0
  183. package/dist/module/types/types.d.js.map +1 -0
  184. package/dist/typescript/commonjs/features/chatbot/components/Alternatives/Alternatives.d.ts +11 -0
  185. package/dist/typescript/commonjs/features/chatbot/components/Alternatives/Alternatives.d.ts.map +1 -0
  186. package/dist/typescript/commonjs/features/chatbot/components/Alternatives/HelpRequestOption.d.ts +9 -0
  187. package/dist/typescript/commonjs/features/chatbot/components/Alternatives/HelpRequestOption.d.ts.map +1 -0
  188. package/dist/typescript/commonjs/features/chatbot/components/ChatControls/ChatControls.d.ts +14 -0
  189. package/dist/typescript/commonjs/features/chatbot/components/ChatControls/ChatControls.d.ts.map +1 -0
  190. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ChatMessage.d.ts +17 -0
  191. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ChatMessage.d.ts.map +1 -0
  192. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageLoader.d.ts +3 -0
  193. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageLoader.d.ts.map +1 -0
  194. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageTextToSpeech.d.ts +12 -0
  195. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageTextToSpeech.d.ts.map +1 -0
  196. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts +4 -0
  197. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts.map +1 -0
  198. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/SentMessage.d.ts +4 -0
  199. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/SentMessage.d.ts.map +1 -0
  200. package/dist/typescript/commonjs/features/chatbot/components/ChatMessages/ChatbotMessages.d.ts +21 -0
  201. package/dist/typescript/commonjs/features/chatbot/components/ChatMessages/ChatbotMessages.d.ts.map +1 -0
  202. package/dist/typescript/commonjs/features/chatbot/components/Chatbot.d.ts +25 -0
  203. package/dist/typescript/commonjs/features/chatbot/components/Chatbot.d.ts.map +1 -0
  204. package/dist/typescript/commonjs/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.d.ts +9 -0
  205. package/dist/typescript/commonjs/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.d.ts.map +1 -0
  206. package/dist/typescript/commonjs/features/chatbot/constants.d.ts +21 -0
  207. package/dist/typescript/commonjs/features/chatbot/constants.d.ts.map +1 -0
  208. package/dist/typescript/commonjs/features/chatbot/helpers.d.ts +2 -0
  209. package/dist/typescript/commonjs/features/chatbot/helpers.d.ts.map +1 -0
  210. package/dist/typescript/commonjs/features/chatbot/index.d.ts +5 -0
  211. package/dist/typescript/commonjs/features/chatbot/index.d.ts.map +1 -0
  212. package/dist/typescript/commonjs/features/chatbot/model/api.d.ts +12 -0
  213. package/dist/typescript/commonjs/features/chatbot/model/api.d.ts.map +1 -0
  214. package/dist/typescript/commonjs/features/chatbot/model/model.d.ts +73 -0
  215. package/dist/typescript/commonjs/features/chatbot/model/model.d.ts.map +1 -0
  216. package/dist/typescript/commonjs/features/chatbot/model/t2s.d.ts +18 -0
  217. package/dist/typescript/commonjs/features/chatbot/model/t2s.d.ts.map +1 -0
  218. package/dist/typescript/commonjs/features/chatbot/model/translation.d.ts +22 -0
  219. package/dist/typescript/commonjs/features/chatbot/model/translation.d.ts.map +1 -0
  220. package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts +60 -0
  221. package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts.map +1 -0
  222. package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts +64 -0
  223. package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts.map +1 -0
  224. package/dist/typescript/commonjs/features/chatbot/types/t2s.types.d.ts +22 -0
  225. package/dist/typescript/commonjs/features/chatbot/types/t2s.types.d.ts.map +1 -0
  226. package/dist/typescript/commonjs/features/chatbot/types/translation.types.d.ts +23 -0
  227. package/dist/typescript/commonjs/features/chatbot/types/translation.types.d.ts.map +1 -0
  228. package/dist/typescript/commonjs/index.d.ts +4 -0
  229. package/dist/typescript/commonjs/index.d.ts.map +1 -0
  230. package/dist/typescript/commonjs/lib/createFeature/createFeature.d.ts +7 -0
  231. package/dist/typescript/commonjs/lib/createFeature/createFeature.d.ts.map +1 -0
  232. package/dist/typescript/commonjs/lib/effector/createControllerEffect.d.ts +16 -0
  233. package/dist/typescript/commonjs/lib/effector/createControllerEffect.d.ts.map +1 -0
  234. package/dist/typescript/commonjs/lib/effector/createEntityFieldStore.d.ts +16 -0
  235. package/dist/typescript/commonjs/lib/effector/createEntityFieldStore.d.ts.map +1 -0
  236. package/dist/typescript/commonjs/lib/effector/index.d.ts +3 -0
  237. package/dist/typescript/commonjs/lib/effector/index.d.ts.map +1 -0
  238. package/dist/typescript/commonjs/lib/helpers/helpers.d.ts +2 -0
  239. package/dist/typescript/commonjs/lib/helpers/helpers.d.ts.map +1 -0
  240. package/dist/typescript/commonjs/package.json +1 -0
  241. package/dist/typescript/commonjs/shared/hooks/useDebounce.d.ts +2 -0
  242. package/dist/typescript/commonjs/shared/hooks/useDebounce.d.ts.map +1 -0
  243. package/dist/typescript/commonjs/shared/icons/ArrowRightIcon.d.ts +4 -0
  244. package/dist/typescript/commonjs/shared/icons/ArrowRightIcon.d.ts.map +1 -0
  245. package/dist/typescript/commonjs/shared/icons/ChatbotIcon.d.ts +4 -0
  246. package/dist/typescript/commonjs/shared/icons/ChatbotIcon.d.ts.map +1 -0
  247. package/dist/typescript/commonjs/shared/icons/CloseIcon.d.ts +4 -0
  248. package/dist/typescript/commonjs/shared/icons/CloseIcon.d.ts.map +1 -0
  249. package/dist/typescript/commonjs/shared/icons/GlobeIcon.d.ts +4 -0
  250. package/dist/typescript/commonjs/shared/icons/GlobeIcon.d.ts.map +1 -0
  251. package/dist/typescript/commonjs/shared/icons/PauseIcon.d.ts +4 -0
  252. package/dist/typescript/commonjs/shared/icons/PauseIcon.d.ts.map +1 -0
  253. package/dist/typescript/commonjs/shared/icons/PlayIcon.d.ts +4 -0
  254. package/dist/typescript/commonjs/shared/icons/PlayIcon.d.ts.map +1 -0
  255. package/dist/typescript/commonjs/shared/icons/SpeakerIcon.d.ts +4 -0
  256. package/dist/typescript/commonjs/shared/icons/SpeakerIcon.d.ts.map +1 -0
  257. package/dist/typescript/commonjs/shared/icons/icon.types.d.ts +9 -0
  258. package/dist/typescript/commonjs/shared/icons/icon.types.d.ts.map +1 -0
  259. package/dist/typescript/commonjs/shared/translation/constants.d.ts +6 -0
  260. package/dist/typescript/commonjs/shared/translation/constants.d.ts.map +1 -0
  261. package/dist/typescript/commonjs/shared/translation/helpers.d.ts +6 -0
  262. package/dist/typescript/commonjs/shared/translation/helpers.d.ts.map +1 -0
  263. package/dist/typescript/commonjs/shared/translation/hooks.d.ts +5 -0
  264. package/dist/typescript/commonjs/shared/translation/hooks.d.ts.map +1 -0
  265. package/dist/typescript/commonjs/shared/translation/index.d.ts +6 -0
  266. package/dist/typescript/commonjs/shared/translation/index.d.ts.map +1 -0
  267. package/dist/typescript/commonjs/shared/translation/model.d.ts +5 -0
  268. package/dist/typescript/commonjs/shared/translation/model.d.ts.map +1 -0
  269. package/dist/typescript/commonjs/shared/translation/types.d.ts +8 -0
  270. package/dist/typescript/commonjs/shared/translation/types.d.ts.map +1 -0
  271. package/dist/typescript/module/features/chatbot/components/Alternatives/Alternatives.d.ts +11 -0
  272. package/dist/typescript/module/features/chatbot/components/Alternatives/Alternatives.d.ts.map +1 -0
  273. package/dist/typescript/module/features/chatbot/components/Alternatives/HelpRequestOption.d.ts +9 -0
  274. package/dist/typescript/module/features/chatbot/components/Alternatives/HelpRequestOption.d.ts.map +1 -0
  275. package/dist/typescript/module/features/chatbot/components/ChatControls/ChatControls.d.ts +14 -0
  276. package/dist/typescript/module/features/chatbot/components/ChatControls/ChatControls.d.ts.map +1 -0
  277. package/dist/typescript/module/features/chatbot/components/ChatMessage/ChatMessage.d.ts +17 -0
  278. package/dist/typescript/module/features/chatbot/components/ChatMessage/ChatMessage.d.ts.map +1 -0
  279. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageLoader.d.ts +3 -0
  280. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageLoader.d.ts.map +1 -0
  281. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageTextToSpeech.d.ts +12 -0
  282. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageTextToSpeech.d.ts.map +1 -0
  283. package/dist/typescript/module/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts +4 -0
  284. package/dist/typescript/module/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts.map +1 -0
  285. package/dist/typescript/module/features/chatbot/components/ChatMessage/SentMessage.d.ts +4 -0
  286. package/dist/typescript/module/features/chatbot/components/ChatMessage/SentMessage.d.ts.map +1 -0
  287. package/dist/typescript/module/features/chatbot/components/ChatMessages/ChatbotMessages.d.ts +21 -0
  288. package/dist/typescript/module/features/chatbot/components/ChatMessages/ChatbotMessages.d.ts.map +1 -0
  289. package/dist/typescript/module/features/chatbot/components/Chatbot.d.ts +25 -0
  290. package/dist/typescript/module/features/chatbot/components/Chatbot.d.ts.map +1 -0
  291. package/dist/typescript/module/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.d.ts +9 -0
  292. package/dist/typescript/module/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.d.ts.map +1 -0
  293. package/dist/typescript/module/features/chatbot/constants.d.ts +21 -0
  294. package/dist/typescript/module/features/chatbot/constants.d.ts.map +1 -0
  295. package/dist/typescript/module/features/chatbot/helpers.d.ts +2 -0
  296. package/dist/typescript/module/features/chatbot/helpers.d.ts.map +1 -0
  297. package/dist/typescript/module/features/chatbot/index.d.ts +5 -0
  298. package/dist/typescript/module/features/chatbot/index.d.ts.map +1 -0
  299. package/dist/typescript/module/features/chatbot/model/api.d.ts +12 -0
  300. package/dist/typescript/module/features/chatbot/model/api.d.ts.map +1 -0
  301. package/dist/typescript/module/features/chatbot/model/model.d.ts +73 -0
  302. package/dist/typescript/module/features/chatbot/model/model.d.ts.map +1 -0
  303. package/dist/typescript/module/features/chatbot/model/t2s.d.ts +18 -0
  304. package/dist/typescript/module/features/chatbot/model/t2s.d.ts.map +1 -0
  305. package/dist/typescript/module/features/chatbot/model/translation.d.ts +22 -0
  306. package/dist/typescript/module/features/chatbot/model/translation.d.ts.map +1 -0
  307. package/dist/typescript/module/features/chatbot/types/api.types.d.ts +60 -0
  308. package/dist/typescript/module/features/chatbot/types/api.types.d.ts.map +1 -0
  309. package/dist/typescript/module/features/chatbot/types/model.types.d.ts +64 -0
  310. package/dist/typescript/module/features/chatbot/types/model.types.d.ts.map +1 -0
  311. package/dist/typescript/module/features/chatbot/types/t2s.types.d.ts +22 -0
  312. package/dist/typescript/module/features/chatbot/types/t2s.types.d.ts.map +1 -0
  313. package/dist/typescript/module/features/chatbot/types/translation.types.d.ts +23 -0
  314. package/dist/typescript/module/features/chatbot/types/translation.types.d.ts.map +1 -0
  315. package/dist/typescript/module/index.d.ts +4 -0
  316. package/dist/typescript/module/index.d.ts.map +1 -0
  317. package/dist/typescript/module/lib/createFeature/createFeature.d.ts +7 -0
  318. package/dist/typescript/module/lib/createFeature/createFeature.d.ts.map +1 -0
  319. package/dist/typescript/module/lib/effector/createControllerEffect.d.ts +16 -0
  320. package/dist/typescript/module/lib/effector/createControllerEffect.d.ts.map +1 -0
  321. package/dist/typescript/module/lib/effector/createEntityFieldStore.d.ts +16 -0
  322. package/dist/typescript/module/lib/effector/createEntityFieldStore.d.ts.map +1 -0
  323. package/dist/typescript/module/lib/effector/index.d.ts +3 -0
  324. package/dist/typescript/module/lib/effector/index.d.ts.map +1 -0
  325. package/dist/typescript/module/lib/helpers/helpers.d.ts +2 -0
  326. package/dist/typescript/module/lib/helpers/helpers.d.ts.map +1 -0
  327. package/dist/typescript/module/package.json +1 -0
  328. package/dist/typescript/module/shared/hooks/useDebounce.d.ts +2 -0
  329. package/dist/typescript/module/shared/hooks/useDebounce.d.ts.map +1 -0
  330. package/dist/typescript/module/shared/icons/ArrowRightIcon.d.ts +4 -0
  331. package/dist/typescript/module/shared/icons/ArrowRightIcon.d.ts.map +1 -0
  332. package/dist/typescript/module/shared/icons/ChatbotIcon.d.ts +4 -0
  333. package/dist/typescript/module/shared/icons/ChatbotIcon.d.ts.map +1 -0
  334. package/dist/typescript/module/shared/icons/CloseIcon.d.ts +4 -0
  335. package/dist/typescript/module/shared/icons/CloseIcon.d.ts.map +1 -0
  336. package/dist/typescript/module/shared/icons/GlobeIcon.d.ts +4 -0
  337. package/dist/typescript/module/shared/icons/GlobeIcon.d.ts.map +1 -0
  338. package/dist/typescript/module/shared/icons/PauseIcon.d.ts +4 -0
  339. package/dist/typescript/module/shared/icons/PauseIcon.d.ts.map +1 -0
  340. package/dist/typescript/module/shared/icons/PlayIcon.d.ts +4 -0
  341. package/dist/typescript/module/shared/icons/PlayIcon.d.ts.map +1 -0
  342. package/dist/typescript/module/shared/icons/SpeakerIcon.d.ts +4 -0
  343. package/dist/typescript/module/shared/icons/SpeakerIcon.d.ts.map +1 -0
  344. package/dist/typescript/module/shared/icons/icon.types.d.ts +9 -0
  345. package/dist/typescript/module/shared/icons/icon.types.d.ts.map +1 -0
  346. package/dist/typescript/module/shared/translation/constants.d.ts +6 -0
  347. package/dist/typescript/module/shared/translation/constants.d.ts.map +1 -0
  348. package/dist/typescript/module/shared/translation/helpers.d.ts +6 -0
  349. package/dist/typescript/module/shared/translation/helpers.d.ts.map +1 -0
  350. package/dist/typescript/module/shared/translation/hooks.d.ts +5 -0
  351. package/dist/typescript/module/shared/translation/hooks.d.ts.map +1 -0
  352. package/dist/typescript/module/shared/translation/index.d.ts +6 -0
  353. package/dist/typescript/module/shared/translation/index.d.ts.map +1 -0
  354. package/dist/typescript/module/shared/translation/model.d.ts +5 -0
  355. package/dist/typescript/module/shared/translation/model.d.ts.map +1 -0
  356. package/dist/typescript/module/shared/translation/types.d.ts +8 -0
  357. package/dist/typescript/module/shared/translation/types.d.ts.map +1 -0
  358. package/package.json +73 -0
  359. package/src/features/chatbot/components/Alternatives/Alternatives.tsx +64 -0
  360. package/src/features/chatbot/components/Alternatives/HelpRequestOption.tsx +92 -0
  361. package/src/features/chatbot/components/ChatControls/ChatControls.tsx +103 -0
  362. package/src/features/chatbot/components/ChatMessage/ChatMessage.tsx +28 -0
  363. package/src/features/chatbot/components/ChatMessage/MessageLoader.tsx +42 -0
  364. package/src/features/chatbot/components/ChatMessage/MessageTextToSpeech.tsx +78 -0
  365. package/src/features/chatbot/components/ChatMessage/ReceivedMessage.tsx +73 -0
  366. package/src/features/chatbot/components/ChatMessage/SentMessage.tsx +31 -0
  367. package/src/features/chatbot/components/ChatMessages/ChatbotMessages.tsx +148 -0
  368. package/src/features/chatbot/components/Chatbot.tsx +92 -0
  369. package/src/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.tsx +77 -0
  370. package/src/features/chatbot/constants.ts +30 -0
  371. package/src/features/chatbot/helpers.ts +4 -0
  372. package/src/features/chatbot/index.ts +4 -0
  373. package/src/features/chatbot/model/api.ts +28 -0
  374. package/src/features/chatbot/model/model.ts +277 -0
  375. package/src/features/chatbot/model/t2s.ts +107 -0
  376. package/src/features/chatbot/model/translation.ts +231 -0
  377. package/src/features/chatbot/types/api.types.ts +59 -0
  378. package/src/features/chatbot/types/model.types.ts +73 -0
  379. package/src/features/chatbot/types/t2s.types.ts +24 -0
  380. package/src/features/chatbot/types/translation.types.ts +23 -0
  381. package/src/index.ts +3 -0
  382. package/src/lib/createFeature/createFeature.tsx +21 -0
  383. package/src/lib/effector/createControllerEffect.ts +66 -0
  384. package/src/lib/effector/createEntityFieldStore.ts +43 -0
  385. package/src/lib/effector/index.ts +2 -0
  386. package/src/lib/helpers/helpers.ts +2 -0
  387. package/src/lib/localization/en.json +2 -0
  388. package/src/lib/localization/gb.json +2 -0
  389. package/src/lib/localization/sw.json +2 -0
  390. package/src/shared/hooks/useDebounce.ts +17 -0
  391. package/src/shared/icons/ArrowRightIcon.tsx +14 -0
  392. package/src/shared/icons/ChatbotIcon.tsx +109 -0
  393. package/src/shared/icons/CloseIcon.tsx +12 -0
  394. package/src/shared/icons/GlobeIcon.tsx +14 -0
  395. package/src/shared/icons/PauseIcon.tsx +16 -0
  396. package/src/shared/icons/PlayIcon.tsx +16 -0
  397. package/src/shared/icons/SpeakerIcon.tsx +22 -0
  398. package/src/shared/icons/icon.types.ts +8 -0
  399. package/src/shared/translation/constants.ts +10 -0
  400. package/src/shared/translation/helpers.ts +34 -0
  401. package/src/shared/translation/hooks.ts +28 -0
  402. package/src/shared/translation/index.ts +5 -0
  403. package/src/shared/translation/model.ts +15 -0
  404. package/src/shared/translation/types.ts +9 -0
  405. package/src/types/types.d.ts +4 -0
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+
3
+ import { attach, createEvent, restore, sample } from 'effector';
4
+ import { createControllerEffect, createEntityFieldStore } from "../../../lib/effector/index.js";
5
+ import { generateRandomId } from "../../../lib/helpers/helpers.js";
6
+ import { ChatbotAPI } from "./api.js";
7
+ import { ChatbotTranslation } from "./translation.js";
8
+ import { ChatTextToSpeech } from "./t2s.js";
9
+ export class ChatbotModel {
10
+ resetAlternatives = createEvent();
11
+ setAlternatives = createEvent();
12
+ setIsOpen = createEvent();
13
+ toggleOpen = createEvent();
14
+ $isOpen = restore(this.setIsOpen, false).on(this.toggleOpen, isOpen => !isOpen);
15
+
16
+ // separate messages and alternatives class?
17
+ removeLastMessage = createEvent();
18
+ setLastMessageIds = createEvent();
19
+ $lastMessageIds = restore(this.setLastMessageIds, null);
20
+ setScrollActive = createEvent();
21
+ $isScrollActive = restore(this.setScrollActive, false);
22
+ constructor({
23
+ credits,
24
+ api,
25
+ messages
26
+ }) {
27
+ this.api = new ChatbotAPI(api);
28
+ this.defaultMessages = messages;
29
+ this.credits = credits;
30
+ this.$alternatives = restore(this.api.getAlternativesFx.doneData, null).on(this.setAlternatives, (_, payload) => payload).reset(this.resetAlternatives);
31
+
32
+ // TODO: do not pass this, just what you need
33
+ this.translation = new ChatbotTranslation(this);
34
+ this.t2s = new ChatTextToSpeech(this);
35
+ this.sendHelpRequestFx = this.createSendHelpRequestFx();
36
+ this.initChatReplyWatcher();
37
+ }
38
+ messages = createEntityFieldStore({
39
+ mapper: ({
40
+ entityId,
41
+ fieldId,
42
+ messages
43
+ }) => ({
44
+ entityId,
45
+ fieldId,
46
+ data: {
47
+ messages
48
+ }
49
+ })
50
+ });
51
+ threadIds = createEntityFieldStore({
52
+ mapper: ({
53
+ entityId,
54
+ fieldId,
55
+ threadId
56
+ }) => ({
57
+ entityId,
58
+ fieldId,
59
+ data: {
60
+ threadId
61
+ }
62
+ })
63
+ });
64
+ availableChats = createEntityFieldStore({
65
+ mapper: ({
66
+ entityId,
67
+ fieldId,
68
+ isAvailable = true
69
+ }) => ({
70
+ entityId,
71
+ fieldId,
72
+ data: {
73
+ isAvailable
74
+ }
75
+ })
76
+ });
77
+ createSendHelpRequestFx() {
78
+ return attach({
79
+ source: [this.credits.$assignmentId, this.credits.$exerciseId, this.messages.$state, this.translation.$isTranslated],
80
+ mapParams: (params, [assignmentId, exerciseId, messages, isTranslated]) => ({
81
+ ...params,
82
+ assignmentId,
83
+ exerciseId,
84
+ messages,
85
+ isTranslated
86
+ }),
87
+ effect: createControllerEffect(async ({
88
+ payload,
89
+ message = '',
90
+ translationTargetLanguage,
91
+ translatedMessage,
92
+ assignmentId,
93
+ exerciseId,
94
+ messages,
95
+ isTranslated
96
+ }) => {
97
+ this.setLastMessageIds({
98
+ entityId: assignmentId,
99
+ fieldId: exerciseId
100
+ });
101
+ const currentMessages = messages[assignmentId]?.[exerciseId]?.messages || [];
102
+ this.messages.setField({
103
+ entityId: assignmentId,
104
+ fieldId: exerciseId,
105
+ messages: [...currentMessages, {
106
+ id: generateRandomId(),
107
+ message: message ?? '',
108
+ translatedMessage,
109
+ isOwnMessage: true,
110
+ threadId: payload.threadId ?? '',
111
+ options: []
112
+ }]
113
+ });
114
+ const response = await this.api.postMessageFx(payload);
115
+ if (isTranslated) {
116
+ return await this.translation.translateMessageFx({
117
+ targetLanguage: translationTargetLanguage,
118
+ message: {
119
+ ...response,
120
+ id: generateRandomId(),
121
+ isOwnMessage: false
122
+ }
123
+ });
124
+ }
125
+ return response;
126
+ })
127
+ });
128
+ }
129
+ initChatReplyWatcher() {
130
+ sample({
131
+ clock: this.sendHelpRequestFx.doneData,
132
+ source: [this.credits.$assignmentId, this.credits.$exerciseId, this.messages.$state],
133
+ fn: ([assignmentId, exerciseId, messages], response) => ({
134
+ assignmentId,
135
+ exerciseId,
136
+ messages: messages[assignmentId]?.[exerciseId]?.messages || [],
137
+ response
138
+ })
139
+ }).watch(({
140
+ assignmentId,
141
+ exerciseId,
142
+ messages,
143
+ response
144
+ }) => {
145
+ this.messages.setField({
146
+ entityId: assignmentId,
147
+ fieldId: exerciseId,
148
+ messages: [...messages, {
149
+ id: generateRandomId(),
150
+ message: response.message,
151
+ isOwnMessage: false,
152
+ threadId: response.threadId,
153
+ options: response.options,
154
+ translatedMessage: 'translatedMessage' in response ? response.translatedMessage : undefined
155
+ }]
156
+ });
157
+ this.threadIds.setField({
158
+ entityId: assignmentId,
159
+ fieldId: exerciseId,
160
+ threadId: response.threadId
161
+ });
162
+ });
163
+ sample({
164
+ clock: this.sendHelpRequestFx.fail,
165
+ source: [this.credits.$assignmentId, this.credits.$exerciseId, this.messages.$state],
166
+ fn: ([assignmentId, exerciseId, messages]) => ({
167
+ assignmentId,
168
+ exerciseId,
169
+ messages: messages[assignmentId]?.[exerciseId]?.messages || []
170
+ }),
171
+ filter: (_, {
172
+ error
173
+ }) => error.message !== 'Request aborted manually'
174
+ }).watch(({
175
+ assignmentId,
176
+ exerciseId,
177
+ messages
178
+ }) => {
179
+ this.messages.setField({
180
+ entityId: assignmentId,
181
+ fieldId: exerciseId,
182
+ messages: [...messages, this.defaultMessages.error]
183
+ });
184
+ });
185
+ sample({
186
+ clock: this.removeLastMessage,
187
+ source: [this.$lastMessageIds, this.messages.$state],
188
+ fn: ([lastMessageIds, messages]) => ({
189
+ lastMessageIds,
190
+ messages
191
+ })
192
+ }).watch(({
193
+ lastMessageIds,
194
+ messages
195
+ }) => {
196
+ if (!lastMessageIds) return;
197
+ const updatedMessages = [...messages[lastMessageIds.entityId][lastMessageIds.fieldId].messages];
198
+ if (updatedMessages) updatedMessages.pop();
199
+ this.messages.setField({
200
+ entityId: lastMessageIds.entityId,
201
+ fieldId: lastMessageIds.fieldId,
202
+ messages: updatedMessages
203
+ });
204
+ });
205
+ }
206
+ startConversation() {
207
+ const assignmentId = this.credits.$assignmentId.getState();
208
+ const exerciseId = this.credits.$exerciseId.getState();
209
+ const messages = this.messages.$state.getState()[assignmentId]?.[exerciseId]?.messages ?? [];
210
+ if (messages.length) return;
211
+ this.messages.setField({
212
+ entityId: assignmentId,
213
+ fieldId: exerciseId,
214
+ messages: [this.defaultMessages.start]
215
+ });
216
+ this.availableChats.setField({
217
+ entityId: assignmentId,
218
+ fieldId: exerciseId,
219
+ isAvailable: true
220
+ });
221
+ }
222
+ setHintMessage({
223
+ entityId,
224
+ fieldId,
225
+ ...message
226
+ }) {
227
+ const messages = this.messages.$state.getState()?.[entityId]?.[fieldId]?.messages;
228
+ if (messages?.length > 1) return;
229
+ this.messages.setField({
230
+ entityId,
231
+ fieldId,
232
+ messages: [{
233
+ ...message,
234
+ options: this.$alternatives.getState()?.options.hints ?? message.options
235
+ }]
236
+ });
237
+ }
238
+ }
239
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["attach","createEvent","restore","sample","createControllerEffect","createEntityFieldStore","generateRandomId","ChatbotAPI","ChatbotTranslation","ChatTextToSpeech","ChatbotModel","resetAlternatives","setAlternatives","setIsOpen","toggleOpen","$isOpen","on","isOpen","removeLastMessage","setLastMessageIds","$lastMessageIds","setScrollActive","$isScrollActive","constructor","credits","api","messages","defaultMessages","$alternatives","getAlternativesFx","doneData","_","payload","reset","translation","t2s","sendHelpRequestFx","createSendHelpRequestFx","initChatReplyWatcher","mapper","entityId","fieldId","data","threadIds","threadId","availableChats","isAvailable","source","$assignmentId","$exerciseId","$state","$isTranslated","mapParams","params","assignmentId","exerciseId","isTranslated","effect","message","translationTargetLanguage","translatedMessage","currentMessages","setField","id","isOwnMessage","options","response","postMessageFx","translateMessageFx","targetLanguage","clock","fn","watch","undefined","fail","filter","error","lastMessageIds","updatedMessages","pop","startConversation","getState","length","start","setHintMessage","hints"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/model.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ import { restore, createEvent } from 'effector';
4
+ import { AUDIO_CONFIG, DEFAULT_VOICE } from "../constants.js";
5
+ import { AudioStatus } from "../types/t2s.types.js";
6
+ export class ChatTextToSpeech {
7
+ audioCache = {};
8
+ audioProvider = null;
9
+ setCurrentPlayingId = createEvent();
10
+ $currentPlayingId = restore(this.setCurrentPlayingId, null);
11
+ setStatus = createEvent();
12
+ $status = restore(this.setStatus, AudioStatus.STOPPED);
13
+ constructor(chatbotModel) {
14
+ this.model = chatbotModel;
15
+ this.model.$isOpen.updates.watch(isOpen => {
16
+ if (!isOpen) this.reset();
17
+ });
18
+ }
19
+ setAudioProvider(audioProvider) {
20
+ this.audioProvider = audioProvider;
21
+ }
22
+ getCacheKey = (messageId, isTranslated) => {
23
+ return `${messageId}-${isTranslated ? 'translated' : 'original'}`;
24
+ };
25
+ async play({
26
+ text,
27
+ messageId,
28
+ isTranslated,
29
+ config
30
+ }) {
31
+ if (!this.audioProvider) throw new Error('Audio provider is not set. Use setAudioProvider.');
32
+ try {
33
+ const status = this.$status.getState();
34
+ const playingId = this.$currentPlayingId.getState();
35
+ const isPlaying = status === AudioStatus.PLAYING;
36
+ const isPaused = status === AudioStatus.PAUSED;
37
+ const isCurrentMessage = messageId === playingId;
38
+ if (isPlaying && isCurrentMessage) {
39
+ this.audioProvider.pause();
40
+ this.setStatus(AudioStatus.PAUSED);
41
+ return;
42
+ }
43
+ if (isPaused && isCurrentMessage) {
44
+ this.audioProvider.resume();
45
+ this.setStatus(AudioStatus.PLAYING);
46
+ return;
47
+ }
48
+ if (messageId && !isCurrentMessage) {
49
+ this.audioProvider.stop();
50
+ }
51
+ const cacheKey = this.getCacheKey(messageId, isTranslated);
52
+ let audioPath = this.audioCache[cacheKey];
53
+ this.setCurrentPlayingId(messageId);
54
+ if (!audioPath) {
55
+ const response = await this.model.api.textToSpeechTextFx({
56
+ input: {
57
+ text
58
+ },
59
+ voice: config?.voice ?? DEFAULT_VOICE,
60
+ audioConfig: config?.audioConfig ?? AUDIO_CONFIG
61
+ });
62
+
63
+ // Response might be different type based on provided AUDIO_CONFIG
64
+ if (typeof response === 'string') {
65
+ audioPath = `data:audio/mpeg;base64,${response}`;
66
+ } else {
67
+ audioPath = response?.audioContent ?? '';
68
+ }
69
+ this.audioCache[cacheKey] = audioPath;
70
+ }
71
+ this.setStatus(AudioStatus.PLAYING);
72
+ await this.audioProvider.play(audioPath, () => {
73
+ this.setStatus(AudioStatus.STOPPED);
74
+ this.setCurrentPlayingId(null);
75
+ });
76
+ } catch (error) {
77
+ this.reset();
78
+ console.error('Error playing text-to-speech: ', error);
79
+ }
80
+ }
81
+ stop() {
82
+ if (!this.audioProvider) throw new Error('Audio provider is not set. Use setAudioProvider.');
83
+ this.audioProvider.stop();
84
+ }
85
+
86
+ // reset should also do stop(), add watcher to model to not write it in repos
87
+ // chatbotModel.$isOpen.updates.watch((isOpen) => {
88
+ // if (!isOpen) {
89
+ // chatbotModel.t2s.stop();
90
+ // chatbotModel.t2s.reset();
91
+ // }
92
+
93
+ reset() {
94
+ this.stop();
95
+ this.setStatus(AudioStatus.STOPPED);
96
+ this.setCurrentPlayingId(null);
97
+ }
98
+ }
99
+ //# sourceMappingURL=t2s.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["restore","createEvent","AUDIO_CONFIG","DEFAULT_VOICE","AudioStatus","ChatTextToSpeech","audioCache","audioProvider","setCurrentPlayingId","$currentPlayingId","setStatus","$status","STOPPED","constructor","chatbotModel","model","$isOpen","updates","watch","isOpen","reset","setAudioProvider","getCacheKey","messageId","isTranslated","play","text","config","Error","status","getState","playingId","isPlaying","PLAYING","isPaused","PAUSED","isCurrentMessage","pause","resume","stop","cacheKey","audioPath","response","api","textToSpeechTextFx","input","voice","audioConfig","audioContent","error","console"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/t2s.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+
3
+ import { createEvent, restore, attach, createEffect, sample } from 'effector';
4
+ import { decodeHTMLEntities } from "../helpers.js";
5
+ export class ChatbotTranslation {
6
+ setIsTranslated = createEvent();
7
+ $isTranslated = restore(this.setIsTranslated, false);
8
+ constructor(chatbotModel) {
9
+ this.model = chatbotModel;
10
+ this.translateAlternativesFx = this.createTranslateAlternativesEffect();
11
+ this.translateMessageFx = this.createTranslateMessageEffect();
12
+ this.translateBatchFx = this.createTranslateBatchEffect();
13
+ this.initTranslationSamples();
14
+ }
15
+ shouldSkipTranslation(messages) {
16
+ if (this.$isTranslated.getState()) {
17
+ this.setIsTranslated(false);
18
+ return true;
19
+ }
20
+ const allTranslated = messages.every(message => message.translatedMessage);
21
+ if (allTranslated) {
22
+ this.setIsTranslated(true);
23
+ return true;
24
+ }
25
+ return false;
26
+ }
27
+ initTranslationSamples() {
28
+ sample({
29
+ clock: this.translateBatchFx.doneData,
30
+ source: [this.model.credits.$assignmentId, this.model.credits.$exerciseId],
31
+ fn: ([assignmentId, exerciseId], translatedMessages) => ({
32
+ assignmentId,
33
+ exerciseId,
34
+ translatedMessages
35
+ })
36
+ }).watch(({
37
+ assignmentId,
38
+ exerciseId,
39
+ translatedMessages
40
+ }) => {
41
+ this.model.messages.setField({
42
+ entityId: assignmentId,
43
+ fieldId: exerciseId,
44
+ messages: translatedMessages
45
+ });
46
+ });
47
+ }
48
+ createTranslateAlternativesEffect() {
49
+ return attach({
50
+ source: [this.model.$alternatives],
51
+ mapParams: (params, [alternatives]) => ({
52
+ params,
53
+ alternatives
54
+ }),
55
+ effect: createEffect(async ({
56
+ alternatives,
57
+ params
58
+ }) => {
59
+ const hintAlternatives = alternatives?.options.hints ?? [];
60
+ const defaultAlternatives = alternatives?.options.default ?? [];
61
+ const translatedAlternatives = {
62
+ ...alternatives
63
+ };
64
+ if (hintAlternatives.length) {
65
+ const hintText = hintAlternatives.map(({
66
+ text
67
+ }) => text);
68
+ const response = await this.model.api.translateTextFx({
69
+ text: hintText,
70
+ targetLanguage: params.targetLanguage
71
+ });
72
+ if (translatedAlternatives.options) {
73
+ translatedAlternatives.options.hints = hintAlternatives.map((alternative, index) => ({
74
+ ...alternative,
75
+ translatedMessage: decodeHTMLEntities(response.data.translations[index].translatedText)
76
+ }));
77
+ }
78
+ }
79
+ if (defaultAlternatives.length) {
80
+ const defaultText = defaultAlternatives.map(({
81
+ text
82
+ }) => text);
83
+ const response = await this.model.api.translateTextFx({
84
+ text: defaultText,
85
+ targetLanguage: params.targetLanguage
86
+ });
87
+ if (translatedAlternatives.options) {
88
+ translatedAlternatives.options.default = defaultAlternatives.map((alternative, index) => ({
89
+ ...alternative,
90
+ translatedText: decodeHTMLEntities(response.data.translations[index].translatedText)
91
+ }));
92
+ }
93
+ }
94
+ return translatedAlternatives;
95
+ })
96
+ });
97
+ }
98
+ createTranslateMessageEffect() {
99
+ return createEffect(async ({
100
+ message,
101
+ targetLanguage
102
+ }) => {
103
+ const optionsText = message.options.map(({
104
+ text
105
+ }) => text);
106
+ const response = await this.model.api.translateTextFx({
107
+ text: [message.message, ...optionsText],
108
+ targetLanguage
109
+ });
110
+ const translatedOptions = response.data.translations.slice(1);
111
+ const optionsCopy = [...message.options];
112
+ const newOptions = optionsCopy.map((option, index) => ({
113
+ ...option,
114
+ translatedText: decodeHTMLEntities(translatedOptions[index].translatedText)
115
+ }));
116
+ return {
117
+ ...message,
118
+ translatedMessage: decodeHTMLEntities(response.data.translations[0].translatedText),
119
+ options: newOptions
120
+ };
121
+ });
122
+ }
123
+ createTranslateBatchEffect() {
124
+ return attach({
125
+ source: [this.model.credits.$assignmentId, this.model.credits.$exerciseId, this.model.messages.$state],
126
+ mapParams: (params, [assignmentId, exerciseId, messages]) => ({
127
+ params,
128
+ assignmentId,
129
+ exerciseId,
130
+ messages
131
+ }),
132
+ effect: createEffect(async ({
133
+ messages,
134
+ assignmentId,
135
+ exerciseId,
136
+ params
137
+ }) => {
138
+ const currentMessages = messages[assignmentId]?.[exerciseId]?.messages ?? [];
139
+ if (this.shouldSkipTranslation(currentMessages)) {
140
+ return currentMessages;
141
+ }
142
+ const messagesText = currentMessages.map(({
143
+ message
144
+ }) => message);
145
+ const response = await this.model.api.translateTextFx({
146
+ text: messagesText,
147
+ targetLanguage: params.targetLanguage
148
+ });
149
+ const lastMessage = currentMessages.at(-1);
150
+ const lastMessageTranslatedOptions = lastMessage ? await this.translateMessageOptions(lastMessage, params.targetLanguage) : undefined;
151
+ const errorMessageTranslationResponse = await this.model.api.translateTextFx({
152
+ text: [this.model.defaultMessages.error.message],
153
+ targetLanguage: params.targetLanguage
154
+ });
155
+ this.model.defaultMessages.error.translatedMessage = decodeHTMLEntities(errorMessageTranslationResponse.data.translations[0].translatedText);
156
+
157
+ // TODO: move this AFTER state update in sample and remove initTranslationSamples it is not needed
158
+ // TODO: maybe just one request to translate everything
159
+ this.setIsTranslated(true);
160
+ const translatedMessages = response.data.translations.map(({
161
+ translatedText
162
+ }) => translatedText);
163
+ return currentMessages.map((message, index) => {
164
+ const isLastMessage = index === currentMessages.length - 1;
165
+ return {
166
+ ...message,
167
+ options: isLastMessage ? lastMessageTranslatedOptions : message.options,
168
+ translatedMessage: decodeHTMLEntities(translatedMessages[index])
169
+ };
170
+ });
171
+ })
172
+ });
173
+ }
174
+ async translateMessageOptions(message, targetLanguage) {
175
+ if (!message?.options?.length) {
176
+ const translatedAlternatives = await this.translateAlternativesFx({
177
+ targetLanguage
178
+ });
179
+ this.model.setAlternatives(translatedAlternatives);
180
+ return;
181
+ }
182
+ const optionsText = message.options.map(({
183
+ text
184
+ }) => text);
185
+ const response = await this.model.api.translateTextFx({
186
+ text: optionsText,
187
+ targetLanguage
188
+ });
189
+ return message.options.map((option, index) => ({
190
+ ...option,
191
+ translatedText: decodeHTMLEntities(response.data.translations[index].translatedText)
192
+ }));
193
+ }
194
+ reset() {
195
+ this.setIsTranslated(false);
196
+ }
197
+ }
198
+ //# sourceMappingURL=translation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createEvent","restore","attach","createEffect","sample","decodeHTMLEntities","ChatbotTranslation","setIsTranslated","$isTranslated","constructor","chatbotModel","model","translateAlternativesFx","createTranslateAlternativesEffect","translateMessageFx","createTranslateMessageEffect","translateBatchFx","createTranslateBatchEffect","initTranslationSamples","shouldSkipTranslation","messages","getState","allTranslated","every","message","translatedMessage","clock","doneData","source","credits","$assignmentId","$exerciseId","fn","assignmentId","exerciseId","translatedMessages","watch","setField","entityId","fieldId","$alternatives","mapParams","params","alternatives","effect","hintAlternatives","options","hints","defaultAlternatives","default","translatedAlternatives","length","hintText","map","text","response","api","translateTextFx","targetLanguage","alternative","index","data","translations","translatedText","defaultText","optionsText","translatedOptions","slice","optionsCopy","newOptions","option","$state","currentMessages","messagesText","lastMessage","at","lastMessageTranslatedOptions","translateMessageOptions","undefined","errorMessageTranslationResponse","defaultMessages","error","isLastMessage","setAlternatives","reset"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/translation.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,OAAO,EAAEC,MAAM,EAAEC,YAAY,EAAeC,MAAM,QAAQ,UAAU;AAU1F,SAASC,kBAAkB,QAAQ,eAAY;AAE/C,OAAO,MAAMC,kBAAkB,CAAC;EAGnBC,eAAe,GAAGP,WAAW,CAAU,CAAC;EACxCQ,aAAa,GAAGP,OAAO,CAAC,IAAI,CAACM,eAAe,EAAE,KAAK,CAAC;EAS7DE,WAAWA,CAACC,YAA0B,EAAE;IACpC,IAAI,CAACC,KAAK,GAAGD,YAAY;IAEzB,IAAI,CAACE,uBAAuB,GAAG,IAAI,CAACC,iCAAiC,CAAC,CAAC;IACvE,IAAI,CAACC,kBAAkB,GAAG,IAAI,CAACC,4BAA4B,CAAC,CAAC;IAC7D,IAAI,CAACC,gBAAgB,GAAG,IAAI,CAACC,0BAA0B,CAAC,CAAC;IAEzD,IAAI,CAACC,sBAAsB,CAAC,CAAC;EACjC;EAEQC,qBAAqBA,CAACC,QAA+B,EAAE;IAC3D,IAAI,IAAI,CAACZ,aAAa,CAACa,QAAQ,CAAC,CAAC,EAAE;MAC/B,IAAI,CAACd,eAAe,CAAC,KAAK,CAAC;MAC3B,OAAO,IAAI;IACf;IAEA,MAAMe,aAAa,GAAGF,QAAQ,CAACG,KAAK,CAACC,OAAO,IAAIA,OAAO,CAACC,iBAAiB,CAAC;IAC1E,IAAIH,aAAa,EAAE;MACf,IAAI,CAACf,eAAe,CAAC,IAAI,CAAC;MAC1B,OAAO,IAAI;IACf;IAEA,OAAO,KAAK;EAChB;EAEQW,sBAAsBA,CAAA,EAAG;IAC7Bd,MAAM,CAAC;MACHsB,KAAK,EAAE,IAAI,CAACV,gBAAgB,CAACW,QAAQ;MACrCC,MAAM,EAAE,CAAC,IAAI,CAACjB,KAAK,CAACkB,OAAO,CAACC,aAAa,EAAE,IAAI,CAACnB,KAAK,CAACkB,OAAO,CAACE,WAAW,CAAU;MACnFC,EAAE,EAAEA,CAAC,CAACC,YAAY,EAAEC,UAAU,CAAC,EAAEC,kBAAkB,MAAM;QACrDF,YAAY;QACZC,UAAU;QACVC;MACJ,CAAC;IACL,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC;MAAEH,YAAY;MAAEC,UAAU;MAAEC;IAAmB,CAAC,KAAK;MAC3D,IAAI,CAACxB,KAAK,CAACS,QAAQ,CAACiB,QAAQ,CAAC;QACzBC,QAAQ,EAAEL,YAAY;QACtBM,OAAO,EAAEL,UAAU;QACnBd,QAAQ,EAAEe;MACd,CAAC,CAAC;IACN,CAAC,CAAC;EACN;EAEQtB,iCAAiCA,CAAA,EAAG;IACxC,OAAOX,MAAM,CAAC;MACV0B,MAAM,EAAE,CAAC,IAAI,CAACjB,KAAK,CAAC6B,aAAa,CAAC;MAClCC,SAAS,EAAEA,CAACC,MAA8C,EAAE,CAACC,YAAY,CAAC,MAAM;QAC5ED,MAAM;QACNC;MACJ,CAAC,CAAC;MACFC,MAAM,EAAEzC,YAAY,CAAC,OAAO;QAAEwC,YAAY;QAAED;MAAqC,CAAC,KAAK;QACnF,MAAMG,gBAAgB,GAAGF,YAAY,EAAEG,OAAO,CAACC,KAAK,IAAI,EAAE;QAC1D,MAAMC,mBAAmB,GAAGL,YAAY,EAAEG,OAAO,CAACG,OAAO,IAAI,EAAE;QAE/D,MAAMC,sBAAsB,GAAG;UAAE,GAAGP;QAAa,CAAC;QAElD,IAAIE,gBAAgB,CAACM,MAAM,EAAE;UACzB,MAAMC,QAAQ,GAAGP,gBAAgB,CAACQ,GAAG,CAAC,CAAC;YAAEC;UAAK,CAAC,KAAKA,IAAI,CAAC;UACzD,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAAC5C,KAAK,CAAC6C,GAAG,CAACC,eAAe,CAAC;YAClDH,IAAI,EAAEF,QAAQ;YACdM,cAAc,EAAEhB,MAAM,CAACgB;UAC3B,CAAC,CAAC;UAEF,IAAIR,sBAAsB,CAACJ,OAAO,EAAE;YAChCI,sBAAsB,CAACJ,OAAO,CAACC,KAAK,GAAGF,gBAAgB,CAACQ,GAAG,CACvD,CAACM,WAAW,EAAEC,KAAK,MAAM;cACrB,GAAGD,WAAW;cACdlC,iBAAiB,EAAEpB,kBAAkB,CACjCkD,QAAQ,CAACM,IAAI,CAACC,YAAY,CAACF,KAAK,CAAC,CAACG,cACtC;YACJ,CAAC,CACL,CAAC;UACL;QACJ;QAEA,IAAIf,mBAAmB,CAACG,MAAM,EAAE;UAC5B,MAAMa,WAAW,GAAGhB,mBAAmB,CAACK,GAAG,CAAC,CAAC;YAAEC;UAAK,CAAC,KAAKA,IAAI,CAAC;UAC/D,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAAC5C,KAAK,CAAC6C,GAAG,CAACC,eAAe,CAAC;YAClDH,IAAI,EAAEU,WAAW;YACjBN,cAAc,EAAEhB,MAAM,CAACgB;UAC3B,CAAC,CAAC;UAEF,IAAIR,sBAAsB,CAACJ,OAAO,EAAE;YAChCI,sBAAsB,CAACJ,OAAO,CAACG,OAAO,GAAGD,mBAAmB,CAACK,GAAG,CAC5D,CAACM,WAAW,EAAEC,KAAK,MAAM;cACrB,GAAGD,WAAW;cACdI,cAAc,EAAE1D,kBAAkB,CAC9BkD,QAAQ,CAACM,IAAI,CAACC,YAAY,CAACF,KAAK,CAAC,CAACG,cACtC;YACJ,CAAC,CACL,CAAC;UACL;QACJ;QAEA,OAAOb,sBAAsB;MACjC,CAAC;IACL,CAAC,CAAC;EACN;EAEQnC,4BAA4BA,CAAA,EAAG;IACnC,OAAOZ,YAAY,CAAC,OAAO;MAAEqB,OAAO;MAAEkC;IAAwC,CAAC,KAAK;MAChF,MAAMO,WAAW,GAAGzC,OAAO,CAACsB,OAAO,CAACO,GAAG,CAAC,CAAC;QAAEC;MAAK,CAAC,KAAKA,IAAI,CAAC;MAC3D,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAAC5C,KAAK,CAAC6C,GAAG,CAACC,eAAe,CAAC;QAClDH,IAAI,EAAE,CAAC9B,OAAO,CAACA,OAAO,EAAE,GAAGyC,WAAW,CAAC;QACvCP;MACJ,CAAC,CAAC;MAEF,MAAMQ,iBAAiB,GAAGX,QAAQ,CAACM,IAAI,CAACC,YAAY,CAACK,KAAK,CAAC,CAAC,CAAC;MAC7D,MAAMC,WAAW,GAAG,CAAC,GAAG5C,OAAO,CAACsB,OAAO,CAAC;MACxC,MAAMuB,UAAU,GAAGD,WAAW,CAACf,GAAG,CAAC,CAACiB,MAAM,EAAEV,KAAK,MAAM;QACnD,GAAGU,MAAM;QACTP,cAAc,EAAE1D,kBAAkB,CAAC6D,iBAAiB,CAACN,KAAK,CAAC,CAACG,cAAc;MAC9E,CAAC,CAAC,CAAC;MAEH,OAAO;QACH,GAAGvC,OAAO;QACVC,iBAAiB,EAAEpB,kBAAkB,CAACkD,QAAQ,CAACM,IAAI,CAACC,YAAY,CAAC,CAAC,CAAC,CAACC,cAAc,CAAC;QACnFjB,OAAO,EAAEuB;MACb,CAAC;IACL,CAAC,CAAC;EACN;EAEQpD,0BAA0BA,CAAA,EAAG;IACjC,OAAOf,MAAM,CAAC;MACV0B,MAAM,EAAE,CAAC,IAAI,CAACjB,KAAK,CAACkB,OAAO,CAACC,aAAa,EAAE,IAAI,CAACnB,KAAK,CAACkB,OAAO,CAACE,WAAW,EAAE,IAAI,CAACpB,KAAK,CAACS,QAAQ,CAACmD,MAAM,CAAC;MACtG9B,SAAS,EAAEA,CACPC,MAAuC,EACvC,CAACT,YAAY,EAAEC,UAAU,EAAEd,QAAQ,CAAC,MAClC;QACFsB,MAAM;QACNT,YAAY;QACZC,UAAU;QACVd;MACJ,CAAC,CAAC;MACFwB,MAAM,EAAEzC,YAAY,CAChB,OAAO;QAAEiB,QAAQ;QAAEa,YAAY;QAAEC,UAAU;QAAEQ;MAA8B,CAAC,KAAK;QAC7E,MAAM8B,eAAe,GAAGpD,QAAQ,CAACa,YAAY,CAAC,GAAGC,UAAU,CAAC,EAAEd,QAAQ,IAAI,EAAE;QAE5E,IAAI,IAAI,CAACD,qBAAqB,CAACqD,eAAe,CAAC,EAAE;UAC7C,OAAOA,eAAe;QAC1B;QAEA,MAAMC,YAAY,GAAGD,eAAe,CAACnB,GAAG,CAAC,CAAC;UAAE7B;QAAQ,CAAC,KAAKA,OAAO,CAAC;QAClE,MAAM+B,QAAQ,GAAG,MAAM,IAAI,CAAC5C,KAAK,CAAC6C,GAAG,CAACC,eAAe,CAAC;UAClDH,IAAI,EAAEmB,YAAY;UAClBf,cAAc,EAAEhB,MAAM,CAACgB;QAC3B,CAAC,CAAC;QAEF,MAAMgB,WAAW,GAAGF,eAAe,CAACG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAMC,4BAA4B,GAAGF,WAAW,GAC1C,MAAM,IAAI,CAACG,uBAAuB,CAACH,WAAW,EAAEhC,MAAM,CAACgB,cAAc,CAAC,GACtEoB,SAAS;QAEf,MAAMC,+BAA+B,GAAG,MAAM,IAAI,CAACpE,KAAK,CAAC6C,GAAG,CAACC,eAAe,CAAC;UACzEH,IAAI,EAAE,CAAC,IAAI,CAAC3C,KAAK,CAACqE,eAAe,CAACC,KAAK,CAACzD,OAAO,CAAC;UAChDkC,cAAc,EAAEhB,MAAM,CAACgB;QAC3B,CAAC,CAAC;QAEF,IAAI,CAAC/C,KAAK,CAACqE,eAAe,CAACC,KAAK,CAACxD,iBAAiB,GAAGpB,kBAAkB,CACnE0E,+BAA+B,CAAClB,IAAI,CAACC,YAAY,CAAC,CAAC,CAAC,CAACC,cACzD,CAAC;;QAED;QACA;QACA,IAAI,CAACxD,eAAe,CAAC,IAAI,CAAC;QAE1B,MAAM4B,kBAAkB,GAAGoB,QAAQ,CAACM,IAAI,CAACC,YAAY,CAACT,GAAG,CACrD,CAAC;UAAEU;QAAe,CAAC,KAAKA,cAC5B,CAAC;QAED,OAAOS,eAAe,CAACnB,GAAG,CAAC,CAAC7B,OAAO,EAAEoC,KAAK,KAAK;UAC3C,MAAMsB,aAAa,GAAGtB,KAAK,KAAKY,eAAe,CAACrB,MAAM,GAAG,CAAC;UAC1D,OAAO;YACH,GAAG3B,OAAO;YACVsB,OAAO,EAAEoC,aAAa,GAAGN,4BAA4B,GAAGpD,OAAO,CAACsB,OAAO;YACvErB,iBAAiB,EAAEpB,kBAAkB,CAAC8B,kBAAkB,CAACyB,KAAK,CAAC;UACnE,CAAC;QACL,CAAC,CAAC;MACN,CACJ;IACJ,CAAC,CAAC;EACN;EAEA,MAAciB,uBAAuBA,CAACrD,OAA4B,EAAEkC,cAAsB,EAAE;IACxF,IAAI,CAAClC,OAAO,EAAEsB,OAAO,EAAEK,MAAM,EAAE;MAC3B,MAAMD,sBAAsB,GAAG,MAAM,IAAI,CAACtC,uBAAuB,CAAC;QAAE8C;MAAe,CAAC,CAAC;MACrF,IAAI,CAAC/C,KAAK,CAACwE,eAAe,CAACjC,sBAAsB,CAAC;MAClD;IACJ;IAEA,MAAMe,WAAW,GAAGzC,OAAO,CAACsB,OAAO,CAACO,GAAG,CAAC,CAAC;MAAEC;IAAK,CAAC,KAAKA,IAAI,CAAC;IAC3D,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAAC5C,KAAK,CAAC6C,GAAG,CAACC,eAAe,CAAC;MAClDH,IAAI,EAAEW,WAAW;MACjBP;IACJ,CAAC,CAAC;IAEF,OAAOlC,OAAO,CAACsB,OAAO,CAACO,GAAG,CAAC,CAACiB,MAAM,EAAEV,KAAK,MAAM;MAC3C,GAAGU,MAAM;MACTP,cAAc,EAAE1D,kBAAkB,CAACkD,QAAQ,CAACM,IAAI,CAACC,YAAY,CAACF,KAAK,CAAC,CAACG,cAAc;IACvF,CAAC,CAAC,CAAC;EACP;EAEOqB,KAAKA,CAAA,EAAG;IACX,IAAI,CAAC7E,eAAe,CAAC,KAAK,CAAC;EAC/B;AACJ","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=api.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["features/chatbot/types/api.types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ export let MessageVariant = /*#__PURE__*/function (MessageVariant) {
4
+ MessageVariant["SENT"] = "sent";
5
+ MessageVariant["RECEIVED"] = "received";
6
+ return MessageVariant;
7
+ }({});
8
+ //# sourceMappingURL=model.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MessageVariant"],"sourceRoot":"../../../../../src","sources":["features/chatbot/types/model.types.ts"],"mappings":";;AA+DA,WAAYA,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ export let AudioStatus = /*#__PURE__*/function (AudioStatus) {
4
+ AudioStatus["PLAYING"] = "playing";
5
+ AudioStatus["STOPPED"] = "stopped";
6
+ AudioStatus["PAUSED"] = "paused";
7
+ return AudioStatus;
8
+ }({});
9
+ //# sourceMappingURL=t2s.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AudioStatus"],"sourceRoot":"../../../../../src","sources":["features/chatbot/types/t2s.types.ts"],"mappings":";;AAEA,WAAYA,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=translation.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["features/chatbot/types/translation.types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export { useFeaturesLocalization, setFeaturesLocalization, Locale } from "./shared/translation/index.js";
4
+ export * from "./features/chatbot/index.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useFeaturesLocalization","setFeaturesLocalization","Locale"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,uBAAuB,EAAEC,uBAAuB,EAAEC,MAAM,QAAQ,+BAAsB;AAE/F,cAAc,6BAAoB","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import React, { createContext, useContext } from 'react';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ export function createFeature() {
6
+ const context = /*#__PURE__*/createContext(null);
7
+ const FeatureProvider = ({
8
+ children,
9
+ model
10
+ }) => {
11
+ if (!model) return null;
12
+ return /*#__PURE__*/_jsx(context.Provider, {
13
+ value: model,
14
+ children: children
15
+ });
16
+ };
17
+ const useFeatureModel = () => {
18
+ return useContext(context);
19
+ };
20
+ return [FeatureProvider, useFeatureModel, context];
21
+ }
22
+ //# sourceMappingURL=createFeature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","createContext","useContext","jsx","_jsx","createFeature","context","FeatureProvider","children","model","Provider","value","useFeatureModel"],"sourceRoot":"../../../../src","sources":["lib/createFeature/createFeature.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAqBC,UAAU,QAAQ,OAAO;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAE3E,OAAO,SAASC,aAAaA,CAAA,EAAM;EACjC,MAAMC,OAAO,gBAAGL,aAAa,CAAW,IAAI,CAAC;EAM7C,MAAMM,eAAe,GAAGA,CAAC;IAAEC,QAAQ;IAAEC;EAAqB,CAAC,KAAK;IAC9D,IAAI,CAACA,KAAK,EAAE,OAAO,IAAI;IAEvB,oBAAOL,IAAA,CAACE,OAAO,CAACI,QAAQ;MAACC,KAAK,EAAEF,KAAM;MAAAD,QAAA,EAAEA;IAAQ,CAAmB,CAAC;EACtE,CAAC;EAED,MAAMI,eAAe,GAAGA,CAAA,KAAM;IAC5B,OAAOV,UAAU,CAACI,OAAO,CAAC;EAC5B,CAAC;EAED,OAAO,CAACC,eAAe,EAAEK,eAAe,EAAEN,OAAO,CAAC;AACpD","ignoreList":[]}