@magmamath/students-features 0.9.9 → 0.9.14-rc.11

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 (378) hide show
  1. package/.editorconfig +15 -0
  2. package/.eslintignore +2 -0
  3. package/.eslintrc +22 -0
  4. package/.gitattributes +3 -0
  5. package/.github/actions/setup/action.yml +37 -0
  6. package/.github/workflows/ci.yml +73 -0
  7. package/.gitignore +84 -0
  8. package/.idea/.gitignore +8 -0
  9. package/.idea/codeStyles/Project.xml +62 -0
  10. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  11. package/.idea/copilot.data.migration.agent.xml +6 -0
  12. package/.idea/copilot.data.migration.ask.xml +6 -0
  13. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  14. package/.idea/copilot.data.migration.edit.xml +6 -0
  15. package/.idea/inspectionProfiles/Project_Default.xml +8 -0
  16. package/.idea/jsLinters/eslint.xml +6 -0
  17. package/.idea/modules.xml +8 -0
  18. package/.idea/prettier.xml +7 -0
  19. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_29_12_2025,_13_10_[Changes]/shelved.patch +18 -0
  20. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_29_12_2025,_13_11_[Changes]/shelved.patch +19 -0
  21. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_29_12_2025__13_10__Changes_.xml +4 -0
  22. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_29_12_2025__13_11__Changes_.xml +4 -0
  23. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_30_12_2025,_11_06_[Changes]/shelved.patch +18 -0
  24. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_30_12_2025,_11_07_[Changes]/shelved.patch +18 -0
  25. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_30_12_2025__11_06__Changes_.xml +4 -0
  26. package/.idea/students-features.iml +12 -0
  27. package/.idea/vcs.xml +6 -0
  28. package/.idea/workspace.xml +645 -0
  29. package/.nvmrc +1 -0
  30. package/.prettierrc +11 -0
  31. package/.release-it.json +17 -0
  32. package/.watchmanconfig +1 -0
  33. package/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs +541 -0
  34. package/.yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs +28 -0
  35. package/.yarn/releases/yarn-3.6.1.cjs +874 -0
  36. package/babel.config.js +5 -0
  37. package/bob.config.js +25 -0
  38. package/dist/commonjs/features/celebrations/helpers.js +4 -1
  39. package/dist/commonjs/features/celebrations/helpers.js.map +1 -1
  40. package/dist/commonjs/features/chatbot/components/Chatbot.js +2 -2
  41. package/dist/commonjs/features/chatbot/components/Chatbot.js.map +1 -1
  42. package/dist/commonjs/features/chatbot/model/ChatBotModel.js +8 -6
  43. package/dist/commonjs/features/chatbot/model/ChatBotModel.js.map +1 -1
  44. package/dist/commonjs/features/chatbot/model/t2s.js +4 -3
  45. package/dist/commonjs/features/chatbot/model/t2s.js.map +1 -1
  46. package/dist/commonjs/features/chatbot/types/model.types.js.map +1 -1
  47. package/dist/commonjs/features/endOfAssignment/ui/PracticeButtonGroup.js +3 -2
  48. package/dist/commonjs/features/endOfAssignment/ui/PracticeButtonGroup.js.map +1 -1
  49. package/dist/commonjs/features/feedback/model/model.js.map +1 -1
  50. package/dist/commonjs/features/feedback/model/sockets.js +8 -5
  51. package/dist/commonjs/features/feedback/model/sockets.js.map +1 -1
  52. package/dist/commonjs/features/keyboard/components/BasicLayout/keyboardGroups.js +5 -1
  53. package/dist/commonjs/features/keyboard/components/BasicLayout/keyboardGroups.js.map +1 -1
  54. package/dist/commonjs/features/keyboard/components/BasicPlusLayout/keyboardGroups.js +4 -4
  55. package/dist/commonjs/features/keyboard/components/BasicPlusLayout/keyboardGroups.js.map +1 -1
  56. package/dist/commonjs/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.js +4 -4
  57. package/dist/commonjs/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.js.map +1 -1
  58. package/dist/commonjs/features/keyboard/components/Keyboard.js +24 -9
  59. package/dist/commonjs/features/keyboard/components/Keyboard.js.map +1 -1
  60. package/dist/commonjs/features/keyboard/components/{MainLayout.js → MainLayout/MainLayout.js} +9 -7
  61. package/dist/commonjs/features/keyboard/components/MainLayout/MainLayout.js.map +1 -0
  62. package/dist/commonjs/features/keyboard/components/{constants.js → MainLayout/constants.js} +7 -2
  63. package/dist/commonjs/features/keyboard/components/MainLayout/constants.js.map +1 -0
  64. package/dist/commonjs/features/keyboard/components/UnderlinedLayout/UnderlinedLayout.js +3 -2
  65. package/dist/commonjs/features/keyboard/components/UnderlinedLayout/UnderlinedLayout.js.map +1 -1
  66. package/dist/commonjs/features/keyboard/components/UnderlinedLayout/keyboardGroups.js +2 -1
  67. package/dist/commonjs/features/keyboard/components/UnderlinedLayout/keyboardGroups.js.map +1 -1
  68. package/dist/commonjs/features/keyboard/components/UnitsLayout/UnitsLayout.js +2 -1
  69. package/dist/commonjs/features/keyboard/components/UnitsLayout/UnitsLayout.js.map +1 -1
  70. package/dist/commonjs/features/keyboard/components/UnitsLayout/helpers.js +3 -1
  71. package/dist/commonjs/features/keyboard/components/UnitsLayout/helpers.js.map +1 -1
  72. package/dist/commonjs/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.js +27 -6
  73. package/dist/commonjs/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.js.map +1 -1
  74. package/dist/commonjs/features/keyboard/components/UnitsLayout/keyboardGroups.js +9 -1
  75. package/dist/commonjs/features/keyboard/components/UnitsLayout/keyboardGroups.js.map +1 -1
  76. package/dist/commonjs/features/keyboard/components/UnitsLayout/types.js +1 -0
  77. package/dist/commonjs/features/keyboard/components/UnitsLayout/types.js.map +1 -1
  78. package/dist/commonjs/features/keyboard/constants/keyboardGroupsByLocale.js +22 -1
  79. package/dist/commonjs/features/keyboard/constants/keyboardGroupsByLocale.js.map +1 -1
  80. package/dist/commonjs/features/keyboard/constants/keyboardLayouts.js +7 -0
  81. package/dist/commonjs/features/keyboard/constants/keyboardLayouts.js.map +1 -1
  82. package/dist/commonjs/features/keyboard/types/MathKeysGroups/basicOperators.js +20 -30
  83. package/dist/commonjs/features/keyboard/types/MathKeysGroups/basicOperators.js.map +1 -1
  84. package/dist/commonjs/features/keyboard/types/MathKeysGroups/specialOperators.js +27 -0
  85. package/dist/commonjs/features/keyboard/types/MathKeysGroups/specialOperators.js.map +1 -1
  86. package/dist/commonjs/features/keyboard/types/MathKeysGroups/units.js +6 -3
  87. package/dist/commonjs/features/keyboard/types/MathKeysGroups/units.js.map +1 -1
  88. package/dist/commonjs/features/keyboard/types/keyboardGroupIds.js +1 -0
  89. package/dist/commonjs/features/keyboard/types/keyboardGroupIds.js.map +1 -1
  90. package/dist/commonjs/lib/helpers/helpers.js +28 -5
  91. package/dist/commonjs/lib/helpers/helpers.js.map +1 -1
  92. package/dist/commonjs/lib/types/requests.js +2 -0
  93. package/dist/commonjs/lib/types/requests.js.map +1 -0
  94. package/dist/commonjs/shared/icons/TimeIcon.js +37 -0
  95. package/dist/commonjs/shared/icons/TimeIcon.js.map +1 -0
  96. package/dist/commonjs/shared/icons/keyboard/CDotIcon/CDotIcon.js +4 -4
  97. package/dist/commonjs/shared/icons/keyboard/CDotIcon/CDotIcon.js.map +1 -1
  98. package/dist/commonjs/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.js +32 -0
  99. package/dist/commonjs/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.js.map +1 -0
  100. package/dist/commonjs/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.js +32 -0
  101. package/dist/commonjs/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.js.map +1 -0
  102. package/dist/commonjs/shared/translation/constants.js +3 -1
  103. package/dist/commonjs/shared/translation/constants.js.map +1 -1
  104. package/dist/commonjs/shared/translation/localization/ca.json +7 -6
  105. package/dist/commonjs/shared/translation/localization/de.json +43 -0
  106. package/dist/commonjs/shared/translation/localization/en.json +7 -6
  107. package/dist/commonjs/shared/translation/localization/gb.json +7 -6
  108. package/dist/commonjs/shared/translation/localization/sct.json +7 -6
  109. package/dist/commonjs/shared/translation/localization/sw.json +7 -6
  110. package/dist/commonjs/shared/translation/types.js +1 -0
  111. package/dist/commonjs/shared/translation/types.js.map +1 -1
  112. package/dist/module/features/celebrations/helpers.js +4 -1
  113. package/dist/module/features/celebrations/helpers.js.map +1 -1
  114. package/dist/module/features/chatbot/components/Chatbot.js +2 -2
  115. package/dist/module/features/chatbot/components/Chatbot.js.map +1 -1
  116. package/dist/module/features/chatbot/model/ChatBotModel.js +8 -6
  117. package/dist/module/features/chatbot/model/ChatBotModel.js.map +1 -1
  118. package/dist/module/features/chatbot/model/t2s.js +4 -3
  119. package/dist/module/features/chatbot/model/t2s.js.map +1 -1
  120. package/dist/module/features/chatbot/types/model.types.js.map +1 -1
  121. package/dist/module/features/endOfAssignment/ui/PracticeButtonGroup.js +3 -2
  122. package/dist/module/features/endOfAssignment/ui/PracticeButtonGroup.js.map +1 -1
  123. package/dist/module/features/feedback/model/model.js.map +1 -1
  124. package/dist/module/features/feedback/model/sockets.js +8 -5
  125. package/dist/module/features/feedback/model/sockets.js.map +1 -1
  126. package/dist/module/features/keyboard/components/BasicLayout/keyboardGroups.js +4 -0
  127. package/dist/module/features/keyboard/components/BasicLayout/keyboardGroups.js.map +1 -1
  128. package/dist/module/features/keyboard/components/BasicPlusLayout/keyboardGroups.js +4 -4
  129. package/dist/module/features/keyboard/components/BasicPlusLayout/keyboardGroups.js.map +1 -1
  130. package/dist/module/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.js +4 -4
  131. package/dist/module/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.js.map +1 -1
  132. package/dist/module/features/keyboard/components/Keyboard.js +23 -8
  133. package/dist/module/features/keyboard/components/Keyboard.js.map +1 -1
  134. package/dist/module/features/keyboard/components/KeysList/KeysList.js.map +1 -1
  135. package/dist/module/features/keyboard/components/{MainLayout.js → MainLayout/MainLayout.js} +9 -7
  136. package/dist/module/features/keyboard/components/MainLayout/MainLayout.js.map +1 -0
  137. package/dist/module/features/keyboard/components/{constants.js → MainLayout/constants.js} +6 -1
  138. package/dist/module/features/keyboard/components/MainLayout/constants.js.map +1 -0
  139. package/dist/module/features/keyboard/components/UnderlinedLayout/UnderlinedLayout.js +3 -2
  140. package/dist/module/features/keyboard/components/UnderlinedLayout/UnderlinedLayout.js.map +1 -1
  141. package/dist/module/features/keyboard/components/UnderlinedLayout/keyboardGroups.js +2 -1
  142. package/dist/module/features/keyboard/components/UnderlinedLayout/keyboardGroups.js.map +1 -1
  143. package/dist/module/features/keyboard/components/UnitsLayout/UnitsLayout.js +2 -1
  144. package/dist/module/features/keyboard/components/UnitsLayout/UnitsLayout.js.map +1 -1
  145. package/dist/module/features/keyboard/components/UnitsLayout/helpers.js +2 -1
  146. package/dist/module/features/keyboard/components/UnitsLayout/helpers.js.map +1 -1
  147. package/dist/module/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.js +27 -6
  148. package/dist/module/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.js.map +1 -1
  149. package/dist/module/features/keyboard/components/UnitsLayout/keyboardGroups.js +9 -1
  150. package/dist/module/features/keyboard/components/UnitsLayout/keyboardGroups.js.map +1 -1
  151. package/dist/module/features/keyboard/components/UnitsLayout/types.js +1 -0
  152. package/dist/module/features/keyboard/components/UnitsLayout/types.js.map +1 -1
  153. package/dist/module/features/keyboard/constants/keyboardGroupsByLocale.js +24 -3
  154. package/dist/module/features/keyboard/constants/keyboardGroupsByLocale.js.map +1 -1
  155. package/dist/module/features/keyboard/constants/keyboardLayouts.js +6 -0
  156. package/dist/module/features/keyboard/constants/keyboardLayouts.js.map +1 -1
  157. package/dist/module/features/keyboard/types/MathKeysGroups/basicOperators.js +20 -30
  158. package/dist/module/features/keyboard/types/MathKeysGroups/basicOperators.js.map +1 -1
  159. package/dist/module/features/keyboard/types/MathKeysGroups/specialOperators.js +27 -0
  160. package/dist/module/features/keyboard/types/MathKeysGroups/specialOperators.js.map +1 -1
  161. package/dist/module/features/keyboard/types/MathKeysGroups/units.js +6 -3
  162. package/dist/module/features/keyboard/types/MathKeysGroups/units.js.map +1 -1
  163. package/dist/module/features/keyboard/types/keyboardGroupIds.js +1 -0
  164. package/dist/module/features/keyboard/types/keyboardGroupIds.js.map +1 -1
  165. package/dist/module/lib/helpers/helpers.js +28 -5
  166. package/dist/module/lib/helpers/helpers.js.map +1 -1
  167. package/dist/module/lib/types/requests.js +2 -0
  168. package/dist/module/lib/types/requests.js.map +1 -0
  169. package/dist/module/shared/icons/TimeIcon.js +29 -0
  170. package/dist/module/shared/icons/TimeIcon.js.map +1 -0
  171. package/dist/module/shared/icons/keyboard/CDotIcon/CDotIcon.js +4 -4
  172. package/dist/module/shared/icons/keyboard/CDotIcon/CDotIcon.js.map +1 -1
  173. package/dist/module/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.js +24 -0
  174. package/dist/module/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.js.map +1 -0
  175. package/dist/module/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.js +24 -0
  176. package/dist/module/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.js.map +1 -0
  177. package/dist/module/shared/translation/constants.js +3 -1
  178. package/dist/module/shared/translation/constants.js.map +1 -1
  179. package/dist/module/shared/translation/localization/ca.json +7 -6
  180. package/dist/module/shared/translation/localization/de.json +43 -0
  181. package/dist/module/shared/translation/localization/en.json +7 -6
  182. package/dist/module/shared/translation/localization/gb.json +7 -6
  183. package/dist/module/shared/translation/localization/sct.json +7 -6
  184. package/dist/module/shared/translation/localization/sw.json +7 -6
  185. package/dist/module/shared/translation/types.js +1 -0
  186. package/dist/module/shared/translation/types.js.map +1 -1
  187. package/dist/typescript/commonjs/features/celebrations/helpers.d.ts.map +1 -1
  188. package/dist/typescript/commonjs/features/chatbot/model/ChatBotModel.d.ts +8 -7
  189. package/dist/typescript/commonjs/features/chatbot/model/ChatBotModel.d.ts.map +1 -1
  190. package/dist/typescript/commonjs/features/chatbot/model/ChatbotApi.d.ts +2 -2
  191. package/dist/typescript/commonjs/features/chatbot/model/ChatbotApi.d.ts.map +1 -1
  192. package/dist/typescript/commonjs/features/chatbot/model/t2s.d.ts.map +1 -1
  193. package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts +11 -1
  194. package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts.map +1 -1
  195. package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts +8 -5
  196. package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts.map +1 -1
  197. package/dist/typescript/commonjs/features/endOfAssignment/ui/PracticeButtonGroup.d.ts.map +1 -1
  198. package/dist/typescript/commonjs/features/feedback/model/model.d.ts +4 -1
  199. package/dist/typescript/commonjs/features/feedback/model/model.d.ts.map +1 -1
  200. package/dist/typescript/commonjs/features/feedback/model/sockets.d.ts.map +1 -1
  201. package/dist/typescript/commonjs/features/keyboard/components/BasicLayout/keyboardGroups.d.ts +1 -0
  202. package/dist/typescript/commonjs/features/keyboard/components/BasicLayout/keyboardGroups.d.ts.map +1 -1
  203. package/dist/typescript/commonjs/features/keyboard/components/BasicPlusLayout/keyboardGroups.d.ts.map +1 -1
  204. package/dist/typescript/commonjs/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.d.ts.map +1 -1
  205. package/dist/typescript/commonjs/features/keyboard/components/Keyboard.d.ts +3 -2
  206. package/dist/typescript/commonjs/features/keyboard/components/Keyboard.d.ts.map +1 -1
  207. package/dist/typescript/commonjs/features/keyboard/components/{MainLayout.d.ts → MainLayout/MainLayout.d.ts} +1 -1
  208. package/dist/typescript/commonjs/features/keyboard/components/MainLayout/MainLayout.d.ts.map +1 -0
  209. package/dist/typescript/{module/features/keyboard/components → commonjs/features/keyboard/components/MainLayout}/constants.d.ts +5 -0
  210. package/dist/typescript/commonjs/features/keyboard/components/MainLayout/constants.d.ts.map +1 -0
  211. package/dist/typescript/commonjs/features/keyboard/components/UnderlinedLayout/UnderlinedLayout.d.ts +5 -1
  212. package/dist/typescript/commonjs/features/keyboard/components/UnderlinedLayout/UnderlinedLayout.d.ts.map +1 -1
  213. package/dist/typescript/commonjs/features/keyboard/components/UnderlinedLayout/keyboardGroups.d.ts.map +1 -1
  214. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/helpers.d.ts +1 -0
  215. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/helpers.d.ts.map +1 -1
  216. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.d.ts +4 -7
  217. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.d.ts.map +1 -1
  218. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/keyboardGroups.d.ts +1 -0
  219. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/keyboardGroups.d.ts.map +1 -1
  220. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/types.d.ts +7 -1
  221. package/dist/typescript/commonjs/features/keyboard/components/UnitsLayout/types.d.ts.map +1 -1
  222. package/dist/typescript/commonjs/features/keyboard/constants/keyboardGroupsByLocale.d.ts.map +1 -1
  223. package/dist/typescript/commonjs/features/keyboard/constants/keyboardLayouts.d.ts +1 -0
  224. package/dist/typescript/commonjs/features/keyboard/constants/keyboardLayouts.d.ts.map +1 -1
  225. package/dist/typescript/commonjs/features/keyboard/types/MathKeysGroups/basicOperators.d.ts +5 -13
  226. package/dist/typescript/commonjs/features/keyboard/types/MathKeysGroups/basicOperators.d.ts.map +1 -1
  227. package/dist/typescript/commonjs/features/keyboard/types/MathKeysGroups/specialOperators.d.ts +18 -0
  228. package/dist/typescript/commonjs/features/keyboard/types/MathKeysGroups/specialOperators.d.ts.map +1 -1
  229. package/dist/typescript/commonjs/features/keyboard/types/MathKeysGroups/units.d.ts +36 -0
  230. package/dist/typescript/commonjs/features/keyboard/types/MathKeysGroups/units.d.ts.map +1 -1
  231. package/dist/typescript/commonjs/features/keyboard/types/keyboardGroupIds.d.ts +1 -0
  232. package/dist/typescript/commonjs/features/keyboard/types/keyboardGroupIds.d.ts.map +1 -1
  233. package/dist/typescript/commonjs/lib/helpers/helpers.d.ts.map +1 -1
  234. package/dist/typescript/commonjs/lib/types/requests.d.ts +4 -0
  235. package/dist/typescript/commonjs/lib/types/requests.d.ts.map +1 -0
  236. package/dist/typescript/commonjs/shared/icons/TimeIcon.d.ts +4 -0
  237. package/dist/typescript/commonjs/shared/icons/TimeIcon.d.ts.map +1 -0
  238. package/dist/typescript/commonjs/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.d.ts +4 -0
  239. package/dist/typescript/commonjs/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.d.ts.map +1 -0
  240. package/dist/typescript/commonjs/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.d.ts +4 -0
  241. package/dist/typescript/commonjs/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.d.ts.map +1 -0
  242. package/dist/typescript/commonjs/shared/translation/constants.d.ts +48 -0
  243. package/dist/typescript/commonjs/shared/translation/constants.d.ts.map +1 -1
  244. package/dist/typescript/commonjs/shared/translation/model.d.ts +2 -0
  245. package/dist/typescript/commonjs/shared/translation/model.d.ts.map +1 -1
  246. package/dist/typescript/commonjs/shared/translation/types.d.ts +2 -1
  247. package/dist/typescript/commonjs/shared/translation/types.d.ts.map +1 -1
  248. package/dist/typescript/module/features/celebrations/helpers.d.ts.map +1 -1
  249. package/dist/typescript/module/features/chatbot/model/ChatBotModel.d.ts +8 -7
  250. package/dist/typescript/module/features/chatbot/model/ChatBotModel.d.ts.map +1 -1
  251. package/dist/typescript/module/features/chatbot/model/ChatbotApi.d.ts +2 -2
  252. package/dist/typescript/module/features/chatbot/model/ChatbotApi.d.ts.map +1 -1
  253. package/dist/typescript/module/features/chatbot/model/t2s.d.ts.map +1 -1
  254. package/dist/typescript/module/features/chatbot/types/api.types.d.ts +11 -1
  255. package/dist/typescript/module/features/chatbot/types/api.types.d.ts.map +1 -1
  256. package/dist/typescript/module/features/chatbot/types/model.types.d.ts +8 -5
  257. package/dist/typescript/module/features/chatbot/types/model.types.d.ts.map +1 -1
  258. package/dist/typescript/module/features/endOfAssignment/ui/PracticeButtonGroup.d.ts.map +1 -1
  259. package/dist/typescript/module/features/feedback/model/model.d.ts +4 -1
  260. package/dist/typescript/module/features/feedback/model/model.d.ts.map +1 -1
  261. package/dist/typescript/module/features/feedback/model/sockets.d.ts.map +1 -1
  262. package/dist/typescript/module/features/keyboard/components/BasicLayout/keyboardGroups.d.ts +1 -0
  263. package/dist/typescript/module/features/keyboard/components/BasicLayout/keyboardGroups.d.ts.map +1 -1
  264. package/dist/typescript/module/features/keyboard/components/BasicPlusLayout/keyboardGroups.d.ts.map +1 -1
  265. package/dist/typescript/module/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.d.ts.map +1 -1
  266. package/dist/typescript/module/features/keyboard/components/Keyboard.d.ts +3 -2
  267. package/dist/typescript/module/features/keyboard/components/Keyboard.d.ts.map +1 -1
  268. package/dist/typescript/module/features/keyboard/components/{MainLayout.d.ts → MainLayout/MainLayout.d.ts} +1 -1
  269. package/dist/typescript/module/features/keyboard/components/MainLayout/MainLayout.d.ts.map +1 -0
  270. package/dist/typescript/{commonjs/features/keyboard/components → module/features/keyboard/components/MainLayout}/constants.d.ts +5 -0
  271. package/dist/typescript/module/features/keyboard/components/MainLayout/constants.d.ts.map +1 -0
  272. package/dist/typescript/module/features/keyboard/components/UnderlinedLayout/UnderlinedLayout.d.ts +5 -1
  273. package/dist/typescript/module/features/keyboard/components/UnderlinedLayout/UnderlinedLayout.d.ts.map +1 -1
  274. package/dist/typescript/module/features/keyboard/components/UnderlinedLayout/keyboardGroups.d.ts.map +1 -1
  275. package/dist/typescript/module/features/keyboard/components/UnitsLayout/helpers.d.ts +1 -0
  276. package/dist/typescript/module/features/keyboard/components/UnitsLayout/helpers.d.ts.map +1 -1
  277. package/dist/typescript/module/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.d.ts +4 -7
  278. package/dist/typescript/module/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.d.ts.map +1 -1
  279. package/dist/typescript/module/features/keyboard/components/UnitsLayout/keyboardGroups.d.ts +1 -0
  280. package/dist/typescript/module/features/keyboard/components/UnitsLayout/keyboardGroups.d.ts.map +1 -1
  281. package/dist/typescript/module/features/keyboard/components/UnitsLayout/types.d.ts +7 -1
  282. package/dist/typescript/module/features/keyboard/components/UnitsLayout/types.d.ts.map +1 -1
  283. package/dist/typescript/module/features/keyboard/constants/keyboardGroupsByLocale.d.ts.map +1 -1
  284. package/dist/typescript/module/features/keyboard/constants/keyboardLayouts.d.ts +1 -0
  285. package/dist/typescript/module/features/keyboard/constants/keyboardLayouts.d.ts.map +1 -1
  286. package/dist/typescript/module/features/keyboard/types/MathKeysGroups/basicOperators.d.ts +5 -13
  287. package/dist/typescript/module/features/keyboard/types/MathKeysGroups/basicOperators.d.ts.map +1 -1
  288. package/dist/typescript/module/features/keyboard/types/MathKeysGroups/specialOperators.d.ts +18 -0
  289. package/dist/typescript/module/features/keyboard/types/MathKeysGroups/specialOperators.d.ts.map +1 -1
  290. package/dist/typescript/module/features/keyboard/types/MathKeysGroups/units.d.ts +36 -0
  291. package/dist/typescript/module/features/keyboard/types/MathKeysGroups/units.d.ts.map +1 -1
  292. package/dist/typescript/module/features/keyboard/types/keyboardGroupIds.d.ts +1 -0
  293. package/dist/typescript/module/features/keyboard/types/keyboardGroupIds.d.ts.map +1 -1
  294. package/dist/typescript/module/lib/helpers/helpers.d.ts.map +1 -1
  295. package/dist/typescript/module/lib/types/requests.d.ts +4 -0
  296. package/dist/typescript/module/lib/types/requests.d.ts.map +1 -0
  297. package/dist/typescript/module/shared/icons/TimeIcon.d.ts +4 -0
  298. package/dist/typescript/module/shared/icons/TimeIcon.d.ts.map +1 -0
  299. package/dist/typescript/module/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.d.ts +4 -0
  300. package/dist/typescript/module/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.d.ts.map +1 -0
  301. package/dist/typescript/module/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.d.ts +4 -0
  302. package/dist/typescript/module/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.d.ts.map +1 -0
  303. package/dist/typescript/module/shared/translation/constants.d.ts +48 -0
  304. package/dist/typescript/module/shared/translation/constants.d.ts.map +1 -1
  305. package/dist/typescript/module/shared/translation/model.d.ts +2 -0
  306. package/dist/typescript/module/shared/translation/model.d.ts.map +1 -1
  307. package/dist/typescript/module/shared/translation/types.d.ts +2 -1
  308. package/dist/typescript/module/shared/translation/types.d.ts.map +1 -1
  309. package/example/.expo/README.md +8 -0
  310. package/example/.expo/devices.json +3 -0
  311. package/example/.expo/web/cache/production/images/favicon/favicon-24272cdaeff82cc5facdaccd982a6f05b60c4504704bbf94c19a6388659880bb-contain-transparent/favicon-48.png +0 -0
  312. package/example/app.json +30 -0
  313. package/example/assets/adaptive-icon.png +0 -0
  314. package/example/assets/favicon.png +0 -0
  315. package/example/assets/icon.png +0 -0
  316. package/example/assets/splash-icon.png +0 -0
  317. package/example/babel.config.js +28 -0
  318. package/example/index.js +8 -0
  319. package/example/metro.config.js +18 -0
  320. package/example/package.json +25 -0
  321. package/example/src/App.tsx +8 -0
  322. package/example/tsconfig.json +6 -0
  323. package/example/yarn.lock +6552 -0
  324. package/package.json +1 -1
  325. package/src/features/celebrations/helpers.ts +35 -33
  326. package/src/features/chatbot/components/Chatbot.tsx +2 -2
  327. package/src/features/chatbot/model/ChatBotModel.ts +10 -5
  328. package/src/features/chatbot/model/t2s.ts +3 -2
  329. package/src/features/chatbot/types/api.types.ts +14 -1
  330. package/src/features/chatbot/types/model.types.ts +12 -5
  331. package/src/features/endOfAssignment/ui/PracticeButtonGroup.tsx +4 -3
  332. package/src/features/feedback/model/model.ts +4 -1
  333. package/src/features/feedback/model/sockets.ts +8 -6
  334. package/src/features/keyboard/components/BasicLayout/keyboardGroups.ts +4 -0
  335. package/src/features/keyboard/components/BasicPlusLayout/keyboardGroups.ts +26 -16
  336. package/src/features/keyboard/components/BasicPlusPlusLayout/keyboardGroups.ts +30 -24
  337. package/src/features/keyboard/components/Keyboard.tsx +44 -11
  338. package/src/features/keyboard/components/KeysList/KeysList.tsx +1 -1
  339. package/src/features/keyboard/components/{MainLayout.tsx → MainLayout/MainLayout.tsx} +6 -7
  340. package/src/features/keyboard/components/{constants.ts → MainLayout/constants.ts} +6 -1
  341. package/src/features/keyboard/components/UnderlinedLayout/UnderlinedLayout.tsx +7 -2
  342. package/src/features/keyboard/components/UnderlinedLayout/keyboardGroups.ts +5 -3
  343. package/src/features/keyboard/components/UnitsLayout/UnitsLayout.tsx +1 -0
  344. package/src/features/keyboard/components/UnitsLayout/helpers.tsx +3 -0
  345. package/src/features/keyboard/components/UnitsLayout/hooks/useUnitTabs.ts +36 -22
  346. package/src/features/keyboard/components/UnitsLayout/keyboardGroups.ts +11 -0
  347. package/src/features/keyboard/components/UnitsLayout/types.ts +7 -0
  348. package/src/features/keyboard/constants/keyboardGroupsByLocale.ts +23 -0
  349. package/src/features/keyboard/constants/keyboardLayouts.ts +11 -0
  350. package/src/features/keyboard/types/MathKeysGroups/basicOperators.tsx +15 -24
  351. package/src/features/keyboard/types/MathKeysGroups/specialOperators.tsx +21 -0
  352. package/src/features/keyboard/types/MathKeysGroups/units.tsx +3 -0
  353. package/src/features/keyboard/types/keyboardGroupIds.ts +1 -0
  354. package/src/lib/helpers/helpers.ts +23 -8
  355. package/src/lib/types/requests.ts +1 -0
  356. package/src/shared/icons/TimeIcon.tsx +23 -0
  357. package/src/shared/icons/keyboard/CDotIcon/CDotIcon.tsx +2 -2
  358. package/src/shared/icons/keyboard/RoundBracketLeftIcon/RoundBracketLeftIcon.tsx +18 -0
  359. package/src/shared/icons/keyboard/RoundBracketRightIcon/RoundBracketRightIcon.tsx +18 -0
  360. package/src/shared/translation/constants.ts +2 -0
  361. package/src/shared/translation/localization/ca.json +7 -6
  362. package/src/shared/translation/localization/de.json +43 -0
  363. package/src/shared/translation/localization/en.json +7 -6
  364. package/src/shared/translation/localization/gb.json +7 -6
  365. package/src/shared/translation/localization/sct.json +7 -6
  366. package/src/shared/translation/localization/sw.json +7 -6
  367. package/src/shared/translation/types.ts +4 -0
  368. package/tsconfig.build.json +4 -0
  369. package/tsconfig.json +34 -0
  370. package/yarn.lock +8623 -0
  371. package/dist/commonjs/features/keyboard/components/MainLayout.js.map +0 -1
  372. package/dist/commonjs/features/keyboard/components/constants.js.map +0 -1
  373. package/dist/module/features/keyboard/components/MainLayout.js.map +0 -1
  374. package/dist/module/features/keyboard/components/constants.js.map +0 -1
  375. package/dist/typescript/commonjs/features/keyboard/components/MainLayout.d.ts.map +0 -1
  376. package/dist/typescript/commonjs/features/keyboard/components/constants.d.ts.map +0 -1
  377. package/dist/typescript/module/features/keyboard/components/MainLayout.d.ts.map +0 -1
  378. package/dist/typescript/module/features/keyboard/components/constants.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magmamath/students-features",
