@magmamath/students-features 0.10.0 → 0.11.0-rc.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 (508) hide show
  1. package/dist/commonjs/features/celebrations/helpers.js +4 -1
  2. package/dist/commonjs/features/celebrations/helpers.js.map +1 -1
  3. package/dist/commonjs/features/chatbot/TTS_HIGHLIGHTING.md +120 -0
  4. package/dist/commonjs/features/chatbot/components/Chat/Chat.js +66 -30
  5. package/dist/commonjs/features/chatbot/components/Chat/Chat.js.map +1 -1
  6. package/dist/commonjs/features/chatbot/components/Chat/CloseButton.js +61 -0
  7. package/dist/commonjs/features/chatbot/components/Chat/CloseButton.js.map +1 -0
  8. package/dist/commonjs/features/chatbot/components/ChatControls/ChatControls.js +44 -54
  9. package/dist/commonjs/features/chatbot/components/ChatControls/ChatControls.js.map +1 -1
  10. package/dist/commonjs/features/chatbot/components/ChatInput/ChatInput.js +3 -1
  11. package/dist/commonjs/features/chatbot/components/ChatInput/ChatInput.js.map +1 -1
  12. package/dist/commonjs/features/chatbot/components/ChatInput/FreeText/ChatTextInput.js +2 -2
  13. package/dist/commonjs/features/chatbot/components/ChatInput/FreeText/ChatTextInput.js.map +1 -1
  14. package/dist/commonjs/features/chatbot/components/ChatInput/FreeText/SendMessageButton.js +1 -1
  15. package/dist/commonjs/features/chatbot/components/ChatMessage/ChatMessage.js.map +1 -1
  16. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageContent.js +16 -4
  17. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageContent.js.map +1 -1
  18. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageLoader.js +12 -20
  19. package/dist/commonjs/features/chatbot/components/ChatMessage/MessageLoader.js.map +1 -1
  20. package/dist/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.js +13 -8
  21. package/dist/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.js.map +1 -1
  22. package/dist/commonjs/features/chatbot/components/ChatMessage/SentMessage.js +1 -1
  23. package/dist/commonjs/features/chatbot/components/Chatbot.js +29 -7
  24. package/dist/commonjs/features/chatbot/components/Chatbot.js.map +1 -1
  25. package/dist/commonjs/features/chatbot/constants.js +2 -1
  26. package/dist/commonjs/features/chatbot/constants.js.map +1 -1
  27. package/dist/commonjs/features/chatbot/helpers/ttsHighlight.js +29 -0
  28. package/dist/commonjs/features/chatbot/helpers/ttsHighlight.js.map +1 -0
  29. package/dist/commonjs/features/chatbot/helpers.js +19 -2
  30. package/dist/commonjs/features/chatbot/helpers.js.map +1 -1
  31. package/dist/commonjs/features/chatbot/index.js.map +1 -1
  32. package/dist/commonjs/features/chatbot/model/ChatBotModel.js +59 -17
  33. package/dist/commonjs/features/chatbot/model/ChatBotModel.js.map +1 -1
  34. package/dist/commonjs/features/chatbot/model/ChatBotThreadManager.js +2 -2
  35. package/dist/commonjs/features/chatbot/model/ChatBotThreadManager.js.map +1 -1
  36. package/dist/commonjs/features/chatbot/model/ChatTTSHighlightModel.js +56 -0
  37. package/dist/commonjs/features/chatbot/model/ChatTTSHighlightModel.js.map +1 -0
  38. package/dist/commonjs/features/chatbot/model/ChatTTSModel.js +154 -0
  39. package/dist/commonjs/features/chatbot/model/ChatTTSModel.js.map +1 -0
  40. package/dist/commonjs/features/chatbot/model/ChatbotApi.js +1 -1
  41. package/dist/commonjs/features/chatbot/model/ChatbotApi.js.map +1 -1
  42. package/dist/commonjs/features/chatbot/model/ChatsCacheModel.js +9 -0
  43. package/dist/commonjs/features/chatbot/model/ChatsCacheModel.js.map +1 -1
  44. package/dist/commonjs/features/chatbot/types/model.types.js.map +1 -1
  45. package/dist/commonjs/features/chatbot/types/t2s.types.js.map +1 -1
  46. package/dist/commonjs/features/feedback/model/model.js.map +1 -1
  47. package/dist/commonjs/features/feedback/model/sockets.js +8 -5
  48. package/dist/commonjs/features/feedback/model/sockets.js.map +1 -1
  49. package/dist/commonjs/features/keyboard/components/AlgebraLayout/AlgebraLayout.js +2 -2
  50. package/dist/commonjs/features/keyboard/components/AlgebraLayout/AlgebraLayout.js.map +1 -1
  51. package/dist/commonjs/features/keyboard/components/BasicLayout/BasicLayout.js +2 -2
  52. package/dist/commonjs/features/keyboard/components/BasicLayout/BasicLayout.js.map +1 -1
  53. package/dist/commonjs/features/keyboard/components/BasicPlusLayout/keyboardGroups.js +4 -4
  54. package/dist/commonjs/features/keyboard/components/BasicPlusLayout/keyboardGroups.js.map +1 -1
  55. package/dist/commonjs/features/keyboard/components/BasicPlusPlusLayout/BasicPlusPlusLayout.js +2 -2
  56. package/dist/commonjs/features/keyboard/components/BasicPlusPlusLayout/BasicPlusPlusLayout.js.map +1 -1
  57. package/dist/commonjs/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.js +4 -4
  58. package/dist/commonjs/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.js.map +1 -1
  59. package/dist/commonjs/features/keyboard/components/Keyboard.js +4 -2
  60. package/dist/commonjs/features/keyboard/components/Keyboard.js.map +1 -1
  61. package/dist/commonjs/features/keyboard/components/MainLayout/MainLayout.js +1 -6
  62. package/dist/commonjs/features/keyboard/components/MainLayout/MainLayout.js.map +1 -1
  63. package/dist/commonjs/features/keyboard/components/UnitsLayout/UnitTabs.js +1 -1
  64. package/dist/commonjs/features/keyboard/components/UnitsLayout/helpers.js +3 -1
  65. package/dist/commonjs/features/keyboard/components/UnitsLayout/helpers.js.map +1 -1
  66. package/dist/commonjs/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.js +27 -6
  67. package/dist/commonjs/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.js.map +1 -1
  68. package/dist/commonjs/features/keyboard/components/UnitsLayout/keyboardGroups.js +9 -1
  69. package/dist/commonjs/features/keyboard/components/UnitsLayout/keyboardGroups.js.map +1 -1
  70. package/dist/commonjs/features/keyboard/components/UnitsLayout/types.js +1 -0
  71. package/dist/commonjs/features/keyboard/components/UnitsLayout/types.js.map +1 -1
  72. package/dist/commonjs/features/keyboard/constants/constants.js +1 -1
  73. package/dist/commonjs/features/keyboard/constants/keyboardGroupsByLocale.js +2 -1
  74. package/dist/commonjs/features/keyboard/constants/keyboardGroupsByLocale.js.map +1 -1
  75. package/dist/commonjs/features/keyboard/constants/keyboardLayouts.js +20 -4
  76. package/dist/commonjs/features/keyboard/constants/keyboardLayouts.js.map +1 -1
  77. package/dist/commonjs/features/keyboard/helpers.js +7 -0
  78. package/dist/commonjs/features/keyboard/helpers.js.map +1 -1
  79. package/dist/commonjs/features/keyboard/types/MathKeysGroups/basicOperators.js +20 -3
  80. package/dist/commonjs/features/keyboard/types/MathKeysGroups/basicOperators.js.map +1 -1
  81. package/dist/commonjs/features/keyboard/types/MathKeysGroups/units.js +6 -3
  82. package/dist/commonjs/features/keyboard/types/MathKeysGroups/units.js.map +1 -1
  83. package/dist/commonjs/features/openEnded/components/OpenEndedAttemptsLimit.js +34 -0
  84. package/dist/commonjs/features/openEnded/components/OpenEndedAttemptsLimit.js.map +1 -0
  85. package/dist/commonjs/features/openEnded/components/OpenEndedScoreLabel.js +77 -0
  86. package/dist/commonjs/features/openEnded/components/OpenEndedScoreLabel.js.map +1 -0
  87. package/dist/commonjs/features/openEnded/index.js +48 -0
  88. package/dist/commonjs/features/openEnded/index.js.map +1 -0
  89. package/dist/commonjs/features/openEnded/oe.helpers.js +26 -0
  90. package/dist/commonjs/features/openEnded/oe.helpers.js.map +1 -0
  91. package/dist/commonjs/features/openEnded/oe.types.js +14 -0
  92. package/dist/commonjs/features/openEnded/oe.types.js.map +1 -0
  93. package/dist/commonjs/index.js +13 -1
  94. package/dist/commonjs/index.js.map +1 -1
  95. package/dist/commonjs/lib/components/ConditionalWrapper.js +23 -0
  96. package/dist/commonjs/lib/components/ConditionalWrapper.js.map +1 -0
  97. package/dist/commonjs/shared/common.constants.js +9 -0
  98. package/dist/commonjs/shared/common.constants.js.map +1 -0
  99. package/dist/commonjs/shared/icons/TimeIcon.js +37 -0
  100. package/dist/commonjs/shared/icons/TimeIcon.js.map +1 -0
  101. package/dist/commonjs/shared/icons/keyboard/CDotIcon/CDotIcon.js +4 -4
  102. package/dist/commonjs/shared/icons/keyboard/CDotIcon/CDotIcon.js.map +1 -1
  103. package/dist/commonjs/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.js +32 -0
  104. package/dist/commonjs/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.js.map +1 -0
  105. package/dist/commonjs/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.js +32 -0
  106. package/dist/commonjs/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.js.map +1 -0
  107. package/dist/commonjs/shared/translation/localization/ca.json +2 -1
  108. package/dist/commonjs/shared/translation/localization/de.json +2 -1
  109. package/dist/commonjs/shared/translation/localization/en.json +2 -1
  110. package/dist/commonjs/shared/translation/localization/gb.json +2 -1
  111. package/dist/commonjs/shared/translation/localization/sct.json +2 -1
  112. package/dist/commonjs/shared/translation/localization/sw.json +2 -1
  113. package/dist/commonjs/types/common.types.js +4 -0
  114. package/dist/module/features/celebrations/helpers.js +4 -1
  115. package/dist/module/features/celebrations/helpers.js.map +1 -1
  116. package/dist/module/features/chatbot/TTS_HIGHLIGHTING.md +120 -0
  117. package/dist/module/features/chatbot/components/Chat/Chat.js +66 -30
  118. package/dist/module/features/chatbot/components/Chat/Chat.js.map +1 -1
  119. package/dist/module/features/chatbot/components/Chat/CloseButton.js +55 -0
  120. package/dist/module/features/chatbot/components/Chat/CloseButton.js.map +1 -0
  121. package/dist/module/features/chatbot/components/ChatControls/ChatControls.js +44 -55
  122. package/dist/module/features/chatbot/components/ChatControls/ChatControls.js.map +1 -1
  123. package/dist/module/features/chatbot/components/ChatInput/ChatInput.js +3 -1
  124. package/dist/module/features/chatbot/components/ChatInput/ChatInput.js.map +1 -1
  125. package/dist/module/features/chatbot/components/ChatInput/FreeText/ChatTextInput.js +2 -2
  126. package/dist/module/features/chatbot/components/ChatInput/FreeText/ChatTextInput.js.map +1 -1
  127. package/dist/module/features/chatbot/components/ChatInput/FreeText/SendMessageButton.js +1 -1
  128. package/dist/module/features/chatbot/components/ChatMessage/ChatMessage.js.map +1 -1
  129. package/dist/module/features/chatbot/components/ChatMessage/MessageContent.js +16 -4
  130. package/dist/module/features/chatbot/components/ChatMessage/MessageContent.js.map +1 -1
  131. package/dist/module/features/chatbot/components/ChatMessage/MessageLoader.js +12 -20
  132. package/dist/module/features/chatbot/components/ChatMessage/MessageLoader.js.map +1 -1
  133. package/dist/module/features/chatbot/components/ChatMessage/ReceivedMessage.js +13 -8
  134. package/dist/module/features/chatbot/components/ChatMessage/ReceivedMessage.js.map +1 -1
  135. package/dist/module/features/chatbot/components/ChatMessage/SentMessage.js +1 -1
  136. package/dist/module/features/chatbot/components/Chatbot.js +27 -6
  137. package/dist/module/features/chatbot/components/Chatbot.js.map +1 -1
  138. package/dist/module/features/chatbot/constants.js +1 -0
  139. package/dist/module/features/chatbot/constants.js.map +1 -1
  140. package/dist/module/features/chatbot/helpers/ttsHighlight.js +23 -0
  141. package/dist/module/features/chatbot/helpers/ttsHighlight.js.map +1 -0
  142. package/dist/module/features/chatbot/helpers.js +19 -2
  143. package/dist/module/features/chatbot/helpers.js.map +1 -1
  144. package/dist/module/features/chatbot/index.js.map +1 -1
  145. package/dist/module/features/chatbot/model/ChatBotModel.js +59 -17
  146. package/dist/module/features/chatbot/model/ChatBotModel.js.map +1 -1
  147. package/dist/module/features/chatbot/model/ChatBotThreadManager.js +2 -2
  148. package/dist/module/features/chatbot/model/ChatBotThreadManager.js.map +1 -1
  149. package/dist/module/features/chatbot/model/ChatTTSHighlightModel.js +52 -0
  150. package/dist/module/features/chatbot/model/ChatTTSHighlightModel.js.map +1 -0
  151. package/dist/module/features/chatbot/model/ChatTTSModel.js +149 -0
  152. package/dist/module/features/chatbot/model/ChatTTSModel.js.map +1 -0
  153. package/dist/module/features/chatbot/model/ChatbotApi.js +1 -1
  154. package/dist/module/features/chatbot/model/ChatbotApi.js.map +1 -1
  155. package/dist/module/features/chatbot/model/ChatsCacheModel.js +9 -0
  156. package/dist/module/features/chatbot/model/ChatsCacheModel.js.map +1 -1
  157. package/dist/module/features/chatbot/types/model.types.js.map +1 -1
  158. package/dist/module/features/chatbot/types/t2s.types.js.map +1 -1
  159. package/dist/module/features/feedback/model/model.js.map +1 -1
  160. package/dist/module/features/feedback/model/sockets.js +8 -5
  161. package/dist/module/features/feedback/model/sockets.js.map +1 -1
  162. package/dist/module/features/keyboard/components/AlgebraLayout/AlgebraLayout.js +3 -3
  163. package/dist/module/features/keyboard/components/AlgebraLayout/AlgebraLayout.js.map +1 -1
  164. package/dist/module/features/keyboard/components/BasicLayout/BasicLayout.js +2 -2
  165. package/dist/module/features/keyboard/components/BasicLayout/BasicLayout.js.map +1 -1
  166. package/dist/module/features/keyboard/components/BasicPlusLayout/keyboardGroups.js +4 -4
  167. package/dist/module/features/keyboard/components/BasicPlusLayout/keyboardGroups.js.map +1 -1
  168. package/dist/module/features/keyboard/components/BasicPlusPlusLayout/BasicPlusPlusLayout.js +2 -2
  169. package/dist/module/features/keyboard/components/BasicPlusPlusLayout/BasicPlusPlusLayout.js.map +1 -1
  170. package/dist/module/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.js +4 -4
  171. package/dist/module/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.js.map +1 -1
  172. package/dist/module/features/keyboard/components/Keyboard.js +4 -2
  173. package/dist/module/features/keyboard/components/Keyboard.js.map +1 -1
  174. package/dist/module/features/keyboard/components/KeysList/KeysList.js.map +1 -1
  175. package/dist/module/features/keyboard/components/MainLayout/MainLayout.js +2 -7
  176. package/dist/module/features/keyboard/components/MainLayout/MainLayout.js.map +1 -1
  177. package/dist/module/features/keyboard/components/UnitsLayout/UnitTabs.js +1 -1
  178. package/dist/module/features/keyboard/components/UnitsLayout/helpers.js +2 -1
  179. package/dist/module/features/keyboard/components/UnitsLayout/helpers.js.map +1 -1
  180. package/dist/module/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.js +27 -6
  181. package/dist/module/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.js.map +1 -1
  182. package/dist/module/features/keyboard/components/UnitsLayout/keyboardGroups.js +9 -1
  183. package/dist/module/features/keyboard/components/UnitsLayout/keyboardGroups.js.map +1 -1
  184. package/dist/module/features/keyboard/components/UnitsLayout/types.js +1 -0
  185. package/dist/module/features/keyboard/components/UnitsLayout/types.js.map +1 -1
  186. package/dist/module/features/keyboard/constants/constants.js +1 -1
  187. package/dist/module/features/keyboard/constants/keyboardGroupsByLocale.js +3 -2
  188. package/dist/module/features/keyboard/constants/keyboardGroupsByLocale.js.map +1 -1
  189. package/dist/module/features/keyboard/constants/keyboardLayouts.js +19 -4
  190. package/dist/module/features/keyboard/constants/keyboardLayouts.js.map +1 -1
  191. package/dist/module/features/keyboard/helpers.js +5 -0
  192. package/dist/module/features/keyboard/helpers.js.map +1 -1
  193. package/dist/module/features/keyboard/types/MathKeysGroups/basicOperators.js +20 -3
  194. package/dist/module/features/keyboard/types/MathKeysGroups/basicOperators.js.map +1 -1
  195. package/dist/module/features/keyboard/types/MathKeysGroups/units.js +6 -3
  196. package/dist/module/features/keyboard/types/MathKeysGroups/units.js.map +1 -1
  197. package/dist/module/features/openEnded/components/OpenEndedAttemptsLimit.js +28 -0
  198. package/dist/module/features/openEnded/components/OpenEndedAttemptsLimit.js.map +1 -0
  199. package/dist/module/features/openEnded/components/OpenEndedScoreLabel.js +71 -0
  200. package/dist/module/features/openEnded/components/OpenEndedScoreLabel.js.map +1 -0
  201. package/dist/module/features/openEnded/index.js +7 -0
  202. package/dist/module/features/openEnded/index.js.map +1 -0
  203. package/dist/module/features/openEnded/oe.helpers.js +21 -0
  204. package/dist/module/features/openEnded/oe.helpers.js.map +1 -0
  205. package/dist/module/features/openEnded/oe.types.js +10 -0
  206. package/dist/module/features/openEnded/oe.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/lib/components/ConditionalWrapper.js +17 -0
  210. package/dist/module/lib/components/ConditionalWrapper.js.map +1 -0
  211. package/dist/module/shared/common.constants.js +5 -0
  212. package/dist/module/shared/common.constants.js.map +1 -0
  213. package/dist/module/shared/icons/TimeIcon.js +29 -0
  214. package/dist/module/shared/icons/TimeIcon.js.map +1 -0
  215. package/dist/module/shared/icons/keyboard/CDotIcon/CDotIcon.js +4 -4
  216. package/dist/module/shared/icons/keyboard/CDotIcon/CDotIcon.js.map +1 -1
  217. package/dist/module/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.js +24 -0
  218. package/dist/module/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.js.map +1 -0
  219. package/dist/module/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.js +24 -0
  220. package/dist/module/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.js.map +1 -0
  221. package/dist/module/shared/translation/localization/ca.json +2 -1
  222. package/dist/module/shared/translation/localization/de.json +2 -1
  223. package/dist/module/shared/translation/localization/en.json +2 -1
  224. package/dist/module/shared/translation/localization/gb.json +2 -1
  225. package/dist/module/shared/translation/localization/sct.json +2 -1
  226. package/dist/module/shared/translation/localization/sw.json +2 -1
  227. package/dist/module/types/common.types.js +2 -0
  228. package/dist/typescript/commonjs/features/celebrations/helpers.d.ts.map +1 -1
  229. package/dist/typescript/commonjs/features/chatbot/components/Chat/Chat.d.ts +7 -2
  230. package/dist/typescript/commonjs/features/chatbot/components/Chat/Chat.d.ts.map +1 -1
  231. package/dist/typescript/commonjs/features/chatbot/components/Chat/CloseButton.d.ts +7 -0
  232. package/dist/typescript/commonjs/features/chatbot/components/Chat/CloseButton.d.ts.map +1 -0
  233. package/dist/typescript/commonjs/features/chatbot/components/ChatControls/ChatControls.d.ts +3 -2
  234. package/dist/typescript/commonjs/features/chatbot/components/ChatControls/ChatControls.d.ts.map +1 -1
  235. package/dist/typescript/commonjs/features/chatbot/components/ChatInput/ChatInput.d.ts.map +1 -1
  236. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ChatMessage.d.ts +3 -1
  237. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ChatMessage.d.ts.map +1 -1
  238. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageContent.d.ts +4 -2
  239. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageContent.d.ts.map +1 -1
  240. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageLoader.d.ts +1 -6
  241. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageLoader.d.ts.map +1 -1
  242. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts +1 -1
  243. package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts.map +1 -1
  244. package/dist/typescript/commonjs/features/chatbot/components/Chatbot.d.ts +4 -1
  245. package/dist/typescript/commonjs/features/chatbot/components/Chatbot.d.ts.map +1 -1
  246. package/dist/typescript/commonjs/features/chatbot/constants.d.ts +1 -0
  247. package/dist/typescript/commonjs/features/chatbot/constants.d.ts.map +1 -1
  248. package/dist/typescript/commonjs/features/chatbot/helpers/ttsHighlight.d.ts +8 -0
  249. package/dist/typescript/commonjs/features/chatbot/helpers/ttsHighlight.d.ts.map +1 -0
  250. package/dist/typescript/commonjs/features/chatbot/helpers.d.ts.map +1 -1
  251. package/dist/typescript/commonjs/features/chatbot/index.d.ts +3 -2
  252. package/dist/typescript/commonjs/features/chatbot/index.d.ts.map +1 -1
  253. package/dist/typescript/commonjs/features/chatbot/model/ChatBotModel.d.ts +6 -3
  254. package/dist/typescript/commonjs/features/chatbot/model/ChatBotModel.d.ts.map +1 -1
  255. package/dist/typescript/commonjs/features/chatbot/model/ChatBotThreadManager.d.ts +4 -3
  256. package/dist/typescript/commonjs/features/chatbot/model/ChatBotThreadManager.d.ts.map +1 -1
  257. package/dist/typescript/commonjs/features/chatbot/model/ChatTTSHighlightModel.d.ts +25 -0
  258. package/dist/typescript/commonjs/features/chatbot/model/ChatTTSHighlightModel.d.ts.map +1 -0
  259. package/dist/typescript/commonjs/features/chatbot/model/ChatTTSModel.d.ts +38 -0
  260. package/dist/typescript/commonjs/features/chatbot/model/ChatTTSModel.d.ts.map +1 -0
  261. package/dist/typescript/commonjs/features/chatbot/model/ChatsCacheModel.d.ts +1 -0
  262. package/dist/typescript/commonjs/features/chatbot/model/ChatsCacheModel.d.ts.map +1 -1
  263. package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts +28 -16
  264. package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts.map +1 -1
  265. package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts +14 -11
  266. package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts.map +1 -1
  267. package/dist/typescript/commonjs/features/chatbot/types/t2s.types.d.ts +25 -0
  268. package/dist/typescript/commonjs/features/chatbot/types/t2s.types.d.ts.map +1 -1
  269. package/dist/typescript/commonjs/features/chatbot/types/units.types.d.ts +1 -0
  270. package/dist/typescript/commonjs/features/chatbot/types/units.types.d.ts.map +1 -1
  271. package/dist/typescript/commonjs/features/feedback/model/model.d.ts +4 -1
  272. package/dist/typescript/commonjs/features/feedback/model/model.d.ts.map +1 -1
  273. package/dist/typescript/commonjs/features/feedback/model/sockets.d.ts.map +1 -1
  274. package/dist/typescript/commonjs/features/keyboard/components/AlgebraLayout/AlgebraLayout.d.ts.map +1 -1
  275. package/dist/typescript/commonjs/features/keyboard/components/BasicPlusLayout/keyboardGroups.d.ts.map +1 -1
  276. package/dist/typescript/commonjs/features/keyboard/components/BasicPlusPlusLayout/BasicPlusPlusLayout.d.ts.map +1 -1
  277. package/dist/typescript/commonjs/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.d.ts.map +1 -1
  278. package/dist/typescript/commonjs/features/keyboard/components/Keyboard.d.ts +2 -1
  279. package/dist/typescript/commonjs/features/keyboard/components/Keyboard.d.ts.map +1 -1
  280. package/dist/typescript/commonjs/features/keyboard/components/MainLayout/MainLayout.d.ts.map +1 -1
  281. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/helpers.d.ts +1 -0
  282. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/helpers.d.ts.map +1 -1
  283. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.d.ts +4 -7
  284. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.d.ts.map +1 -1
  285. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/keyboardGroups.d.ts +1 -0
  286. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/keyboardGroups.d.ts.map +1 -1
  287. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/types.d.ts +7 -1
  288. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/types.d.ts.map +1 -1
  289. package/dist/typescript/commonjs/features/keyboard/constants/constants.d.ts +1 -1
  290. package/dist/typescript/commonjs/features/keyboard/constants/keyboardGroupsByLocale.d.ts.map +1 -1
  291. package/dist/typescript/commonjs/features/keyboard/constants/keyboardLayouts.d.ts +4 -0
  292. package/dist/typescript/commonjs/features/keyboard/constants/keyboardLayouts.d.ts.map +1 -1
  293. package/dist/typescript/commonjs/features/keyboard/helpers.d.ts +1 -0
  294. package/dist/typescript/commonjs/features/keyboard/helpers.d.ts.map +1 -1
  295. package/dist/typescript/commonjs/features/keyboard/types/MathKeysGroups/basicOperators.d.ts +10 -0
  296. package/dist/typescript/commonjs/features/keyboard/types/MathKeysGroups/basicOperators.d.ts.map +1 -1
  297. package/dist/typescript/commonjs/features/keyboard/types/MathKeysGroups/units.d.ts +36 -0
  298. package/dist/typescript/commonjs/features/keyboard/types/MathKeysGroups/units.d.ts.map +1 -1
  299. package/dist/typescript/commonjs/features/openEnded/components/OpenEndedAttemptsLimit.d.ts +7 -0
  300. package/dist/typescript/commonjs/features/openEnded/components/OpenEndedAttemptsLimit.d.ts.map +1 -0
  301. package/dist/typescript/commonjs/features/openEnded/components/OpenEndedScoreLabel.d.ts +12 -0
  302. package/dist/typescript/commonjs/features/openEnded/components/OpenEndedScoreLabel.d.ts.map +1 -0
  303. package/dist/typescript/commonjs/features/openEnded/index.d.ts +5 -0
  304. package/dist/typescript/commonjs/features/openEnded/index.d.ts.map +1 -0
  305. package/dist/typescript/commonjs/features/openEnded/oe.helpers.d.ts +13 -0
  306. package/dist/typescript/commonjs/features/openEnded/oe.helpers.d.ts.map +1 -0
  307. package/dist/typescript/commonjs/features/openEnded/oe.types.d.ts +7 -0
  308. package/dist/typescript/commonjs/features/openEnded/oe.types.d.ts.map +1 -0
  309. package/dist/typescript/commonjs/index.d.ts +1 -0
  310. package/dist/typescript/commonjs/index.d.ts.map +1 -1
  311. package/dist/typescript/commonjs/lib/components/ConditionalWrapper.d.ts +9 -0
  312. package/dist/typescript/commonjs/lib/components/ConditionalWrapper.d.ts.map +1 -0
  313. package/dist/typescript/commonjs/lib/effector/createControllerEffect.d.ts +1 -1
  314. package/dist/typescript/commonjs/lib/effector/createControllerEffect.d.ts.map +1 -1
  315. package/dist/typescript/commonjs/shared/common.constants.d.ts +2 -0
  316. package/dist/typescript/commonjs/shared/common.constants.d.ts.map +1 -0
  317. package/dist/typescript/commonjs/shared/icons/TimeIcon.d.ts +4 -0
  318. package/dist/typescript/commonjs/shared/icons/TimeIcon.d.ts.map +1 -0
  319. package/dist/typescript/commonjs/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.d.ts +4 -0
  320. package/dist/typescript/commonjs/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.d.ts.map +1 -0
  321. package/dist/typescript/commonjs/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.d.ts +4 -0
  322. package/dist/typescript/commonjs/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.d.ts.map +1 -0
  323. package/dist/typescript/commonjs/shared/translation/constants.d.ts +6 -0
  324. package/dist/typescript/commonjs/shared/translation/constants.d.ts.map +1 -1
  325. package/dist/typescript/commonjs/shared/translation/model.d.ts +2 -0
  326. package/dist/typescript/commonjs/shared/translation/model.d.ts.map +1 -1
  327. package/dist/typescript/commonjs/types/common.types.d.ts +2 -0
  328. package/dist/typescript/commonjs/types/common.types.d.ts.map +1 -1
  329. package/dist/typescript/module/features/celebrations/helpers.d.ts.map +1 -1
  330. package/dist/typescript/module/features/chatbot/components/Chat/Chat.d.ts +7 -2
  331. package/dist/typescript/module/features/chatbot/components/Chat/Chat.d.ts.map +1 -1
  332. package/dist/typescript/module/features/chatbot/components/Chat/CloseButton.d.ts +7 -0
  333. package/dist/typescript/module/features/chatbot/components/Chat/CloseButton.d.ts.map +1 -0
  334. package/dist/typescript/module/features/chatbot/components/ChatControls/ChatControls.d.ts +3 -2
  335. package/dist/typescript/module/features/chatbot/components/ChatControls/ChatControls.d.ts.map +1 -1
  336. package/dist/typescript/module/features/chatbot/components/ChatInput/ChatInput.d.ts.map +1 -1
  337. package/dist/typescript/module/features/chatbot/components/ChatMessage/ChatMessage.d.ts +3 -1
  338. package/dist/typescript/module/features/chatbot/components/ChatMessage/ChatMessage.d.ts.map +1 -1
  339. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageContent.d.ts +4 -2
  340. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageContent.d.ts.map +1 -1
  341. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageLoader.d.ts +1 -6
  342. package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageLoader.d.ts.map +1 -1
  343. package/dist/typescript/module/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts +1 -1
  344. package/dist/typescript/module/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts.map +1 -1
  345. package/dist/typescript/module/features/chatbot/components/Chatbot.d.ts +4 -1
  346. package/dist/typescript/module/features/chatbot/components/Chatbot.d.ts.map +1 -1
  347. package/dist/typescript/module/features/chatbot/constants.d.ts +1 -0
  348. package/dist/typescript/module/features/chatbot/constants.d.ts.map +1 -1
  349. package/dist/typescript/module/features/chatbot/helpers/ttsHighlight.d.ts +8 -0
  350. package/dist/typescript/module/features/chatbot/helpers/ttsHighlight.d.ts.map +1 -0
  351. package/dist/typescript/module/features/chatbot/helpers.d.ts.map +1 -1
  352. package/dist/typescript/module/features/chatbot/index.d.ts +3 -2
  353. package/dist/typescript/module/features/chatbot/index.d.ts.map +1 -1
  354. package/dist/typescript/module/features/chatbot/model/ChatBotModel.d.ts +6 -3
  355. package/dist/typescript/module/features/chatbot/model/ChatBotModel.d.ts.map +1 -1
  356. package/dist/typescript/module/features/chatbot/model/ChatBotThreadManager.d.ts +4 -3
  357. package/dist/typescript/module/features/chatbot/model/ChatBotThreadManager.d.ts.map +1 -1
  358. package/dist/typescript/module/features/chatbot/model/ChatTTSHighlightModel.d.ts +25 -0
  359. package/dist/typescript/module/features/chatbot/model/ChatTTSHighlightModel.d.ts.map +1 -0
  360. package/dist/typescript/module/features/chatbot/model/ChatTTSModel.d.ts +38 -0
  361. package/dist/typescript/module/features/chatbot/model/ChatTTSModel.d.ts.map +1 -0
  362. package/dist/typescript/module/features/chatbot/model/ChatsCacheModel.d.ts +1 -0
  363. package/dist/typescript/module/features/chatbot/model/ChatsCacheModel.d.ts.map +1 -1
  364. package/dist/typescript/module/features/chatbot/types/api.types.d.ts +28 -16
  365. package/dist/typescript/module/features/chatbot/types/api.types.d.ts.map +1 -1
  366. package/dist/typescript/module/features/chatbot/types/model.types.d.ts +14 -11
  367. package/dist/typescript/module/features/chatbot/types/model.types.d.ts.map +1 -1
  368. package/dist/typescript/module/features/chatbot/types/t2s.types.d.ts +25 -0
  369. package/dist/typescript/module/features/chatbot/types/t2s.types.d.ts.map +1 -1
  370. package/dist/typescript/module/features/chatbot/types/units.types.d.ts +1 -0
  371. package/dist/typescript/module/features/chatbot/types/units.types.d.ts.map +1 -1
  372. package/dist/typescript/module/features/feedback/model/model.d.ts +4 -1
  373. package/dist/typescript/module/features/feedback/model/model.d.ts.map +1 -1
  374. package/dist/typescript/module/features/feedback/model/sockets.d.ts.map +1 -1
  375. package/dist/typescript/module/features/keyboard/components/AlgebraLayout/AlgebraLayout.d.ts.map +1 -1
  376. package/dist/typescript/module/features/keyboard/components/BasicPlusLayout/keyboardGroups.d.ts.map +1 -1
  377. package/dist/typescript/module/features/keyboard/components/BasicPlusPlusLayout/BasicPlusPlusLayout.d.ts.map +1 -1
  378. package/dist/typescript/module/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.d.ts.map +1 -1
  379. package/dist/typescript/module/features/keyboard/components/Keyboard.d.ts +2 -1
  380. package/dist/typescript/module/features/keyboard/components/Keyboard.d.ts.map +1 -1
  381. package/dist/typescript/module/features/keyboard/components/MainLayout/MainLayout.d.ts.map +1 -1
  382. package/dist/typescript/module/features/keyboard/components/UnitsLayout/helpers.d.ts +1 -0
  383. package/dist/typescript/module/features/keyboard/components/UnitsLayout/helpers.d.ts.map +1 -1
  384. package/dist/typescript/module/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.d.ts +4 -7
  385. package/dist/typescript/module/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.d.ts.map +1 -1
  386. package/dist/typescript/module/features/keyboard/components/UnitsLayout/keyboardGroups.d.ts +1 -0
  387. package/dist/typescript/module/features/keyboard/components/UnitsLayout/keyboardGroups.d.ts.map +1 -1
  388. package/dist/typescript/module/features/keyboard/components/UnitsLayout/types.d.ts +7 -1
  389. package/dist/typescript/module/features/keyboard/components/UnitsLayout/types.d.ts.map +1 -1
  390. package/dist/typescript/module/features/keyboard/constants/constants.d.ts +1 -1
  391. package/dist/typescript/module/features/keyboard/constants/keyboardGroupsByLocale.d.ts.map +1 -1
  392. package/dist/typescript/module/features/keyboard/constants/keyboardLayouts.d.ts +4 -0
  393. package/dist/typescript/module/features/keyboard/constants/keyboardLayouts.d.ts.map +1 -1
  394. package/dist/typescript/module/features/keyboard/helpers.d.ts +1 -0
  395. package/dist/typescript/module/features/keyboard/helpers.d.ts.map +1 -1
  396. package/dist/typescript/module/features/keyboard/types/MathKeysGroups/basicOperators.d.ts +10 -0
  397. package/dist/typescript/module/features/keyboard/types/MathKeysGroups/basicOperators.d.ts.map +1 -1
  398. package/dist/typescript/module/features/keyboard/types/MathKeysGroups/units.d.ts +36 -0
  399. package/dist/typescript/module/features/keyboard/types/MathKeysGroups/units.d.ts.map +1 -1
  400. package/dist/typescript/module/features/openEnded/components/OpenEndedAttemptsLimit.d.ts +7 -0
  401. package/dist/typescript/module/features/openEnded/components/OpenEndedAttemptsLimit.d.ts.map +1 -0
  402. package/dist/typescript/module/features/openEnded/components/OpenEndedScoreLabel.d.ts +12 -0
  403. package/dist/typescript/module/features/openEnded/components/OpenEndedScoreLabel.d.ts.map +1 -0
  404. package/dist/typescript/module/features/openEnded/index.d.ts +5 -0
  405. package/dist/typescript/module/features/openEnded/index.d.ts.map +1 -0
  406. package/dist/typescript/module/features/openEnded/oe.helpers.d.ts +13 -0
  407. package/dist/typescript/module/features/openEnded/oe.helpers.d.ts.map +1 -0
  408. package/dist/typescript/module/features/openEnded/oe.types.d.ts +7 -0
  409. package/dist/typescript/module/features/openEnded/oe.types.d.ts.map +1 -0
  410. package/dist/typescript/module/index.d.ts +1 -0
  411. package/dist/typescript/module/index.d.ts.map +1 -1
  412. package/dist/typescript/module/lib/components/ConditionalWrapper.d.ts +9 -0
  413. package/dist/typescript/module/lib/components/ConditionalWrapper.d.ts.map +1 -0
  414. package/dist/typescript/module/lib/effector/createControllerEffect.d.ts +1 -1
  415. package/dist/typescript/module/lib/effector/createControllerEffect.d.ts.map +1 -1
  416. package/dist/typescript/module/shared/common.constants.d.ts +2 -0
  417. package/dist/typescript/module/shared/common.constants.d.ts.map +1 -0
  418. package/dist/typescript/module/shared/icons/TimeIcon.d.ts +4 -0
  419. package/dist/typescript/module/shared/icons/TimeIcon.d.ts.map +1 -0
  420. package/dist/typescript/module/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.d.ts +4 -0
  421. package/dist/typescript/module/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.d.ts.map +1 -0
  422. package/dist/typescript/module/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.d.ts +4 -0
  423. package/dist/typescript/module/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.d.ts.map +1 -0
  424. package/dist/typescript/module/shared/translation/constants.d.ts +6 -0
  425. package/dist/typescript/module/shared/translation/constants.d.ts.map +1 -1
  426. package/dist/typescript/module/shared/translation/model.d.ts +2 -0
  427. package/dist/typescript/module/shared/translation/model.d.ts.map +1 -1
  428. package/dist/typescript/module/types/common.types.d.ts +2 -0
  429. package/dist/typescript/module/types/common.types.d.ts.map +1 -1
  430. package/package.json +1 -1
  431. package/src/features/celebrations/helpers.ts +35 -33
  432. package/src/features/chatbot/TTS_HIGHLIGHTING.md +120 -0
  433. package/src/features/chatbot/components/Chat/Chat.tsx +76 -33
  434. package/src/features/chatbot/components/Chat/CloseButton.tsx +60 -0
  435. package/src/features/chatbot/components/ChatControls/ChatControls.tsx +45 -60
  436. package/src/features/chatbot/components/ChatInput/ChatInput.tsx +3 -1
  437. package/src/features/chatbot/components/ChatInput/FreeText/ChatTextInput.tsx +2 -2
  438. package/src/features/chatbot/components/ChatInput/FreeText/SendMessageButton.tsx +1 -1
  439. package/src/features/chatbot/components/ChatMessage/ChatMessage.tsx +3 -1
  440. package/src/features/chatbot/components/ChatMessage/MessageContent.tsx +25 -3
  441. package/src/features/chatbot/components/ChatMessage/MessageLoader.tsx +9 -21
  442. package/src/features/chatbot/components/ChatMessage/ReceivedMessage.tsx +11 -6
  443. package/src/features/chatbot/components/ChatMessage/SentMessage.tsx +1 -1
  444. package/src/features/chatbot/components/Chatbot.tsx +28 -3
  445. package/src/features/chatbot/constants.ts +2 -0
  446. package/src/features/chatbot/helpers/ttsHighlight.ts +25 -0
  447. package/src/features/chatbot/helpers.ts +14 -1
  448. package/src/features/chatbot/index.ts +17 -2
  449. package/src/features/chatbot/model/ChatBotModel.ts +67 -16
  450. package/src/features/chatbot/model/ChatBotThreadManager.ts +12 -4
  451. package/src/features/chatbot/model/ChatTTSHighlightModel.ts +64 -0
  452. package/src/features/chatbot/model/ChatTTSModel.ts +168 -0
  453. package/src/features/chatbot/model/ChatbotApi.ts +1 -1
  454. package/src/features/chatbot/model/ChatsCacheModel.ts +11 -0
  455. package/src/features/chatbot/types/api.types.ts +25 -19
  456. package/src/features/chatbot/types/model.types.ts +23 -12
  457. package/src/features/chatbot/types/t2s.types.ts +33 -0
  458. package/src/features/chatbot/types/units.types.ts +1 -0
  459. package/src/features/feedback/model/model.ts +4 -1
  460. package/src/features/feedback/model/sockets.ts +8 -6
  461. package/src/features/keyboard/components/AlgebraLayout/AlgebraLayout.tsx +4 -3
  462. package/src/features/keyboard/components/BasicLayout/BasicLayout.tsx +2 -2
  463. package/src/features/keyboard/components/BasicPlusLayout/keyboardGroups.ts +27 -17
  464. package/src/features/keyboard/components/BasicPlusPlusLayout/BasicPlusPlusLayout.tsx +3 -2
  465. package/src/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.ts +30 -24
  466. package/src/features/keyboard/components/Keyboard.tsx +14 -4
  467. package/src/features/keyboard/components/KeysList/KeysList.tsx +1 -1
  468. package/src/features/keyboard/components/MainLayout/MainLayout.tsx +2 -6
  469. package/src/features/keyboard/components/UnitsLayout/UnitTabs.tsx +1 -1
  470. package/src/features/keyboard/components/UnitsLayout/helpers.tsx +3 -0
  471. package/src/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.ts +36 -22
  472. package/src/features/keyboard/components/UnitsLayout/keyboardGroups.ts +11 -0
  473. package/src/features/keyboard/components/UnitsLayout/types.ts +7 -0
  474. package/src/features/keyboard/constants/constants.ts +1 -1
  475. package/src/features/keyboard/constants/keyboardGroupsByLocale.ts +2 -0
  476. package/src/features/keyboard/constants/keyboardLayouts.ts +18 -1
  477. package/src/features/keyboard/helpers.ts +6 -0
  478. package/src/features/keyboard/types/MathKeysGroups/basicOperators.tsx +15 -3
  479. package/src/features/keyboard/types/MathKeysGroups/units.tsx +3 -0
  480. package/src/features/openEnded/components/OpenEndedAttemptsLimit.tsx +26 -0
  481. package/src/features/openEnded/components/OpenEndedScoreLabel.tsx +81 -0
  482. package/src/features/openEnded/index.ts +4 -0
  483. package/src/features/openEnded/oe.helpers.ts +31 -0
  484. package/src/features/openEnded/oe.types.ts +6 -0
  485. package/src/index.ts +1 -0
  486. package/src/lib/components/ConditionalWrapper.tsx +15 -0
  487. package/src/lib/effector/createControllerEffect.ts +1 -1
  488. package/src/shared/common.constants.ts +3 -0
  489. package/src/shared/icons/TimeIcon.tsx +23 -0
  490. package/src/shared/icons/keyboard/CDotIcon/CDotIcon.tsx +2 -2
  491. package/src/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.tsx +18 -0
  492. package/src/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.tsx +18 -0
  493. package/src/shared/translation/localization/ca.json +2 -1
  494. package/src/shared/translation/localization/de.json +2 -1
  495. package/src/shared/translation/localization/en.json +2 -1
  496. package/src/shared/translation/localization/gb.json +2 -1
  497. package/src/shared/translation/localization/sct.json +2 -1
  498. package/src/shared/translation/localization/sw.json +2 -1
  499. package/src/types/common.types.ts +4 -0
  500. package/dist/commonjs/features/chatbot/model/t2s.js +0 -107
  501. package/dist/commonjs/features/chatbot/model/t2s.js.map +0 -1
  502. package/dist/module/features/chatbot/model/t2s.js +0 -102
  503. package/dist/module/features/chatbot/model/t2s.js.map +0 -1
  504. package/dist/typescript/commonjs/features/chatbot/model/t2s.d.ts +0 -34
  505. package/dist/typescript/commonjs/features/chatbot/model/t2s.d.ts.map +0 -1
  506. package/dist/typescript/module/features/chatbot/model/t2s.d.ts +0 -34
  507. package/dist/typescript/module/features/chatbot/model/t2s.d.ts.map +0 -1
  508. package/src/features/chatbot/model/t2s.ts +0 -123
@@ -13,7 +13,10 @@ const isDateInRange = (currentDate, startDateStr, endDateStr) => {
13
13
  const [endDay, endMonth] = endDateStr.split('-').map(Number);
14
14
  const currentYear = currentDate.getFullYear();
15
15
  const startDate = new Date(currentYear, startMonth - 1, startDay);
16
- const endDate = new Date(currentYear, endMonth - 1, endDay + 1);
16
+
17
+ // If end month is earlier than start month, it spans to next year
18
+ const endYear = endMonth < startMonth ? currentYear + 1 : currentYear;
19
+ const endDate = new Date(endYear, endMonth - 1, endDay + 1);
17
20
  return currentDate >= startDate && currentDate <= endDate;
18
21
  };
19
22
  const getIconForCurrentDate = () => {
@@ -1 +1 @@
1
- {"version":3,"names":["_Spark","require","_config","randomRange","min","max","Math","random","exports","isDateInRange","currentDate","startDateStr","endDateStr","startDay","startMonth","split","map","Number","endDay","endMonth","currentYear","getFullYear","startDate","Date","endDate","getIconForCurrentDate","celebration","CELEBRATION_ICON_CONFIG","activePeriod","start","end","Icon","MainIcon","generateParticle","variant","elementsCount","angle","rotation","sparkSize","mainSize","velocityMultiplier","friction","life","angularAcceleration","speedRange","CELEBRATION_VARIANTS","sparkSpeedMin","spark","sparkSpeedMax","mainSpeedMin","main","mainSpeedMax","particles","i","randomAngle","from","PI","to","randomSpeed","randomAngularAcceleration","push","id","size","type","velocity","x","cos","y","sin","rotationSpeed","Component","Spark","star"],"sourceRoot":"../../../../src","sources":["features/celebrations/helpers.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_Spark","require","_config","randomRange","min","max","Math","random","exports","isDateInRange","currentDate","startDateStr","endDateStr","startDay","startMonth","split","map","Number","endDay","endMonth","currentYear","getFullYear","startDate","Date","endYear","endDate","getIconForCurrentDate","celebration","CELEBRATION_ICON_CONFIG","activePeriod","start","end","Icon","MainIcon","generateParticle","variant","elementsCount","angle","rotation","sparkSize","mainSize","velocityMultiplier","friction","life","angularAcceleration","speedRange","CELEBRATION_VARIANTS","sparkSpeedMin","spark","sparkSpeedMax","mainSpeedMin","main","mainSpeedMax","particles","i","randomAngle","from","PI","to","randomSpeed","randomAngularAcceleration","push","id","size","type","velocity","x","cos","y","sin","rotationSpeed","Component","Spark","star"],"sourceRoot":"../../../../src","sources":["features/celebrations/helpers.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,120 @@
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 |
@@ -7,11 +7,14 @@ exports.Chat = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _effectorReact = require("effector-react");
10
+ var _reactNativeUi = require("@magmamath/react-native-ui");
10
11
  var _ChatMessage = require("../ChatMessage/ChatMessage.js");
11
12
  var _MessageLoader = require("../ChatMessage/MessageLoader.js");
12
13
  var _ChatInput = require("../ChatInput/ChatInput.js");
14
+ var _CloseButton = require("./CloseButton.js");
13
15
  var _modelTypes = require("../../types/model.types.js");
14
16
  var _styleTypes = require("../../types/style.types.js");
17
+ var _ConditionalWrapper = require("../../../../lib/components/ConditionalWrapper.js");
15
18
  var _jsxRuntime = require("react/jsx-runtime");
16
19
  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); }
17
20
  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; }