3
- "version": "0.9.9",
3
+ "version": "0.9.14-rc.11",
4
4
  "description": "Magmamath features library",
5
5
  "source": "src/index.ts",
6
6
  "main": "src/index.ts",
@@ -1,39 +1,41 @@
1
- import { ParticlesBatch } from './components/ParticleBatch';
2
- import { Spark } from './components/Spark';
3
- import { CELEBRATION_ICON_CONFIG, CELEBRATION_VARIANTS } from './config';
4
- import { CelebrationVariant } from './types';
1
+ import { ParticlesBatch } from './components/ParticleBatch'
2
+ import { Spark } from './components/Spark'
3
+ import { CELEBRATION_ICON_CONFIG, CELEBRATION_VARIANTS } from './config'
4
+ import { CelebrationVariant } from './types'
5
5
 
6
- export const randomRange = (min: number, max: number) => Math.random() * (max - min) + min;
6
+ export const randomRange = (min: number, max: number) => Math.random() * (max - min) + min
7
7
 
8
8
  const isDateInRange = (currentDate: Date, startDateStr: string, endDateStr: string) => {
9
- const [startDay, startMonth] = startDateStr.split('-').map(Number);
10
- const [endDay, endMonth] = endDateStr.split('-').map(Number);
9
+ const [startDay, startMonth] = startDateStr.split('-').map(Number)
10
+ const [endDay, endMonth] = endDateStr.split('-').map(Number)
11
11
 
12
- const currentYear = currentDate.getFullYear();
13
- const startDate = new Date(currentYear, startMonth - 1, startDay);
14
- const endDate = new Date(currentYear, endMonth - 1, endDay + 1);
12
+ const currentYear = currentDate.getFullYear()
13
+ const startDate = new Date(currentYear, startMonth - 1, startDay)
15
14
 
16
- return currentDate >= startDate && currentDate <= endDate;
17
- };
15
+ // If end month is earlier than start month, it spans to next year
16
+ const endYear = endMonth < startMonth ? currentYear + 1 : currentYear
17
+ const endDate = new Date(endYear, endMonth - 1, endDay + 1)
18
+
19
+ return currentDate >= startDate && currentDate <= endDate
20
+ }
18
21
 