@@ -24,61 +27,86 @@ const Chat = ({
24
27
  model,
25
28
  isHintFeedback,
26
29
  isTextToSpeechEnabled,
27
- colorScheme = _styleTypes.ColorScheme.Blue
30
+ isInputDisabled,
31
+ colorScheme = _styleTypes.ColorScheme.Blue,
32
+ MessageWrapper,
33
+ TTSHighlightRenderer,
34
+ onPressClose
28
35
  }) => {
29
36
  const dimensions = (0, _reactNative.useWindowDimensions)();
30
37
  const ref = (0, _react.useRef)(null);
31
38
  const isOpen = (0, _effectorReact.useUnit)(model.$isOpen);
32
39
  const isHelpRequestPending = (0, _effectorReact.useUnit)(model.sendHelpRequestFx.pending);
33
40
  const isTextToSpeechPending = (0, _effectorReact.useUnit)(model.api.textToSpeechTextFx.pending);
41
+ const audioStatus = (0, _effectorReact.useUnit)(model.t2s.$status);
34
42
  const currentPlayingId = (0, _effectorReact.useUnit)(model.t2s.$currentPlayingId);
43
+ const highlightedWordIndex = (0, _effectorReact.useUnit)(model.t2s.wordHighlight.$highlightedWordIndex);
44
+ const isScrollActive = (0, _effectorReact.useUnit)(model.$isScrollActive);
35
45
  const isTranslated = (0, _effectorReact.useUnit)(model.translation.$isTranslated);
36
- const audioStatus = (0, _effectorReact.useUnit)(model.t2s.$status);
37
46
  const errorSpottingEnabled = (0, _effectorReact.useUnit)(model.errorSpotting.$isEnabled);
38
47
  const messages = (0, _effectorReact.useStoreMap)(model.$currentChatData, ({
39
48
  messages
40
49
  }) => messages);
41
50
  const lastMessageId = messages.at(-1)?.id;
42
51
  const MAX_HEIGHT = dimensions.height - TOOLBAR_HEIGHT - BOTTOM_OFFSET;
43
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
52
+ const shouldWrapMessage = MessageWrapper && isInputDisabled && messages.length === 1;
53
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
44
54
  style: [styles.container, {
45
55
  maxHeight: MAX_HEIGHT
46
56
  }],
47
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
57
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
48
58
  ref: ref,
49
59
  bounces: false,
50
60
  contentContainerStyle: styles.list,
51
61
  onContentSizeChange: (_, height) => {
52
- ref.current?.scrollToEnd();
62
+ if (messages.length > 1) {
63
+ ref.current?.scrollToEnd();
64
+ }
53
65
  if (height >= MAX_HEIGHT) {
54
66
  model.setScrollActive(true);
55
67
  }
56
68
  },
57
- children: [isOpen && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
58
- style: styles.gap,
59
- children: [messages.map(message => /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatMessage.ChatMessage, {
60
- isTranslated: isTranslated,
61
- withIcon: !message.isOwnMessage && message.id === lastMessageId,
62
- message: message,
63
- variant: message.isOwnMessage ? _modelTypes.MessageVariant.SENT : _modelTypes.MessageVariant.RECEIVED,
64
- colorScheme: colorScheme,
65
- withErrorSpotting: errorSpottingEnabled && !message.isOwnMessage,
66
- t2sState: {
67
- isEnabled: isTextToSpeechEnabled && !message.isOwnMessage,
68
- isActive: message.id === currentPlayingId,
69
- isLoading: isTextToSpeechPending,
70
- status: audioStatus,
71
- disabled: isTextToSpeechPending
72
- }
73
- }, message.id)), isHelpRequestPending && /*#__PURE__*/(0, _jsxRuntime.jsx)(_MessageLoader.MessageLoader, {
74
- colorScheme: colorScheme
75
- })]
76
- }), isOpen && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatInput.ChatInput, {
69
+ children: isOpen && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
70
+ style: [styles.gap, isInputDisabled && styles.messagesWithoutInput],
71
+ children: [messages.map((message, index) => {
72
+ const key = `${message.id}-${index}`;
73
+ const isPlayingMessage = message.id === currentPlayingId;
74
+ const messageHighlightIndex = model.t2s.isWordHighlightEnabled && isPlayingMessage ? highlightedWordIndex : -1;
75
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
76
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ConditionalWrapper.ConditionalWrapper, {
77
+ withWrapper: shouldWrapMessage,
78
+ Wrapper: MessageWrapper,
79
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatMessage.ChatMessage, {
80
+ isTranslated: isTranslated,
81
+ withIcon: !message.isOwnMessage && message.id === lastMessageId,
82
+ message: message,
83
+ variant: message.isOwnMessage ? _modelTypes.MessageVariant.SENT : _modelTypes.MessageVariant.RECEIVED,
84
+ colorScheme: colorScheme,
85
+ withErrorSpotting: errorSpottingEnabled && !message.isOwnMessage,
86
+ highlightedWordIndex: messageHighlightIndex,
87
+ TTSHighlightRenderer: TTSHighlightRenderer,
88
+ t2sState: {
89
+ isEnabled: isTextToSpeechEnabled && !message.isOwnMessage,
90
+ isActive: isPlayingMessage,
91
+ isLoading: isTextToSpeechPending,
92
+ status: audioStatus,
93
+ disabled: isTextToSpeechPending
94
+ }
95
+ })
96
+ })
97
+ }, key);
98
+ }), isHelpRequestPending && /*#__PURE__*/(0, _jsxRuntime.jsx)(_MessageLoader.MessageLoader, {})]
99
+ })
100
+ }), isOpen && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
101
+ style: styles.inputRow,
102
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_CloseButton.CloseButton, {
103
+ onPress: onPressClose
104
+ }), !isInputDisabled && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatInput.ChatInput, {
77
105
  isHintFeedback: isHintFeedback,
78
106
  colorScheme: colorScheme,
79
107
  hasMessages: messages.length > 1
80
108
  })]
81
- })
109
+ })]
82
110
  });
83
111
  };
84
112
  exports.Chat = Chat;
@@ -87,16 +115,24 @@ const styles = _reactNative.StyleSheet.create({
87
115
  flex: 1,
88
116
  alignItems: 'flex-end',
89
117
  width: 378,
90
- height: '100%'
118
+ height: '100%',
119
+ paddingRight: _reactNativeUi.SPACING['200']
91
120
  },
92
121
  list: {
93
122
  alignItems: 'flex-end',
94
- paddingVertical: 2,
95
- paddingRight: 6
123
+ paddingVertical: 2
124
+ },
125
+ messagesWithoutInput: {
126
+ marginBottom: _reactNativeUi.SPACING['200']
127
+ },
128
+ inputRow: {
129
+ flexDirection: 'row',
130
+ alignItems: 'center',
131
+ gap: _reactNativeUi.SPACING['200']
96
132
  },
97
133
  gap: {
98
134
  flex: 1,
99
- gap: 8
135
+ gap: _reactNativeUi.SPACING['200']
100
136
  }
101
137
  });
102
138
  //# sourceMappingURL=Chat.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_effectorReact","_ChatMessage","_MessageLoader","_ChatInput","_modelTypes","_styleTypes","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TOOLBAR_HEIGHT","BOTTOM_OFFSET","Platform","select","web","Chat","model","isHintFeedback","isTextToSpeechEnabled","colorScheme","ColorScheme","Blue","dimensions","useWindowDimensions","ref","useRef","isOpen","useUnit","$isOpen","isHelpRequestPending","sendHelpRequestFx","pending","isTextToSpeechPending","api","textToSpeechTextFx","currentPlayingId","t2s","$currentPlayingId","isTranslated","translation","$isTranslated","audioStatus","$status","errorSpottingEnabled","errorSpotting","$isEnabled","messages","useStoreMap","$currentChatData","lastMessageId","at","id","MAX_HEIGHT","height","jsx","View","style","styles","container","maxHeight","children","jsxs","ScrollView","bounces","contentContainerStyle","list","onContentSizeChange","_","current","scrollToEnd","setScrollActive","gap","map","message","ChatMessage","withIcon","isOwnMessage","variant","MessageVariant","SENT","RECEIVED","withErrorSpotting","t2sState","isEnabled","isActive","isLoading","status","disabled","MessageLoader","ChatInput","hasMessages","length","exports","StyleSheet","create","flex","alignItems","width","paddingVertical","paddingRight"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/Chat/Chat.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_effectorReact","_reactNativeUi","_ChatMessage","_MessageLoader","_ChatInput","_CloseButton","_modelTypes","_styleTypes","_ConditionalWrapper","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TOOLBAR_HEIGHT","BOTTOM_OFFSET","Platform","select","web","Chat","model","isHintFeedback","isTextToSpeechEnabled","isInputDisabled","colorScheme","ColorScheme","Blue","MessageWrapper","TTSHighlightRenderer","onPressClose","dimensions","useWindowDimensions","ref","useRef","isOpen","useUnit","$isOpen","isHelpRequestPending","sendHelpRequestFx","pending","isTextToSpeechPending","api","textToSpeechTextFx","audioStatus","t2s","$status","currentPlayingId","$currentPlayingId","highlightedWordIndex","wordHighlight","$highlightedWordIndex","isScrollActive","$isScrollActive","isTranslated","translation","$isTranslated","errorSpottingEnabled","errorSpotting","$isEnabled","messages","useStoreMap","$currentChatData","lastMessageId","at","id","MAX_HEIGHT","height","shouldWrapMessage","length","jsxs","View","style","styles","container","maxHeight","children","jsx","ScrollView","bounces","contentContainerStyle","list","onContentSizeChange","_","current","scrollToEnd","setScrollActive","gap","messagesWithoutInput","map","message","index","key","isPlayingMessage","messageHighlightIndex","isWordHighlightEnabled","Fragment","ConditionalWrapper","withWrapper","Wrapper","ChatMessage","withIcon","isOwnMessage","variant","MessageVariant","SENT","RECEIVED","withErrorSpotting","t2sState","isEnabled","isActive","isLoading","status","disabled","MessageLoader","inputRow","CloseButton","onPress","ChatInput","hasMessages","exports","StyleSheet","create","flex","alignItems","width","paddingRight","SPACING","paddingVertical","marginBottom","flexDirection"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/Chat/Chat.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,61 @@
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 COLOR_SCHEME = {
14
+ [_reactNativeUi.ButtonStates.DEFAULT]: {
15
+ backgroundColor: _reactNativeUi.COLORS.NEUTRAL_1,
16
+ borderColor: _reactNativeUi.COLORS.NEUTRAL_5,
17
+ raiseColor: _reactNativeUi.COLORS.NEUTRAL_5,
18
+ color: _reactNativeUi.COLORS.NEUTRAL_10
19
+ },
20
+ [_reactNativeUi.ButtonStates.PRESSED]: {
21
+ backgroundColor: _reactNativeUi.COLORS.NEUTRAL_4,
22
+ borderColor: _reactNativeUi.COLORS.NEUTRAL_5,
23
+ raiseColor: _reactNativeUi.COLORS.NEUTRAL_5,
24
+ color: _reactNativeUi.COLORS.NEUTRAL_1
25
+ },
26
+ [_reactNativeUi.ButtonStates.HOVER]: {
27
+ backgroundColor: _reactNativeUi.COLORS.NEUTRAL_3,
28
+ borderColor: _reactNativeUi.COLORS.NEUTRAL_5,
29
+ raiseColor: _reactNativeUi.COLORS.NEUTRAL_5,
30
+ color: _reactNativeUi.COLORS.NEUTRAL_10
31
+ }
32
+ };
33
+ const CloseButton = ({
34
+ onPress
35
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeUi.Button, {
36
+ onPress: onPress,
37
+ style: {
38
+ button: styles.button
39
+ },
40
+ variant: _reactNativeUi.ButtonVariant.PRIMARY,
41
+ size: _reactNativeUi.ButtonSize.MEDIUM,
42
+ colorScheme: _reactNativeUi.ButtonColor.WHITE,
43
+ raiseLevel: 5
44
+ // customColorScheme={COLOR_SCHEME}
45
+ ,
46
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CloseIcon.CloseIcon, {
47
+ width: 18,
48
+ height: 18
49
+ })
50
+ });
51
+ exports.CloseButton = CloseButton;
52
+ const styles = _reactNative.StyleSheet.create({
53
+ button: {
54
+ width: 38,
55
+ height: 38,
56
+ borderRadius: 36,
57
+ paddingHorizontal: 0,
58
+ borderColor: _reactNativeUi.COLORS.NEUTRAL_5
59
+ }
60
+ });
61
+ //# sourceMappingURL=CloseButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeUi","_CloseIcon","_jsxRuntime","e","__esModule","default","COLOR_SCHEME","ButtonStates","DEFAULT","backgroundColor","COLORS","NEUTRAL_1","borderColor","NEUTRAL_5","raiseColor","color","NEUTRAL_10","PRESSED","NEUTRAL_4","HOVER","NEUTRAL_3","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"],"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;AAQA,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;AAE9D,MAAMG,YAAY,GAAG;EACnB,CAACC,2BAAY,CAACC,OAAO,GAAG;IACtBC,eAAe,EAAEC,qBAAM,CAACC,SAAS;IACjCC,WAAW,EAAEF,qBAAM,CAACG,SAAS;IAC7BC,UAAU,EAAEJ,qBAAM,CAACG,SAAS;IAC5BE,KAAK,EAAEL,qBAAM,CAACM;EAChB,CAAC;EACD,CAACT,2BAAY,CAACU,OAAO,GAAG;IACtBR,eAAe,EAAEC,qBAAM,CAACQ,SAAS;IACjCN,WAAW,EAAEF,qBAAM,CAACG,SAAS;IAC7BC,UAAU,EAAEJ,qBAAM,CAACG,SAAS;IAC5BE,KAAK,EAAEL,qBAAM,CAACC;EAChB,CAAC;EACD,CAACJ,2BAAY,CAACY,KAAK,GAAG;IACpBV,eAAe,EAAEC,qBAAM,CAACU,SAAS;IACjCR,WAAW,EAAEF,qBAAM,CAACG,SAAS;IAC7BC,UAAU,EAAEJ,qBAAM,CAACG,SAAS;IAC5BE,KAAK,EAAEL,qBAAM,CAACM;EAChB;AACF,CAAC;AAMM,MAAMK,WAAW,GAAGA,CAAC;EAAEC;AAA0B,CAAC,kBACvD,IAAApB,WAAA,CAAAqB,GAAA,EAACvB,cAAA,CAAAwB,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;EACZ;EAAA;EAAAC,QAAA,eAEA,IAAApC,WAAA,CAAAqB,GAAA,EAACtB,UAAA,CAAAsC,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;IACpBlC,WAAW,EAAEF,qBAAM,CAACG;EACtB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -4,70 +4,60 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ChatControls = void 0;
7
- var _react = _interopRequireDefault(require("react"));
7
+ var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _reactNativeUi = require("@magmamath/react-native-ui");
10
10
  var _effectorReact = require("effector-react");