19
22
  export const getIconForCurrentDate = () => {
20
- const currentDate = new Date();
23
+ const currentDate = new Date()
21
24
 
22
25
  for (const celebration of CELEBRATION_ICON_CONFIG) {
23
26
  if (celebration.activePeriod) {
24
- const { start, end } = celebration.activePeriod;
27
+ const { start, end } = celebration.activePeriod
25
28
  if (isDateInRange(currentDate, start, end)) {
26
- return celebration.Icon;
29
+ return celebration.Icon
27
30
  }
28
31
  }
29
32
  }
30
33
 
31
- return CELEBRATION_ICON_CONFIG[0].Icon;
32
- };
34
+ return CELEBRATION_ICON_CONFIG[0].Icon
35
+ }
33
36
 
34
- const MainIcon = getIconForCurrentDate();
35
- export const generateParticle = (variant: CelebrationVariant
36
- ) => {
37
+ const MainIcon = getIconForCurrentDate()
38
+ export const generateParticle = (variant: CelebrationVariant) => {
37
39
  const {
38
40
  elementsCount,
39
41
  angle,
@@ -44,20 +46,20 @@ export const generateParticle = (variant: CelebrationVariant
44
46
  friction,
45
47
  life,
46
48
  angularAcceleration,
47
- speedRange
48
- } = CELEBRATION_VARIANTS[variant];
49
+ speedRange,
50
+ } = CELEBRATION_VARIANTS[variant]
49
51
 
50
52
  const sparkSpeedMin = speedRange?.spark?.[0]
51
53
  const sparkSpeedMax = speedRange?.spark?.[1]
52
54
  const mainSpeedMin = speedRange?.main?.[0]
53
55
  const mainSpeedMax = speedRange?.main?.[1]
54
56
 
55
- const particles: ParticlesBatch[] = [];
57
+ const particles: ParticlesBatch[] = []
56
58
 
57
59
  for (let i = 0; i < elementsCount.spark; i++) {
58
- const randomAngle = randomRange((angle.from * Math.PI) / 180, (angle.to * Math.PI) / 180);
59
- const randomSpeed = randomRange(sparkSpeedMin, sparkSpeedMax);
60
- const randomAngularAcceleration = randomRange(angularAcceleration.from, angularAcceleration.to);
60
+ const randomAngle = randomRange((angle.from * Math.PI) / 180, (angle.to * Math.PI) / 180)
61
+ const randomSpeed = randomRange(sparkSpeedMin, sparkSpeedMax)
62
+ const randomAngularAcceleration = randomRange(angularAcceleration.from, angularAcceleration.to)
61
63
 
62
64
  particles.push({
63
65
  id: Math.random(),
@@ -74,12 +76,12 @@ export const generateParticle = (variant: CelebrationVariant
74
76
  friction,
75
77
  Component: Spark,
76
78
  life,
77
- });
79
+ })
78
80
  }
79
81
  for (let i = 0; i < elementsCount.star; i++) {
80
- const randomAngle = randomRange((angle.from * Math.PI) / 180, (angle.to * Math.PI) / 180);
81
- const randomSpeed = randomRange(mainSpeedMin, mainSpeedMax);
82
- const randomAngularAcceleration = randomRange(angularAcceleration.from, angularAcceleration.to);
82
+ const randomAngle = randomRange((angle.from * Math.PI) / 180, (angle.to * Math.PI) / 180)
83
+ const randomSpeed = randomRange(mainSpeedMin, mainSpeedMax)
84
+ const randomAngularAcceleration = randomRange(angularAcceleration.from, angularAcceleration.to)
83
85
 
84
86
  particles.push({
85
87
  id: Math.random(),
@@ -96,8 +98,8 @@ export const generateParticle = (variant: CelebrationVariant
96
98
  friction,
97
99
  Component: MainIcon,
98
100
  life,
99
- });
101
+ })
100
102
  }
101
103
 
102
- return particles;
103
- };
104
+ return particles
105
+ }
@@ -30,14 +30,14 @@ export const Chatbot = ({
30
30
  iconSize,
31
31
  colorScheme = ColorScheme.Blue,
32
32
  }: ChatbotProps) => {
33
- const alternatives = useUnit(model.$alternatives)
33
+ const isChatAllowed = useUnit(model.$chatAccess)
34
34
  const isAvailable = useStoreMap(model.$currentChatData, ({ isAvailable }) => isAvailable)
35
35
  model.t2s.setAudioConfig(textToSpeechConfig ?? null)
36
36
 
37
37
  const openChat = () => model.setIsOpen(true)
38
38
  const closeChat = () => model.setIsOpen(false)
39
39
 
40
- if (!isAvailable || alternatives?.chatAccess === false) {
40
+ if (!isAvailable || !isChatAllowed) {
41
41
  return null
42
42
  }
43
43
 
@@ -7,6 +7,7 @@ import {
7
7
  restore,
8
8
  sample,
9
9
  type Store,
10
+ StoreWritable
10
11
  } from 'effector'
11
12
  import {
12
13
  ChatbotContext,
@@ -74,14 +75,18 @@ export class ChatbotModel {
74
75
 
75
76
  private readonly cache = new ChatsCacheModel()
76
77
 
78
+ public readonly $chatAccess: StoreWritable<boolean>
79
+
77
80
  public readonly $currentChatData = combine(
78
81
  { data: this.cache.$data, key: this.$currentKey },
79
82
  ({ data, key }) => (data[key] ? { ...data[key], key } : { ...defaultChatData(), key }),
80
83
  )
81
84
 
82
- constructor({ api, $key, threadMessagesLimit, settings = {} }: ChatbotModelProps) {
85
+ constructor({ api, $key, threadMessagesLimit, settings = {}, chatAccess }: ChatbotModelProps) {
83
86
  this.api = new ChatbotAPI({ ...api, postMessage: this.threadManager.postMessage })
84
87
 
88
+ this.$chatAccess = chatAccess
89
+
85
90
  this.threadManager.setApi({ getHint: api.requestHint, sendMessage: api.sendMessage })
86
91
  if (threadMessagesLimit) {
87
92
  this.threadManager.setMessagesLimit(threadMessagesLimit)
@@ -145,16 +150,16 @@ export class ChatbotModel {
145
150
  }
146
151
 
147
152
  this.startConversation = attach({
148
- source: { currentChatData: this.$currentChatData, alternatives: this.$alternatives },
153
+ source: { currentChatData: this.$currentChatData, chatAccess: this.$chatAccess },
149
154
  mapParams: (props: StartConversationProps | void, source) => ({
150
155
  ...props,
151
156
  ...source,
152
157
  }),
153
158
  effect: createEffect(
154
- ({ currentChatData, alternatives, initOnly }: StartConversationFxData) => {
159
+ ({ currentChatData, initOnly, chatAccess }: StartConversationFxData) => {
155
160
  const { key, messages } = currentChatData
156
161
 
157
- if (!alternatives?.chatAccess) return
162
+ if (!chatAccess) return
158
163
 
159
164
  if (messages.length) {
160
165
  if (initOnly) return
@@ -171,7 +176,7 @@ export class ChatbotModel {
171
176
 
172
177
  this.api.getAlternativesFx.doneData.watch((alternatives) => {
173
178
  // Use short text for another hint option if openChatEnabled
174
- if (alternatives?.chatAccess && alternatives?.isOpenChatEnabled && IS_WEB) {
179
+ if (alternatives?.isOpenChatEnabled && IS_WEB) {
175
180
  this.textManager.update((creator) => ({
176
181
  anotherHintOption: creator.createOption('chat.giveHintOpenChat'),
177
182
  }))
@@ -86,11 +86,12 @@ export class ChatTextToSpeechModel {
86
86
  input: { text },
87
87
  voice: config?.voice ?? DEFAULT_VOICE,
88
88
  audioConfig: config?.audioConfig ?? AUDIO_CONFIG,
89
+ enableTimePointing: [],
89
90
  })
90
91
 
91
92
  // Response might be different type based on provided AUDIO_CONFIG
92
- if (typeof response === 'string') {
93
- audioPath = `data:audio/mpeg;base64,${response}`
93
+ if (typeof response.audioContent === 'string') {
94
+ audioPath = `data:audio/mpeg;base64,${response.audioContent}`
94
95
  } else {
95
96
  audioPath = response?.audioContent ?? ''
96
97
  }
@@ -11,6 +11,9 @@ export type AlternativesOptions = {
11
11
  }
12
12
 
13
13
  export type GetAlternativesResponse = {
14
+ /**
15
+ * @deprecated chatAccess depends on assignment.lavaChat or class grade
16
+ */
14
17
  chatAccess?: boolean
15
18
  isOpenChatEnabled?: boolean
16
19
  version: string
@@ -56,6 +59,7 @@ export type PostMessageResponse = {
56
59
  export type GoogleTranslatePayload = {
57
60
  text: string[]
58
61
  targetLanguage: string
62
+ sourceLanguage?: string
59
63
  }
60
64
 
61
65
  export type GoogleTranslateResponse = {
@@ -77,9 +81,18 @@ export type GoogleText2SpeechPayload = {
77
81
  pitch: number
78
82
  speakingRate: number
79
83
  }
84
+ enableTimePointing?: string[]
80
85
  }
81
86
 
82
- export type GoogleText2SpeechResponse = string | undefined | { audioContent?: string }
87
+ export type Timepoint = {
88
+ markName: string
89
+ timeSeconds: number
90
+ }
91
+
92
+ export type GoogleText2SpeechResponse = {
93
+ audioContent?: string
94
+ timepoints?: Timepoint[]
95
+ }
83
96
 
84
97
  export type ChatHintPayload = {
85
98
  problemDescription: string
@@ -1,4 +1,4 @@
1
- import type { Store } from 'effector'
1
+ import type { Store, StoreWritable } from 'effector'
2
2
  import {
3
3
  ChatHintPayload,
4
4
  ChatHintResponse,
@@ -17,6 +17,7 @@ import {
17
17
  } from './api.types'
18
18
  import { ExtendWithOptional } from '../../../lib/helpers/types'
19
19
  import { ChatAnswer, ChatItem, ConversationMessage, FullStrokeData } from './units.types'
20
+ import { WithAbortSignal } from '../../../lib/types/requests'
20
21
 
21
22
  export type ChatbotMessages = {
22
23
  error: ConversationMessage
@@ -27,10 +28,14 @@ export type ChatbotMessages = {
27
28
 
28
29
  export type ChatbotApiRequests = {
29
30
  getAlternatives: (props: GetAlternativesPayload) => Promise<GetAlternativesResponse>
30
- sendMessage: (props: SendMessagePayload) => Promise<SendMessageResponse>
31
- postMessage: (props: PostMessagePayload) => Promise<PostMessageResponse>
32
- postTranslateText: (props: GoogleTranslatePayload) => Promise<GoogleTranslateResponse>
33
- postTextToSpeech: (props: GoogleText2SpeechPayload) => Promise<GoogleText2SpeechResponse>
31
+ sendMessage: (props: WithAbortSignal<SendMessagePayload>) => Promise<SendMessageResponse>
32
+ postMessage: (props: WithAbortSignal<PostMessagePayload>) => Promise<PostMessageResponse>
33
+ postTranslateText: (
34
+ props: WithAbortSignal<GoogleTranslatePayload>,
35
+ ) => Promise<GoogleTranslateResponse>
36
+ postTextToSpeech: (
37
+ props: WithAbortSignal<GoogleText2SpeechPayload>,
38
+ ) => Promise<GoogleText2SpeechResponse>
34
39
  /**
35
40
  * @deprecated merged with hint
36
41
  */
@@ -47,6 +52,7 @@ export type ChatbotModelProps = {
47
52
  requestHint: (props: ChatHintPayload) => Promise<ChatHintResponse>
48
53
  }
49
54
  threadMessagesLimit?: number
55
+ chatAccess: StoreWritable<boolean>
50
56
  settings?: ChatbotSettings
51
57
  }
52
58
 
@@ -77,6 +83,7 @@ export type StartConversationFxData = {
77
83
  messages: ConversationMessage[]
78
84
  }
79
85
  alternatives?: GetAlternativesResponse | null
86
+ chatAccess: boolean
80
87
  } & StartConversationProps
81
88
 
82
89
  export enum MessageVariant {
@@ -11,7 +11,6 @@ import Animated, {
11
11
  import { ButtonVariant, SPACING, Button, ButtonSize, ButtonColor } from '@magmamath/react-native-ui'
12
12
 
13
13
  import { PracticeButton } from './PracticeButton'
14
- import { getEoaButtonColor } from '../helpers'
15
14
 
16
15
  type PracticeButtonGroupProps = {
17
16
  textContent: { leftButtonText?: string; rightButtonText?: string }
@@ -21,6 +20,8 @@ type PracticeButtonGroupProps = {
21
20
  buttonColor?: ButtonColor
22
21
  }
23
22
 
23
+ const APPEARANCE_DELAY = 1600
24
+
24
25
  export const PracticeButtonGroup = ({
25
26
  textContent,
26
27
  isPracticeButtonVisible,
@@ -31,7 +32,7 @@ export const PracticeButtonGroup = ({
31
32
  const buttonsContainerOpacity = useSharedValue(0)
32
33
 
33
34
  useEffect(() => {
34
- buttonsContainerOpacity.value = withDelay(1000, withTiming(1, { duration: 500 }))
35
+ buttonsContainerOpacity.value = withDelay(APPEARANCE_DELAY, withTiming(1, { duration: 500 }))
35
36
  }, [])
36
37
 
37
38
  return (
@@ -39,7 +40,7 @@ export const PracticeButtonGroup = ({
39
40
  <Animated.View
40
41
  entering={
41
42
  isPracticeButtonVisible
42
- ? FadeInRight.delay(1000).duration(500).easing(Easing.ease)
43
+ ? FadeInRight.delay(APPEARANCE_DELAY).duration(500).easing(Easing.ease)
43
44
  : FadeInUp.duration(500)
44
45
  }
45
46
  >
@@ -11,7 +11,10 @@ export type TeacherFeedbackModelProps = {
11
11
  getComments: (props: GetCommentsPayload) => Promise<GetCommentsResponse>
12
12
  updateCommentStatusSeen: (props: UpdateCommentStatusSeenPayload) => Promise<void>
13
13
  }
14
- socket: any
14
+ /**
15
+ * @deprecated - use socket and events directly in the client
16
+ */
17
+ socket?: any
15
18
  credits: {
16
19
  $assignmentId: Store<string>
17
20
  $problemId: Store<string>
@@ -2,21 +2,23 @@ import { createEvent } from 'effector'
2
2
  import { TeacherComment, FeedbackSocketEvents } from '../types'
3
3
 
4
4
  export class TeacherFeedbackSockets {
5
- private readonly socket: any
5
+ private readonly socket: any = null
6
6
  public readonly commentAdded = createEvent<TeacherComment>()
7
7
  public readonly commentDeleted = createEvent<TeacherComment>()
8
8
 
9
9
  constructor(socket: any) {
10
- this.socket = socket
10
+ if (socket) {
11
+ this.socket = socket
12
+ }
11
13
  }
12
14
 
13
15
  connect() {
14
- this.socket.on(FeedbackSocketEvents.COMMENT_ADDED, this.commentAdded)
15
- this.socket.on(FeedbackSocketEvents.COMMENT_DELETED, this.commentDeleted)
16
+ this.socket?.on(FeedbackSocketEvents.COMMENT_ADDED, this.commentAdded)
17
+ this.socket?.on(FeedbackSocketEvents.COMMENT_DELETED, this.commentDeleted)
16
18
  }
17
19
 
18
20
  off() {
19
- this.socket.off(FeedbackSocketEvents.COMMENT_ADDED, this.commentAdded)
20
- this.socket.off(FeedbackSocketEvents.COMMENT_DELETED, this.commentDeleted)
21
+ this.socket?.off(FeedbackSocketEvents.COMMENT_ADDED, this.commentAdded)
22
+ this.socket?.off(FeedbackSocketEvents.COMMENT_DELETED, this.commentDeleted)
21
23
  }
22
24
  }
@@ -58,3 +58,7 @@ export const MATH_CURRENCY_US_KEYBOARD_GROUP: KeyboardGroup = {
58
58
  id: MathEntryKeyboardGroupId.CURRENCY_US,
59
59
  keys: [MATH_CURRENCY_UNITS.DOLLAR, MATH_CURRENCY_UNITS.CENT],
60
60
  }
61
+ export const MATH_CURRENCY_DE_KEYBOARD_GROUP: KeyboardGroup = {
62
+ id: MathEntryKeyboardGroupId.CURRENCY_DE,
63
+ keys: [MATH_CURRENCY_UNITS.EURO, MATH_CURRENCY_UNITS.DOLLAR, MATH_CURRENCY_UNITS.POUND],
64
+ }
@@ -9,19 +9,21 @@ export const MATH_ENTRY_BASIC_SW_PLUS: KeyboardGroup = {
9
9
  MATH_BASIC_OPERATORS.ADDITION,
10
10
  MATH_BASIC_OPERATORS.SUBTRACTION,
11
11
  MATH_BASIC_OPERATORS.EQUALS,
12
- MATH_BASIC_OPERATORS.PARENTHESES,
13
- MATH_BASIC_OPERATORS.SQUARE_POWER,
14
- MATH_BASIC_OPERATORS.SQUARE_ROOT,
12
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
13
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
14
+ MATH_BASIC_OPERATORS.FRACTION,
15
15
  MATH_BASIC_OPERATORS.C_DOT,
16
16
  MATH_BASIC_OPERATORS.DIVISION,
17
17
  MATH_BASIC_OPERATORS.DOT,
18
18
  MATH_BASIC_OPERATORS.PERCENT,
19
- MATH_BASIC_OPERATORS.NTH_POWER,
20
- MATH_BASIC_OPERATORS.NTH_ROOT,
19
+ MATH_BASIC_OPERATORS.SQUARE_POWER,
20
+ MATH_BASIC_OPERATORS.SQUARE_ROOT,
21
21
  MATH_TEXT_SYMBOLS.X,
22
22
  MATH_TEXT_SYMBOLS.Y,
23
23
  MATH_TEXT_SYMBOLS.Z,
24
24
  MATH_BASIC_OPERATORS.PERMILLE,
25
+ MATH_BASIC_OPERATORS.NTH_POWER,
26
+ MATH_BASIC_OPERATORS.NTH_ROOT,
25
27
  ],
26
28
  }
27
29
 
@@ -31,17 +33,20 @@ export const MATH_ENTRY_BASIC_PLUS_MOBILE_SW: KeyboardGroup = {
31
33
  MATH_BASIC_OPERATORS.ADDITION,
32
34
  MATH_BASIC_OPERATORS.SUBTRACTION,
33
35
  MATH_BASIC_OPERATORS.EQUALS,
34
- MATH_BASIC_OPERATORS.SQUARE_POWER,
35
- MATH_BASIC_OPERATORS.SQUARE_ROOT,
36
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
37
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
38
+ MATH_BASIC_OPERATORS.FRACTION,
36
39
  MATH_BASIC_OPERATORS.MULTIPLICATION,
37
40
  MATH_BASIC_OPERATORS.DIVISION,
38
41
  MATH_BASIC_OPERATORS.DOT,
39
42
  MATH_BASIC_OPERATORS.PERCENT,
40
- MATH_BASIC_OPERATORS.NTH_POWER,
43
+ MATH_BASIC_OPERATORS.SQUARE_POWER,
44
+ MATH_BASIC_OPERATORS.SQUARE_ROOT,
41
45
  MATH_TEXT_SYMBOLS.X,
42
46
  MATH_TEXT_SYMBOLS.Y,
43
47
  MATH_TEXT_SYMBOLS.Z,
44
48
  MATH_BASIC_OPERATORS.PERMILLE,
49
+ MATH_BASIC_OPERATORS.NTH_POWER,
45
50
  ],
46
51
  }
47
52
 
@@ -51,19 +56,21 @@ export const MATH_ENTRY_BASIC_US_PLUS: KeyboardGroup = {
51
56
  MATH_BASIC_OPERATORS.ADDITION,
52
57
  MATH_BASIC_OPERATORS.SUBTRACTION,
53
58
  MATH_BASIC_OPERATORS.EQUALS,
54
- MATH_BASIC_OPERATORS.PARENTHESES,
55
- MATH_BASIC_OPERATORS.SQUARE_POWER,
56
- MATH_BASIC_OPERATORS.SQUARE_ROOT,
59
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
60
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
61
+ MATH_BASIC_OPERATORS.FRACTION,
57
62
  MATH_BASIC_OPERATORS.MULTIPLICATION,
58
63
  MATH_BASIC_OPERATORS.DIVISION,
59
64
  MATH_BASIC_OPERATORS.COMMA,
60
65
  MATH_BASIC_OPERATORS.PERCENT,
61
- MATH_BASIC_OPERATORS.NTH_POWER,
62
- MATH_BASIC_OPERATORS.NTH_ROOT,
66
+ MATH_BASIC_OPERATORS.SQUARE_POWER,
67
+ MATH_BASIC_OPERATORS.SQUARE_ROOT,
63
68
  MATH_TEXT_SYMBOLS.X,
64
69
  MATH_TEXT_SYMBOLS.Y,
65
70
  MATH_TEXT_SYMBOLS.Z,
66
71
  MATH_BASIC_OPERATORS.PERMILLE,
72
+ MATH_BASIC_OPERATORS.NTH_POWER,
73
+ MATH_BASIC_OPERATORS.NTH_ROOT,
67
74
  ],
68
75
  }
69
76
 
@@ -73,16 +80,19 @@ export const MATH_ENTRY_BASIC_PLUS_MOBILE: KeyboardGroup = {
73
80
  MATH_BASIC_OPERATORS.ADDITION,
74
81
  MATH_BASIC_OPERATORS.SUBTRACTION,
75
82
  MATH_BASIC_OPERATORS.EQUALS,
76
- MATH_BASIC_OPERATORS.SQUARE_POWER,
77
- MATH_BASIC_OPERATORS.SQUARE_ROOT,
83
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
84
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
85
+ MATH_BASIC_OPERATORS.FRACTION,
78
86
  MATH_BASIC_OPERATORS.MULTIPLICATION,
79
87
  MATH_BASIC_OPERATORS.DIVISION,
80
88
  MATH_BASIC_OPERATORS.COMMA,
81
89
  MATH_BASIC_OPERATORS.PERCENT,
82
- MATH_BASIC_OPERATORS.NTH_POWER,
90
+ MATH_BASIC_OPERATORS.SQUARE_POWER,
91
+ MATH_BASIC_OPERATORS.SQUARE_ROOT,
83
92
  MATH_TEXT_SYMBOLS.X,
84
93
  MATH_TEXT_SYMBOLS.Y,
85
94
  MATH_TEXT_SYMBOLS.Z,
86
95
  MATH_BASIC_OPERATORS.PERMILLE,
96
+ MATH_BASIC_OPERATORS.NTH_POWER,
87
97
  ],
88
98
  }
@@ -11,21 +11,22 @@ export const MATH_ENTRY_BASIC_PLUS_PLUS: KeyboardGroup = {
11
11
  MATH_BASIC_OPERATORS.ADDITION,
12
12
  MATH_BASIC_OPERATORS.SUBTRACTION,
13
13
  MATH_BASIC_OPERATORS.EQUALS,
14
- MATH_BASIC_OPERATORS.PARENTHESES,
14
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
15
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
15
16
  MATH_BASIC_OPERATORS.SQUARE_POWER,
16
17
  MATH_BASIC_OPERATORS.SQUARE_ROOT,
17
- MATH_BASIC_OPERATORS.PLUS_MINUS,
18
18
  MATH_SYMBOLS.PI,
19
19
  MATH_GEOMETRY_SYMBOLS.RADIAN,
20
20
  MATH_BASIC_OPERATORS.MULTIPLICATION,
21
21
  MATH_BASIC_OPERATORS.FRACTION,
22
22
  MATH_BASIC_OPERATORS.SLASH,
23
- MATH_BASIC_OPERATORS.COMMA,
23
+ MATH_BASIC_OPERATORS.PLUS_MINUS,
24
24
  MATH_BASIC_OPERATORS.PERCENT,
25
25
  MATH_BASIC_OPERATORS.NTH_POWER,
26
26
  MATH_BASIC_OPERATORS.NTH_ROOT,
27
27
  MATH_SYMBOLS.THETA,
28
28
  MATH_GEOMETRY_SYMBOLS.DEGREE,
29
+ MATH_BASIC_OPERATORS.COMMA,
29
30
  MATH_TEXT_SYMBOLS.X,
30
31
  MATH_TEXT_SYMBOLS.Y,
31
32
  MATH_TEXT_SYMBOLS.Z,
@@ -43,21 +44,23 @@ export const MATH_ENTRY_BASIC_PLUS_PLUS_MOBILE: KeyboardGroup = {
43
44
  MATH_BASIC_OPERATORS.ADDITION,
44
45
  MATH_BASIC_OPERATORS.SUBTRACTION,
45
46
  MATH_BASIC_OPERATORS.EQUALS,
46
- MATH_BASIC_OPERATORS.SQUARE_POWER,
47
- MATH_BASIC_OPERATORS.SQUARE_ROOT,
48
- MATH_BASIC_OPERATORS.GREATER_THAN,
47
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
48
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
49
+ MATH_SYMBOLS.PI,
50
+ MATH_GEOMETRY_SYMBOLS.RADIAN,
49
51
  MATH_BASIC_OPERATORS.MULTIPLICATION,
50
52
  MATH_BASIC_OPERATORS.FRACTION,
51
53
  MATH_BASIC_OPERATORS.COMMA,
52
- MATH_BASIC_OPERATORS.NTH_POWER,
53
- MATH_SYMBOLS.PI,
54
- MATH_BASIC_OPERATORS.LESS_THAN,
54
+ MATH_BASIC_OPERATORS.SQUARE_POWER,
55
+ MATH_BASIC_OPERATORS.SQUARE_ROOT,
56
+ MATH_SYMBOLS.THETA,
57
+ MATH_GEOMETRY_SYMBOLS.DEGREE,
55
58
  MATH_TEXT_SYMBOLS.X,
56
59
  MATH_TEXT_SYMBOLS.Y,
57
60
  MATH_TEXT_SYMBOLS.Z,
58
- MATH_SYMBOLS.THETA,
59
- MATH_GEOMETRY_SYMBOLS.DEGREE,
60
- MATH_GEOMETRY_SYMBOLS.RADIAN,
61
+ MATH_BASIC_OPERATORS.NTH_POWER,
62
+ MATH_BASIC_OPERATORS.LESS_THAN,
63
+ MATH_BASIC_OPERATORS.GREATER_THAN,
61
64
  ],
62
65
  }
63
66
 
@@ -67,21 +70,22 @@ export const MATH_ENTRY_BASIC_PLUS_PLUS_SW: KeyboardGroup = {
67
70
  MATH_BASIC_OPERATORS.ADDITION,
68
71
  MATH_BASIC_OPERATORS.SUBTRACTION,
69
72
  MATH_BASIC_OPERATORS.EQUALS,
70
- MATH_BASIC_OPERATORS.PARENTHESES,
73
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
74
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
71
75
  MATH_BASIC_OPERATORS.SQUARE_POWER,
72
76
  MATH_BASIC_OPERATORS.SQUARE_ROOT,
73
- MATH_BASIC_OPERATORS.PLUS_MINUS,
74
77
  MATH_SYMBOLS.PI,
75
78
  MATH_GEOMETRY_SYMBOLS.RADIAN,
76
79
  MATH_BASIC_OPERATORS.C_DOT,
77
80
  MATH_BASIC_OPERATORS.FRACTION,
78
81
  MATH_BASIC_OPERATORS.SLASH,
79
- MATH_BASIC_OPERATORS.DOT,
82
+ MATH_BASIC_OPERATORS.PLUS_MINUS,
80
83
  MATH_BASIC_OPERATORS.PERCENT,
81
84
  MATH_BASIC_OPERATORS.NTH_POWER,
82
85
  MATH_BASIC_OPERATORS.NTH_ROOT,
83
86
  MATH_SYMBOLS.THETA,
84
87
  MATH_GEOMETRY_SYMBOLS.DEGREE,
88
+ MATH_BASIC_OPERATORS.DOT,
85
89
  MATH_TEXT_SYMBOLS.X,
86
90
  MATH_TEXT_SYMBOLS.Y,
87
91
  MATH_TEXT_SYMBOLS.Z,
@@ -99,20 +103,22 @@ export const MATH_ENTRY_BASIC_PLUS_PLUS_MOBILE_SW: KeyboardGroup = {
99
103
  MATH_BASIC_OPERATORS.ADDITION,
100
104
  MATH_BASIC_OPERATORS.SUBTRACTION,
101
105
  MATH_BASIC_OPERATORS.EQUALS,
102
- MATH_BASIC_OPERATORS.SQUARE_POWER,
103
- MATH_BASIC_OPERATORS.SQUARE_ROOT,
104
- MATH_BASIC_OPERATORS.GREATER_THAN,
106
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
107
+ MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
108
+ MATH_SYMBOLS.PI,
109
+ MATH_GEOMETRY_SYMBOLS.RADIAN,
105
110
  MATH_BASIC_OPERATORS.C_DOT,
106
111
  MATH_BASIC_OPERATORS.FRACTION,
107
112
  MATH_BASIC_OPERATORS.DOT,
108
- MATH_BASIC_OPERATORS.NTH_POWER,
109
- MATH_SYMBOLS.PI,
110
- MATH_BASIC_OPERATORS.LESS_THAN,
113
+ MATH_BASIC_OPERATORS.SQUARE_POWER,
114
+ MATH_BASIC_OPERATORS.SQUARE_ROOT,
115
+ MATH_SYMBOLS.THETA,
116
+ MATH_GEOMETRY_SYMBOLS.DEGREE,
111
117
  MATH_TEXT_SYMBOLS.X,
112
118
  MATH_TEXT_SYMBOLS.Y,
113
119
  MATH_TEXT_SYMBOLS.Z,
114
- MATH_SYMBOLS.THETA,
115
- MATH_GEOMETRY_SYMBOLS.DEGREE,
116
- MATH_GEOMETRY_SYMBOLS.RADIAN,
120
+ MATH_BASIC_OPERATORS.NTH_POWER,
121
+ MATH_BASIC_OPERATORS.LESS_THAN,
122
+ MATH_BASIC_OPERATORS.GREATER_THAN,
117
123
  ],
118
124
  }