11
11
  var _ChatbotIcon = require("../../../../shared/icons/ChatbotIcon.js");
12
- var _CloseIcon = require("../../../../shared/icons/CloseIcon.js");
13
12
  var _jsxRuntime = require("react/jsx-runtime");
14
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ 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); }
14
+ 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; }
15
+ const HELP_BUTTON_TIMEOUT_MS = 5000;
15
16
  const ChatControls = ({
16
17
  model,
17
18
  onPressChatIcon,
18
- onPressClose,
19
+ onPressHelpButton,
20
+ withHelpButton = false,
19
21
  ButtonWrapper = _react.default.Fragment,
20
22
  iconSize = {
21
- width: 80,
22
- height: 100
23
+ width: 70,
24
+ height: 90
23
25
  }
24
26
  }) => {
25
27
  const isOpen = (0, _effectorReact.useUnit)(model.$isOpen);
28
+ const [isHelpButtonVisible, setIsHelpButtonVisible] = (0, _react.useState)(withHelpButton);
29
+ (0, _react.useEffect)(() => {
30
+ const timeoutId = setTimeout(() => setIsHelpButtonVisible(false), HELP_BUTTON_TIMEOUT_MS);
31
+ return () => {
32
+ clearTimeout(timeoutId);
33
+ setIsHelpButtonVisible(false);
34
+ };
35
+ }, [withHelpButton]);
26
36
  if (isOpen) {
27
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
28
- style: styles.container,
29
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeUi.Button, {
30
- onPress: onPressClose,
31
- style: {
32
- button: styles.buttonClose
33
- },
34
- variant: _reactNativeUi.ButtonVariant.PRIMARY,
35
- size: _reactNativeUi.ButtonSize.LARGE,
36
- colorScheme: _reactNativeUi.ButtonColor.WHITE,
37
- raiseLevel: 5,
38
- customColorScheme: {
39
- [_reactNativeUi.ButtonStates.DEFAULT]: {
40
- backgroundColor: _reactNativeUi.COLORS.NEUTRAL_1,
41
- borderColor: _reactNativeUi.COLORS.NEUTRAL_5,
42
- raiseColor: _reactNativeUi.COLORS.NEUTRAL_5,
43
- color: _reactNativeUi.COLORS.NEUTRAL_10
44
- },
45
- [_reactNativeUi.ButtonStates.PRESSED]: {
46
- backgroundColor: _reactNativeUi.COLORS.NEUTRAL_4,
47
- borderColor: _reactNativeUi.COLORS.NEUTRAL_5,
48
- raiseColor: _reactNativeUi.COLORS.NEUTRAL_5,
49
- color: _reactNativeUi.COLORS.NEUTRAL_1
50
- },
51
- [_reactNativeUi.ButtonStates.HOVER]: {
52
- backgroundColor: _reactNativeUi.COLORS.NEUTRAL_3,
53
- borderColor: _reactNativeUi.COLORS.NEUTRAL_5,
54
- raiseColor: _reactNativeUi.COLORS.NEUTRAL_5,
55
- color: _reactNativeUi.COLORS.NEUTRAL_10
56
- }
57
- },
58
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CloseIcon.CloseIcon, {})
59
- })
60
- });
37
+ return null;
61
38
  }
62
39
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
63
40
  style: styles.container,
64
41
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ButtonWrapper, {
65
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
66
- onPress: onPressChatIcon,
67
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatbotIcon.ChatbotIcon, {
68
- width: iconSize?.width,
69
- height: iconSize?.height
70
- })
42
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
43
+ style: styles.closedWrapper,
44
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
45
+ onPress: onPressChatIcon,
46
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatbotIcon.ChatbotIcon, {
47
+ width: iconSize?.width,
48
+ height: iconSize?.height
49
+ })
50
+ }), isHelpButtonVisible && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeUi.Button, {
51
+ variant: _reactNativeUi.ButtonVariant.PRIMARY,
52
+ colorScheme: _reactNativeUi.ButtonColor.WHITE,
53
+ size: _reactNativeUi.ButtonSize.MEDIUM,
54
+ raiseLevel: 3,
55
+ onPress: onPressHelpButton,
56
+ style: {
57
+ text: styles.helpButtonText
58
+ },
59
+ children: "Want some help?"
60
+ })]
71
61
  })
72
62
  })
73
63
  });
@@ -79,16 +69,16 @@ const styles = _reactNative.StyleSheet.create({
79
69
  justifyContent: 'flex-end',
80
70
  flexDirection: 'row',
81
71
  maxHeight: 100,
82
- gap: 8,
72
+ gap: 2,
83
73
  paddingBottom: 5
84
74
  },
85
- buttonClose: {
86
- width: 50,
87
- height: 50,
88
- borderRadius: 50,
89
- paddingHorizontal: 0,
90
- borderWidth: 1.5,
91
- borderColor: _reactNativeUi.COLORS.NEUTRAL_5
75
+ closedWrapper: {
76
+ flexDirection: 'row',
77
+ alignItems: 'flex-end',
78
+ gap: 8
79
+ },
80
+ helpButtonText: {
81
+ textTransform: 'uppercase'
92
82
  }
93
83
  });
94
84
  //# sourceMappingURL=ChatControls.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeUi","_effectorReact","_ChatbotIcon","_CloseIcon","_jsxRuntime","e","__esModule","default","ChatControls","model","onPressChatIcon","onPressClose","ButtonWrapper","React","Fragment","iconSize","width","height","isOpen","useUnit","$isOpen","jsx","View","style","styles","container","children","Button","onPress","button","buttonClose","variant","ButtonVariant","PRIMARY","size","ButtonSize","LARGE","colorScheme","ButtonColor","WHITE","raiseLevel","customColorScheme","ButtonStates","DEFAULT","backgroundColor","COLORS","NEUTRAL_1","borderColor","NEUTRAL_5","raiseColor","color","NEUTRAL_10","PRESSED","NEUTRAL_4","HOVER","NEUTRAL_3","CloseIcon","Pressable","ChatbotIcon","exports","StyleSheet","create","alignItems","justifyContent","flexDirection","maxHeight","gap","paddingBottom","borderRadius","paddingHorizontal","borderWidth"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/ChatControls/ChatControls.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeUi","_effectorReact","_ChatbotIcon","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","HELP_BUTTON_TIMEOUT_MS","ChatControls","model","onPressChatIcon","onPressHelpButton","withHelpButton","ButtonWrapper","React","Fragment","iconSize","width","height","isOpen","useUnit","$isOpen","isHelpButtonVisible","setIsHelpButtonVisible","useState","useEffect","timeoutId","setTimeout","clearTimeout","jsx","View","style","styles","container","children","jsxs","closedWrapper","Pressable","onPress","ChatbotIcon","Button","variant","ButtonVariant","PRIMARY","colorScheme","ButtonColor","WHITE","size","ButtonSize","MEDIUM","raiseLevel","text","helpButtonText","exports","StyleSheet","create","alignItems","justifyContent","flexDirection","maxHeight","gap","paddingBottom","textTransform"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/ChatControls/ChatControls.tsx"],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.ChatInput = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
+ var _reactNativeUi = require("@magmamath/react-native-ui");
9
10
  var _effectorReact = require("effector-react");
10
11
  var _ChatBotModelContext = require("../../context/ChatBotModelContext.js");
11
12
  var _styleTypes = require("../../types/style.types.js");
@@ -67,7 +68,8 @@ const styles = _reactNative.StyleSheet.create({
67
68
  width: 305,
68
69
  alignItems: 'center',
69
70
  justifyContent: 'center',
70
- marginVertical: 8
71
+ marginVertical: _reactNativeUi.SPACING['200'],
72
+ marginLeft: 6
71
73
  }
72
74
  });
73
75
  //# sourceMappingURL=ChatInput.js.map