@magmamath/students-features 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -0
- package/dist/commonjs/features/chatbot/components/Alternatives/Alternatives.js +60 -0
- package/dist/commonjs/features/chatbot/components/Alternatives/Alternatives.js.map +1 -0
- package/dist/commonjs/features/chatbot/components/Alternatives/HelpRequestOption.js +96 -0
- package/dist/commonjs/features/chatbot/components/Alternatives/HelpRequestOption.js.map +1 -0
- package/dist/commonjs/features/chatbot/components/ChatControls/ChatControls.js +97 -0
- package/dist/commonjs/features/chatbot/components/ChatControls/ChatControls.js.map +1 -0
- package/dist/commonjs/features/chatbot/components/ChatMessage/ChatMessage.js +27 -0
- package/dist/commonjs/features/chatbot/components/ChatMessage/ChatMessage.js.map +1 -0
- package/dist/commonjs/features/chatbot/components/ChatMessage/MessageLoader.js +56 -0
- package/dist/commonjs/features/chatbot/components/ChatMessage/MessageLoader.js.map +1 -0
- package/dist/commonjs/features/chatbot/components/ChatMessage/MessageTextToSpeech.js +88 -0
- package/dist/commonjs/features/chatbot/components/ChatMessage/MessageTextToSpeech.js.map +1 -0
- package/dist/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.js +87 -0
- package/dist/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.js.map +1 -0
- package/dist/commonjs/features/chatbot/components/ChatMessage/SentMessage.js +43 -0
- package/dist/commonjs/features/chatbot/components/ChatMessage/SentMessage.js.map +1 -0
- package/dist/commonjs/features/chatbot/components/ChatMessages/ChatbotMessages.js +130 -0
- package/dist/commonjs/features/chatbot/components/ChatMessages/ChatbotMessages.js.map +1 -0
- package/dist/commonjs/features/chatbot/components/Chatbot.js +69 -0
- package/dist/commonjs/features/chatbot/components/Chatbot.js.map +1 -0
- package/dist/commonjs/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.js +65 -0
- package/dist/commonjs/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.js.map +1 -0
- package/dist/commonjs/features/chatbot/constants.js +31 -0
- package/dist/commonjs/features/chatbot/constants.js.map +1 -0
- package/dist/commonjs/features/chatbot/helpers.js +12 -0
- package/dist/commonjs/features/chatbot/helpers.js.map +1 -0
- package/dist/commonjs/features/chatbot/index.js +34 -0
- package/dist/commonjs/features/chatbot/index.js.map +1 -0
- package/dist/commonjs/features/chatbot/model/api.js +18 -0
- package/dist/commonjs/features/chatbot/model/api.js.map +1 -0
- package/dist/commonjs/features/chatbot/model/model.js +244 -0
- package/dist/commonjs/features/chatbot/model/model.js.map +1 -0
- package/dist/commonjs/features/chatbot/model/t2s.js +104 -0
- package/dist/commonjs/features/chatbot/model/t2s.js.map +1 -0
- package/dist/commonjs/features/chatbot/model/translation.js +203 -0
- package/dist/commonjs/features/chatbot/model/translation.js.map +1 -0
- package/dist/commonjs/features/chatbot/types/api.types.js +2 -0
- package/dist/commonjs/features/chatbot/types/api.types.js.map +1 -0
- package/dist/commonjs/features/chatbot/types/model.types.js +12 -0
- package/dist/commonjs/features/chatbot/types/model.types.js.map +1 -0
- package/dist/commonjs/features/chatbot/types/t2s.types.js +13 -0
- package/dist/commonjs/features/chatbot/types/t2s.types.js.map +1 -0
- package/dist/commonjs/features/chatbot/types/translation.types.js +6 -0
- package/dist/commonjs/features/chatbot/types/translation.types.js.map +1 -0
- package/dist/commonjs/index.js +42 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/lib/createFeature/createFeature.js +28 -0
- package/dist/commonjs/lib/createFeature/createFeature.js.map +1 -0
- package/dist/commonjs/lib/effector/createControllerEffect.js +51 -0
- package/dist/commonjs/lib/effector/createControllerEffect.js.map +1 -0
- package/dist/commonjs/lib/effector/createEntityFieldStore.js +42 -0
- package/dist/commonjs/lib/effector/createEntityFieldStore.js.map +1 -0
- package/dist/commonjs/lib/effector/index.js +20 -0
- package/dist/commonjs/lib/effector/index.js.map +1 -0
- package/dist/commonjs/lib/helpers/helpers.js +9 -0
- package/dist/commonjs/lib/helpers/helpers.js.map +1 -0
- package/dist/commonjs/lib/localization/en.json +2 -0
- package/dist/commonjs/lib/localization/gb.json +2 -0
- package/dist/commonjs/lib/localization/sw.json +2 -0
- package/dist/commonjs/shared/hooks/useDebounce.js +21 -0
- package/dist/commonjs/shared/hooks/useDebounce.js.map +1 -0
- package/dist/commonjs/shared/icons/ArrowRightIcon.js +30 -0
- package/dist/commonjs/shared/icons/ArrowRightIcon.js.map +1 -0
- package/dist/commonjs/shared/icons/ChatbotIcon.js +148 -0
- package/dist/commonjs/shared/icons/ChatbotIcon.js.map +1 -0
- package/dist/commonjs/shared/icons/CloseIcon.js +28 -0
- package/dist/commonjs/shared/icons/CloseIcon.js.map +1 -0
- package/dist/commonjs/shared/icons/GlobeIcon.js +30 -0
- package/dist/commonjs/shared/icons/GlobeIcon.js.map +1 -0
- package/dist/commonjs/shared/icons/PauseIcon.js +32 -0
- package/dist/commonjs/shared/icons/PauseIcon.js.map +1 -0
- package/dist/commonjs/shared/icons/PlayIcon.js +32 -0
- package/dist/commonjs/shared/icons/PlayIcon.js.map +1 -0
- package/dist/commonjs/shared/icons/SpeakerIcon.js +37 -0
- package/dist/commonjs/shared/icons/SpeakerIcon.js.map +1 -0
- package/dist/commonjs/shared/icons/icon.types.js +2 -0
- package/dist/commonjs/shared/icons/icon.types.js.map +1 -0
- package/dist/commonjs/shared/translation/constants.js +17 -0
- package/dist/commonjs/shared/translation/constants.js.map +1 -0
- package/dist/commonjs/shared/translation/helpers.js +31 -0
- package/dist/commonjs/shared/translation/helpers.js.map +1 -0
- package/dist/commonjs/shared/translation/hooks.js +28 -0
- package/dist/commonjs/shared/translation/hooks.js.map +1 -0
- package/dist/commonjs/shared/translation/index.js +52 -0
- package/dist/commonjs/shared/translation/index.js.map +1 -0
- package/dist/commonjs/shared/translation/model.js +15 -0
- package/dist/commonjs/shared/translation/model.js.map +1 -0
- package/dist/commonjs/shared/translation/types.js +13 -0
- package/dist/commonjs/shared/translation/types.js.map +1 -0
- package/dist/commonjs/types/types.d.js +2 -0
- package/dist/commonjs/types/types.d.js.map +1 -0
- package/dist/module/features/chatbot/components/Alternatives/Alternatives.js +54 -0
- package/dist/module/features/chatbot/components/Alternatives/Alternatives.js.map +1 -0
- package/dist/module/features/chatbot/components/Alternatives/HelpRequestOption.js +90 -0
- package/dist/module/features/chatbot/components/Alternatives/HelpRequestOption.js.map +1 -0
- package/dist/module/features/chatbot/components/ChatControls/ChatControls.js +91 -0
- package/dist/module/features/chatbot/components/ChatControls/ChatControls.js.map +1 -0
- package/dist/module/features/chatbot/components/ChatMessage/ChatMessage.js +21 -0
- package/dist/module/features/chatbot/components/ChatMessage/ChatMessage.js.map +1 -0
- package/dist/module/features/chatbot/components/ChatMessage/MessageLoader.js +50 -0
- package/dist/module/features/chatbot/components/ChatMessage/MessageLoader.js.map +1 -0
- package/dist/module/features/chatbot/components/ChatMessage/MessageTextToSpeech.js +82 -0
- package/dist/module/features/chatbot/components/ChatMessage/MessageTextToSpeech.js.map +1 -0
- package/dist/module/features/chatbot/components/ChatMessage/ReceivedMessage.js +81 -0
- package/dist/module/features/chatbot/components/ChatMessage/ReceivedMessage.js.map +1 -0
- package/dist/module/features/chatbot/components/ChatMessage/SentMessage.js +37 -0
- package/dist/module/features/chatbot/components/ChatMessage/SentMessage.js.map +1 -0
- package/dist/module/features/chatbot/components/ChatMessages/ChatbotMessages.js +123 -0
- package/dist/module/features/chatbot/components/ChatMessages/ChatbotMessages.js.map +1 -0
- package/dist/module/features/chatbot/components/Chatbot.js +63 -0
- package/dist/module/features/chatbot/components/Chatbot.js.map +1 -0
- package/dist/module/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.js +59 -0
- package/dist/module/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.js.map +1 -0
- package/dist/module/features/chatbot/constants.js +27 -0
- package/dist/module/features/chatbot/constants.js.map +1 -0
- package/dist/module/features/chatbot/helpers.js +7 -0
- package/dist/module/features/chatbot/helpers.js.map +1 -0
- package/dist/module/features/chatbot/index.js +7 -0
- package/dist/module/features/chatbot/index.js.map +1 -0
- package/dist/module/features/chatbot/model/api.js +13 -0
- package/dist/module/features/chatbot/model/api.js.map +1 -0
- package/dist/module/features/chatbot/model/model.js +239 -0
- package/dist/module/features/chatbot/model/model.js.map +1 -0
- package/dist/module/features/chatbot/model/t2s.js +99 -0
- package/dist/module/features/chatbot/model/t2s.js.map +1 -0
- package/dist/module/features/chatbot/model/translation.js +198 -0
- package/dist/module/features/chatbot/model/translation.js.map +1 -0
- package/dist/module/features/chatbot/types/api.types.js +2 -0
- package/dist/module/features/chatbot/types/api.types.js.map +1 -0
- package/dist/module/features/chatbot/types/model.types.js +8 -0
- package/dist/module/features/chatbot/types/model.types.js.map +1 -0
- package/dist/module/features/chatbot/types/t2s.types.js +9 -0
- package/dist/module/features/chatbot/types/t2s.types.js.map +1 -0
- package/dist/module/features/chatbot/types/translation.types.js +4 -0
- package/dist/module/features/chatbot/types/translation.types.js.map +1 -0
- package/dist/module/index.js +5 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/lib/createFeature/createFeature.js +22 -0
- package/dist/module/lib/createFeature/createFeature.js.map +1 -0
- package/dist/module/lib/effector/createControllerEffect.js +45 -0
- package/dist/module/lib/effector/createControllerEffect.js.map +1 -0
- package/dist/module/lib/effector/createEntityFieldStore.js +38 -0
- package/dist/module/lib/effector/createEntityFieldStore.js.map +1 -0
- package/dist/module/lib/effector/index.js +5 -0
- package/dist/module/lib/effector/index.js.map +1 -0
- package/dist/module/lib/helpers/helpers.js +4 -0
- package/dist/module/lib/helpers/helpers.js.map +1 -0
- package/dist/module/lib/localization/en.json +2 -0
- package/dist/module/lib/localization/gb.json +2 -0
- package/dist/module/lib/localization/sw.json +2 -0
- package/dist/module/shared/hooks/useDebounce.js +16 -0
- package/dist/module/shared/hooks/useDebounce.js.map +1 -0
- package/dist/module/shared/icons/ArrowRightIcon.js +22 -0
- package/dist/module/shared/icons/ArrowRightIcon.js.map +1 -0
- package/dist/module/shared/icons/ChatbotIcon.js +140 -0
- package/dist/module/shared/icons/ChatbotIcon.js.map +1 -0
- package/dist/module/shared/icons/CloseIcon.js +20 -0
- package/dist/module/shared/icons/CloseIcon.js.map +1 -0
- package/dist/module/shared/icons/GlobeIcon.js +22 -0
- package/dist/module/shared/icons/GlobeIcon.js.map +1 -0
- package/dist/module/shared/icons/PauseIcon.js +24 -0
- package/dist/module/shared/icons/PauseIcon.js.map +1 -0
- package/dist/module/shared/icons/PlayIcon.js +24 -0
- package/dist/module/shared/icons/PlayIcon.js.map +1 -0
- package/dist/module/shared/icons/SpeakerIcon.js +29 -0
- package/dist/module/shared/icons/SpeakerIcon.js.map +1 -0
- package/dist/module/shared/icons/icon.types.js +2 -0
- package/dist/module/shared/icons/icon.types.js.map +1 -0
- package/dist/module/shared/translation/constants.js +12 -0
- package/dist/module/shared/translation/constants.js.map +1 -0
- package/dist/module/shared/translation/helpers.js +24 -0
- package/dist/module/shared/translation/helpers.js.map +1 -0
- package/dist/module/shared/translation/hooks.js +22 -0
- package/dist/module/shared/translation/hooks.js.map +1 -0
- package/dist/module/shared/translation/index.js +7 -0
- package/dist/module/shared/translation/index.js.map +1 -0
- package/dist/module/shared/translation/model.js +11 -0
- package/dist/module/shared/translation/model.js.map +1 -0
- package/dist/module/shared/translation/types.js +9 -0
- package/dist/module/shared/translation/types.js.map +1 -0
- package/dist/module/types/types.d.js +2 -0
- package/dist/module/types/types.d.js.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/components/Alternatives/Alternatives.d.ts +11 -0
- package/dist/typescript/commonjs/features/chatbot/components/Alternatives/Alternatives.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/components/Alternatives/HelpRequestOption.d.ts +9 -0
- package/dist/typescript/commonjs/features/chatbot/components/Alternatives/HelpRequestOption.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatControls/ChatControls.d.ts +14 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatControls/ChatControls.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ChatMessage.d.ts +17 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ChatMessage.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageLoader.d.ts +3 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageLoader.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageTextToSpeech.d.ts +12 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageTextToSpeech.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts +4 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/SentMessage.d.ts +4 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/SentMessage.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessages/ChatbotMessages.d.ts +21 -0
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessages/ChatbotMessages.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/components/Chatbot.d.ts +25 -0
- package/dist/typescript/commonjs/features/chatbot/components/Chatbot.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.d.ts +9 -0
- package/dist/typescript/commonjs/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/constants.d.ts +21 -0
- package/dist/typescript/commonjs/features/chatbot/constants.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/helpers.d.ts +2 -0
- package/dist/typescript/commonjs/features/chatbot/helpers.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/index.d.ts +5 -0
- package/dist/typescript/commonjs/features/chatbot/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/model/api.d.ts +12 -0
- package/dist/typescript/commonjs/features/chatbot/model/api.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/model/model.d.ts +73 -0
- package/dist/typescript/commonjs/features/chatbot/model/model.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/model/t2s.d.ts +18 -0
- package/dist/typescript/commonjs/features/chatbot/model/t2s.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/model/translation.d.ts +22 -0
- package/dist/typescript/commonjs/features/chatbot/model/translation.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts +60 -0
- package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts +64 -0
- package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/types/t2s.types.d.ts +22 -0
- package/dist/typescript/commonjs/features/chatbot/types/t2s.types.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/types/translation.types.d.ts +23 -0
- package/dist/typescript/commonjs/features/chatbot/types/translation.types.d.ts.map +1 -0
- package/dist/typescript/commonjs/index.d.ts +4 -0
- package/dist/typescript/commonjs/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/createFeature/createFeature.d.ts +7 -0
- package/dist/typescript/commonjs/lib/createFeature/createFeature.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/effector/createControllerEffect.d.ts +16 -0
- package/dist/typescript/commonjs/lib/effector/createControllerEffect.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/effector/createEntityFieldStore.d.ts +16 -0
- package/dist/typescript/commonjs/lib/effector/createEntityFieldStore.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/effector/index.d.ts +3 -0
- package/dist/typescript/commonjs/lib/effector/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/helpers/helpers.d.ts +2 -0
- package/dist/typescript/commonjs/lib/helpers/helpers.d.ts.map +1 -0
- package/dist/typescript/commonjs/package.json +1 -0
- package/dist/typescript/commonjs/shared/hooks/useDebounce.d.ts +2 -0
- package/dist/typescript/commonjs/shared/hooks/useDebounce.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/icons/ArrowRightIcon.d.ts +4 -0
- package/dist/typescript/commonjs/shared/icons/ArrowRightIcon.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/icons/ChatbotIcon.d.ts +4 -0
- package/dist/typescript/commonjs/shared/icons/ChatbotIcon.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/icons/CloseIcon.d.ts +4 -0
- package/dist/typescript/commonjs/shared/icons/CloseIcon.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/icons/GlobeIcon.d.ts +4 -0
- package/dist/typescript/commonjs/shared/icons/GlobeIcon.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/icons/PauseIcon.d.ts +4 -0
- package/dist/typescript/commonjs/shared/icons/PauseIcon.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/icons/PlayIcon.d.ts +4 -0
- package/dist/typescript/commonjs/shared/icons/PlayIcon.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/icons/SpeakerIcon.d.ts +4 -0
- package/dist/typescript/commonjs/shared/icons/SpeakerIcon.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/icons/icon.types.d.ts +9 -0
- package/dist/typescript/commonjs/shared/icons/icon.types.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/translation/constants.d.ts +6 -0
- package/dist/typescript/commonjs/shared/translation/constants.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/translation/helpers.d.ts +6 -0
- package/dist/typescript/commonjs/shared/translation/helpers.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/translation/hooks.d.ts +5 -0
- package/dist/typescript/commonjs/shared/translation/hooks.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/translation/index.d.ts +6 -0
- package/dist/typescript/commonjs/shared/translation/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/translation/model.d.ts +5 -0
- package/dist/typescript/commonjs/shared/translation/model.d.ts.map +1 -0
- package/dist/typescript/commonjs/shared/translation/types.d.ts +8 -0
- package/dist/typescript/commonjs/shared/translation/types.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/components/Alternatives/Alternatives.d.ts +11 -0
- package/dist/typescript/module/features/chatbot/components/Alternatives/Alternatives.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/components/Alternatives/HelpRequestOption.d.ts +9 -0
- package/dist/typescript/module/features/chatbot/components/Alternatives/HelpRequestOption.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/components/ChatControls/ChatControls.d.ts +14 -0
- package/dist/typescript/module/features/chatbot/components/ChatControls/ChatControls.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/components/ChatMessage/ChatMessage.d.ts +17 -0
- package/dist/typescript/module/features/chatbot/components/ChatMessage/ChatMessage.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageLoader.d.ts +3 -0
- package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageLoader.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageTextToSpeech.d.ts +12 -0
- package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageTextToSpeech.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts +4 -0
- package/dist/typescript/module/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/components/ChatMessage/SentMessage.d.ts +4 -0
- package/dist/typescript/module/features/chatbot/components/ChatMessage/SentMessage.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/components/ChatMessages/ChatbotMessages.d.ts +21 -0
- package/dist/typescript/module/features/chatbot/components/ChatMessages/ChatbotMessages.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/components/Chatbot.d.ts +25 -0
- package/dist/typescript/module/features/chatbot/components/Chatbot.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.d.ts +9 -0
- package/dist/typescript/module/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/constants.d.ts +21 -0
- package/dist/typescript/module/features/chatbot/constants.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/helpers.d.ts +2 -0
- package/dist/typescript/module/features/chatbot/helpers.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/index.d.ts +5 -0
- package/dist/typescript/module/features/chatbot/index.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/model/api.d.ts +12 -0
- package/dist/typescript/module/features/chatbot/model/api.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/model/model.d.ts +73 -0
- package/dist/typescript/module/features/chatbot/model/model.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/model/t2s.d.ts +18 -0
- package/dist/typescript/module/features/chatbot/model/t2s.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/model/translation.d.ts +22 -0
- package/dist/typescript/module/features/chatbot/model/translation.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/types/api.types.d.ts +60 -0
- package/dist/typescript/module/features/chatbot/types/api.types.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/types/model.types.d.ts +64 -0
- package/dist/typescript/module/features/chatbot/types/model.types.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/types/t2s.types.d.ts +22 -0
- package/dist/typescript/module/features/chatbot/types/t2s.types.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/types/translation.types.d.ts +23 -0
- package/dist/typescript/module/features/chatbot/types/translation.types.d.ts.map +1 -0
- package/dist/typescript/module/index.d.ts +4 -0
- package/dist/typescript/module/index.d.ts.map +1 -0
- package/dist/typescript/module/lib/createFeature/createFeature.d.ts +7 -0
- package/dist/typescript/module/lib/createFeature/createFeature.d.ts.map +1 -0
- package/dist/typescript/module/lib/effector/createControllerEffect.d.ts +16 -0
- package/dist/typescript/module/lib/effector/createControllerEffect.d.ts.map +1 -0
- package/dist/typescript/module/lib/effector/createEntityFieldStore.d.ts +16 -0
- package/dist/typescript/module/lib/effector/createEntityFieldStore.d.ts.map +1 -0
- package/dist/typescript/module/lib/effector/index.d.ts +3 -0
- package/dist/typescript/module/lib/effector/index.d.ts.map +1 -0
- package/dist/typescript/module/lib/helpers/helpers.d.ts +2 -0
- package/dist/typescript/module/lib/helpers/helpers.d.ts.map +1 -0
- package/dist/typescript/module/package.json +1 -0
- package/dist/typescript/module/shared/hooks/useDebounce.d.ts +2 -0
- package/dist/typescript/module/shared/hooks/useDebounce.d.ts.map +1 -0
- package/dist/typescript/module/shared/icons/ArrowRightIcon.d.ts +4 -0
- package/dist/typescript/module/shared/icons/ArrowRightIcon.d.ts.map +1 -0
- package/dist/typescript/module/shared/icons/ChatbotIcon.d.ts +4 -0
- package/dist/typescript/module/shared/icons/ChatbotIcon.d.ts.map +1 -0
- package/dist/typescript/module/shared/icons/CloseIcon.d.ts +4 -0
- package/dist/typescript/module/shared/icons/CloseIcon.d.ts.map +1 -0
- package/dist/typescript/module/shared/icons/GlobeIcon.d.ts +4 -0
- package/dist/typescript/module/shared/icons/GlobeIcon.d.ts.map +1 -0
- package/dist/typescript/module/shared/icons/PauseIcon.d.ts +4 -0
- package/dist/typescript/module/shared/icons/PauseIcon.d.ts.map +1 -0
- package/dist/typescript/module/shared/icons/PlayIcon.d.ts +4 -0
- package/dist/typescript/module/shared/icons/PlayIcon.d.ts.map +1 -0
- package/dist/typescript/module/shared/icons/SpeakerIcon.d.ts +4 -0
- package/dist/typescript/module/shared/icons/SpeakerIcon.d.ts.map +1 -0
- package/dist/typescript/module/shared/icons/icon.types.d.ts +9 -0
- package/dist/typescript/module/shared/icons/icon.types.d.ts.map +1 -0
- package/dist/typescript/module/shared/translation/constants.d.ts +6 -0
- package/dist/typescript/module/shared/translation/constants.d.ts.map +1 -0
- package/dist/typescript/module/shared/translation/helpers.d.ts +6 -0
- package/dist/typescript/module/shared/translation/helpers.d.ts.map +1 -0
- package/dist/typescript/module/shared/translation/hooks.d.ts +5 -0
- package/dist/typescript/module/shared/translation/hooks.d.ts.map +1 -0
- package/dist/typescript/module/shared/translation/index.d.ts +6 -0
- package/dist/typescript/module/shared/translation/index.d.ts.map +1 -0
- package/dist/typescript/module/shared/translation/model.d.ts +5 -0
- package/dist/typescript/module/shared/translation/model.d.ts.map +1 -0
- package/dist/typescript/module/shared/translation/types.d.ts +8 -0
- package/dist/typescript/module/shared/translation/types.d.ts.map +1 -0
- package/package.json +73 -0
- package/src/features/chatbot/components/Alternatives/Alternatives.tsx +64 -0
- package/src/features/chatbot/components/Alternatives/HelpRequestOption.tsx +92 -0
- package/src/features/chatbot/components/ChatControls/ChatControls.tsx +103 -0
- package/src/features/chatbot/components/ChatMessage/ChatMessage.tsx +28 -0
- package/src/features/chatbot/components/ChatMessage/MessageLoader.tsx +42 -0
- package/src/features/chatbot/components/ChatMessage/MessageTextToSpeech.tsx +78 -0
- package/src/features/chatbot/components/ChatMessage/ReceivedMessage.tsx +73 -0
- package/src/features/chatbot/components/ChatMessage/SentMessage.tsx +31 -0
- package/src/features/chatbot/components/ChatMessages/ChatbotMessages.tsx +148 -0
- package/src/features/chatbot/components/Chatbot.tsx +92 -0
- package/src/features/chatbot/components/ThreeDotsLoader/ThreeDotsLoader.tsx +77 -0
- package/src/features/chatbot/constants.ts +30 -0
- package/src/features/chatbot/helpers.ts +4 -0
- package/src/features/chatbot/index.ts +4 -0
- package/src/features/chatbot/model/api.ts +28 -0
- package/src/features/chatbot/model/model.ts +277 -0
- package/src/features/chatbot/model/t2s.ts +107 -0
- package/src/features/chatbot/model/translation.ts +231 -0
- package/src/features/chatbot/types/api.types.ts +59 -0
- package/src/features/chatbot/types/model.types.ts +73 -0
- package/src/features/chatbot/types/t2s.types.ts +24 -0
- package/src/features/chatbot/types/translation.types.ts +23 -0
- package/src/index.ts +3 -0
- package/src/lib/createFeature/createFeature.tsx +21 -0
- package/src/lib/effector/createControllerEffect.ts +66 -0
- package/src/lib/effector/createEntityFieldStore.ts +43 -0
- package/src/lib/effector/index.ts +2 -0
- package/src/lib/helpers/helpers.ts +2 -0
- package/src/lib/localization/en.json +2 -0
- package/src/lib/localization/gb.json +2 -0
- package/src/lib/localization/sw.json +2 -0
- package/src/shared/hooks/useDebounce.ts +17 -0
- package/src/shared/icons/ArrowRightIcon.tsx +14 -0
- package/src/shared/icons/ChatbotIcon.tsx +109 -0
- package/src/shared/icons/CloseIcon.tsx +12 -0
- package/src/shared/icons/GlobeIcon.tsx +14 -0
- package/src/shared/icons/PauseIcon.tsx +16 -0
- package/src/shared/icons/PlayIcon.tsx +16 -0
- package/src/shared/icons/SpeakerIcon.tsx +22 -0
- package/src/shared/icons/icon.types.ts +8 -0
- package/src/shared/translation/constants.ts +10 -0
- package/src/shared/translation/helpers.ts +34 -0
- package/src/shared/translation/hooks.ts +28 -0
- package/src/shared/translation/index.ts +5 -0
- package/src/shared/translation/model.ts +15 -0
- package/src/shared/translation/types.ts +9 -0
- package/src/types/types.d.ts +4 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { attach, createEvent, restore, sample } from 'effector';
|
|
4
|
+
import { createControllerEffect, createEntityFieldStore } from "../../../lib/effector/index.js";
|
|
5
|
+
import { generateRandomId } from "../../../lib/helpers/helpers.js";
|
|
6
|
+
import { ChatbotAPI } from "./api.js";
|
|
7
|
+
import { ChatbotTranslation } from "./translation.js";
|
|
8
|
+
import { ChatTextToSpeech } from "./t2s.js";
|
|
9
|
+
export class ChatbotModel {
|
|
10
|
+
resetAlternatives = createEvent();
|
|
11
|
+
setAlternatives = createEvent();
|
|
12
|
+
setIsOpen = createEvent();
|
|
13
|
+
toggleOpen = createEvent();
|
|
14
|
+
$isOpen = restore(this.setIsOpen, false).on(this.toggleOpen, isOpen => !isOpen);
|
|
15
|
+
|
|
16
|
+
// separate messages and alternatives class?
|
|
17
|
+
removeLastMessage = createEvent();
|
|
18
|
+
setLastMessageIds = createEvent();
|
|
19
|
+
$lastMessageIds = restore(this.setLastMessageIds, null);
|
|
20
|
+
setScrollActive = createEvent();
|
|
21
|
+
$isScrollActive = restore(this.setScrollActive, false);
|
|
22
|
+
constructor({
|
|
23
|
+
credits,
|
|
24
|
+
api,
|
|
25
|
+
messages
|
|
26
|
+
}) {
|
|
27
|
+
this.api = new ChatbotAPI(api);
|
|
28
|
+
this.defaultMessages = messages;
|
|
29
|
+
this.credits = credits;
|
|
30
|
+
this.$alternatives = restore(this.api.getAlternativesFx.doneData, null).on(this.setAlternatives, (_, payload) => payload).reset(this.resetAlternatives);
|
|
31
|
+
|
|
32
|
+
// TODO: do not pass this, just what you need
|
|
33
|
+
this.translation = new ChatbotTranslation(this);
|
|
34
|
+
this.t2s = new ChatTextToSpeech(this);
|
|
35
|
+
this.sendHelpRequestFx = this.createSendHelpRequestFx();
|
|
36
|
+
this.initChatReplyWatcher();
|
|
37
|
+
}
|
|
38
|
+
messages = createEntityFieldStore({
|
|
39
|
+
mapper: ({
|
|
40
|
+
entityId,
|
|
41
|
+
fieldId,
|
|
42
|
+
messages
|
|
43
|
+
}) => ({
|
|
44
|
+
entityId,
|
|
45
|
+
fieldId,
|
|
46
|
+
data: {
|
|
47
|
+
messages
|
|
48
|
+
}
|
|
49
|
+
})
|
|
50
|
+
});
|
|
51
|
+
threadIds = createEntityFieldStore({
|
|
52
|
+
mapper: ({
|
|
53
|
+
entityId,
|
|
54
|
+
fieldId,
|
|
55
|
+
threadId
|
|
56
|
+
}) => ({
|
|
57
|
+
entityId,
|
|
58
|
+
fieldId,
|
|
59
|
+
data: {
|
|
60
|
+
threadId
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
});
|
|
64
|
+
availableChats = createEntityFieldStore({
|
|
65
|
+
mapper: ({
|
|
66
|
+
entityId,
|
|
67
|
+
fieldId,
|
|
68
|
+
isAvailable = true
|
|
69
|
+
}) => ({
|
|
70
|
+
entityId,
|
|
71
|
+
fieldId,
|
|
72
|
+
data: {
|
|
73
|
+
isAvailable
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
});
|
|
77
|
+
createSendHelpRequestFx() {
|
|
78
|
+
return attach({
|
|
79
|
+
source: [this.credits.$assignmentId, this.credits.$exerciseId, this.messages.$state, this.translation.$isTranslated],
|
|
80
|
+
mapParams: (params, [assignmentId, exerciseId, messages, isTranslated]) => ({
|
|
81
|
+
...params,
|
|
82
|
+
assignmentId,
|
|
83
|
+
exerciseId,
|
|
84
|
+
messages,
|
|
85
|
+
isTranslated
|
|
86
|
+
}),
|
|
87
|
+
effect: createControllerEffect(async ({
|
|
88
|
+
payload,
|
|
89
|
+
message = '',
|
|
90
|
+
translationTargetLanguage,
|
|
91
|
+
translatedMessage,
|
|
92
|
+
assignmentId,
|
|
93
|
+
exerciseId,
|
|
94
|
+
messages,
|
|
95
|
+
isTranslated
|
|
96
|
+
}) => {
|
|
97
|
+
this.setLastMessageIds({
|
|
98
|
+
entityId: assignmentId,
|
|
99
|
+
fieldId: exerciseId
|
|
100
|
+
});
|
|
101
|
+
const currentMessages = messages[assignmentId]?.[exerciseId]?.messages || [];
|
|
102
|
+
this.messages.setField({
|
|
103
|
+
entityId: assignmentId,
|
|
104
|
+
fieldId: exerciseId,
|
|
105
|
+
messages: [...currentMessages, {
|
|
106
|
+
id: generateRandomId(),
|
|
107
|
+
message: message ?? '',
|
|
108
|
+
translatedMessage,
|
|
109
|
+
isOwnMessage: true,
|
|
110
|
+
threadId: payload.threadId ?? '',
|
|
111
|
+
options: []
|
|
112
|
+
}]
|
|
113
|
+
});
|
|
114
|
+
const response = await this.api.postMessageFx(payload);
|
|
115
|
+
if (isTranslated) {
|
|
116
|
+
return await this.translation.translateMessageFx({
|
|
117
|
+
targetLanguage: translationTargetLanguage,
|
|
118
|
+
message: {
|
|
119
|
+
...response,
|
|
120
|
+
id: generateRandomId(),
|
|
121
|
+
isOwnMessage: false
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return response;
|
|
126
|
+
})
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
initChatReplyWatcher() {
|
|
130
|
+
sample({
|
|
131
|
+
clock: this.sendHelpRequestFx.doneData,
|
|
132
|
+
source: [this.credits.$assignmentId, this.credits.$exerciseId, this.messages.$state],
|
|
133
|
+
fn: ([assignmentId, exerciseId, messages], response) => ({
|
|
134
|
+
assignmentId,
|
|
135
|
+
exerciseId,
|
|
136
|
+
messages: messages[assignmentId]?.[exerciseId]?.messages || [],
|
|
137
|
+
response
|
|
138
|
+
})
|
|
139
|
+
}).watch(({
|
|
140
|
+
assignmentId,
|
|
141
|
+
exerciseId,
|
|
142
|
+
messages,
|
|
143
|
+
response
|
|
144
|
+
}) => {
|
|
145
|
+
this.messages.setField({
|
|
146
|
+
entityId: assignmentId,
|
|
147
|
+
fieldId: exerciseId,
|
|
148
|
+
messages: [...messages, {
|
|
149
|
+
id: generateRandomId(),
|
|
150
|
+
message: response.message,
|
|
151
|
+
isOwnMessage: false,
|
|
152
|
+
threadId: response.threadId,
|
|
153
|
+
options: response.options,
|
|
154
|
+
translatedMessage: 'translatedMessage' in response ? response.translatedMessage : undefined
|
|
155
|
+
}]
|
|
156
|
+
});
|
|
157
|
+
this.threadIds.setField({
|
|
158
|
+
entityId: assignmentId,
|
|
159
|
+
fieldId: exerciseId,
|
|
160
|
+
threadId: response.threadId
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
sample({
|
|
164
|
+
clock: this.sendHelpRequestFx.fail,
|
|
165
|
+
source: [this.credits.$assignmentId, this.credits.$exerciseId, this.messages.$state],
|
|
166
|
+
fn: ([assignmentId, exerciseId, messages]) => ({
|
|
167
|
+
assignmentId,
|
|
168
|
+
exerciseId,
|
|
169
|
+
messages: messages[assignmentId]?.[exerciseId]?.messages || []
|
|
170
|
+
}),
|
|
171
|
+
filter: (_, {
|
|
172
|
+
error
|
|
173
|
+
}) => error.message !== 'Request aborted manually'
|
|
174
|
+
}).watch(({
|
|
175
|
+
assignmentId,
|
|
176
|
+
exerciseId,
|
|
177
|
+
messages
|
|
178
|
+
}) => {
|
|
179
|
+
this.messages.setField({
|
|
180
|
+
entityId: assignmentId,
|
|
181
|
+
fieldId: exerciseId,
|
|
182
|
+
messages: [...messages, this.defaultMessages.error]
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
sample({
|
|
186
|
+
clock: this.removeLastMessage,
|
|
187
|
+
source: [this.$lastMessageIds, this.messages.$state],
|
|
188
|
+
fn: ([lastMessageIds, messages]) => ({
|
|
189
|
+
lastMessageIds,
|
|
190
|
+
messages
|
|
191
|
+
})
|
|
192
|
+
}).watch(({
|
|
193
|
+
lastMessageIds,
|
|
194
|
+
messages
|
|
195
|
+
}) => {
|
|
196
|
+
if (!lastMessageIds) return;
|
|
197
|
+
const updatedMessages = [...messages[lastMessageIds.entityId][lastMessageIds.fieldId].messages];
|
|
198
|
+
if (updatedMessages) updatedMessages.pop();
|
|
199
|
+
this.messages.setField({
|
|
200
|
+
entityId: lastMessageIds.entityId,
|
|
201
|
+
fieldId: lastMessageIds.fieldId,
|
|
202
|
+
messages: updatedMessages
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
startConversation() {
|
|
207
|
+
const assignmentId = this.credits.$assignmentId.getState();
|
|
208
|
+
const exerciseId = this.credits.$exerciseId.getState();
|
|
209
|
+
const messages = this.messages.$state.getState()[assignmentId]?.[exerciseId]?.messages ?? [];
|
|
210
|
+
if (messages.length) return;
|
|
211
|
+
this.messages.setField({
|
|
212
|
+
entityId: assignmentId,
|
|
213
|
+
fieldId: exerciseId,
|
|
214
|
+
messages: [this.defaultMessages.start]
|
|
215
|
+
});
|
|
216
|
+
this.availableChats.setField({
|
|
217
|
+
entityId: assignmentId,
|
|
218
|
+
fieldId: exerciseId,
|
|
219
|
+
isAvailable: true
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
setHintMessage({
|
|
223
|
+
entityId,
|
|
224
|
+
fieldId,
|
|
225
|
+
...message
|
|
226
|
+
}) {
|
|
227
|
+
const messages = this.messages.$state.getState()?.[entityId]?.[fieldId]?.messages;
|
|
228
|
+
if (messages?.length > 1) return;
|
|
229
|
+
this.messages.setField({
|
|
230
|
+
entityId,
|
|
231
|
+
fieldId,
|
|
232
|
+
messages: [{
|
|
233
|
+
...message,
|
|
234
|
+
options: this.$alternatives.getState()?.options.hints ?? message.options
|
|
235
|
+
}]
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["attach","createEvent","restore","sample","createControllerEffect","createEntityFieldStore","generateRandomId","ChatbotAPI","ChatbotTranslation","ChatTextToSpeech","ChatbotModel","resetAlternatives","setAlternatives","setIsOpen","toggleOpen","$isOpen","on","isOpen","removeLastMessage","setLastMessageIds","$lastMessageIds","setScrollActive","$isScrollActive","constructor","credits","api","messages","defaultMessages","$alternatives","getAlternativesFx","doneData","_","payload","reset","translation","t2s","sendHelpRequestFx","createSendHelpRequestFx","initChatReplyWatcher","mapper","entityId","fieldId","data","threadIds","threadId","availableChats","isAvailable","source","$assignmentId","$exerciseId","$state","$isTranslated","mapParams","params","assignmentId","exerciseId","isTranslated","effect","message","translationTargetLanguage","translatedMessage","currentMessages","setField","id","isOwnMessage","options","response","postMessageFx","translateMessageFx","targetLanguage","clock","fn","watch","undefined","fail","filter","error","lastMessageIds","updatedMessages","pop","startConversation","getState","length","start","setHintMessage","hints"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/model.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { restore, createEvent } from 'effector';
|
|
4
|
+
import { AUDIO_CONFIG, DEFAULT_VOICE } from "../constants.js";
|
|
5
|
+
import { AudioStatus } from "../types/t2s.types.js";
|
|
6
|
+
export class ChatTextToSpeech {
|
|
7
|
+
audioCache = {};
|
|
8
|
+
audioProvider = null;
|
|
9
|
+
setCurrentPlayingId = createEvent();
|
|
10
|
+
$currentPlayingId = restore(this.setCurrentPlayingId, null);
|
|
11
|
+
setStatus = createEvent();
|
|
12
|
+
$status = restore(this.setStatus, AudioStatus.STOPPED);
|
|
13
|
+
constructor(chatbotModel) {
|
|
14
|
+
this.model = chatbotModel;
|
|
15
|
+
this.model.$isOpen.updates.watch(isOpen => {
|
|
16
|
+
if (!isOpen) this.reset();
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
setAudioProvider(audioProvider) {
|
|
20
|
+
this.audioProvider = audioProvider;
|
|
21
|
+
}
|
|
22
|
+
getCacheKey = (messageId, isTranslated) => {
|
|
23
|
+
return `${messageId}-${isTranslated ? 'translated' : 'original'}`;
|
|
24
|
+
};
|
|
25
|
+
async play({
|
|
26
|
+
text,
|
|
27
|
+
messageId,
|
|
28
|
+
isTranslated,
|
|
29
|
+
config
|
|
30
|
+
}) {
|
|
31
|
+
if (!this.audioProvider) throw new Error('Audio provider is not set. Use setAudioProvider.');
|
|
32
|
+
try {
|
|
33
|
+
const status = this.$status.getState();
|
|
34
|
+
const playingId = this.$currentPlayingId.getState();
|
|
35
|
+
const isPlaying = status === AudioStatus.PLAYING;
|
|
36
|
+
const isPaused = status === AudioStatus.PAUSED;
|
|
37
|
+
const isCurrentMessage = messageId === playingId;
|
|
38
|
+
if (isPlaying && isCurrentMessage) {
|
|
39
|
+
this.audioProvider.pause();
|
|
40
|
+
this.setStatus(AudioStatus.PAUSED);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (isPaused && isCurrentMessage) {
|
|
44
|
+
this.audioProvider.resume();
|
|
45
|
+
this.setStatus(AudioStatus.PLAYING);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (messageId && !isCurrentMessage) {
|
|
49
|
+
this.audioProvider.stop();
|
|
50
|
+
}
|
|
51
|
+
const cacheKey = this.getCacheKey(messageId, isTranslated);
|
|
52
|
+
let audioPath = this.audioCache[cacheKey];
|
|
53
|
+
this.setCurrentPlayingId(messageId);
|
|
54
|
+
if (!audioPath) {
|
|
55
|
+
const response = await this.model.api.textToSpeechTextFx({
|
|
56
|
+
input: {
|
|
57
|
+
text
|
|
58
|
+
},
|
|
59
|
+
voice: config?.voice ?? DEFAULT_VOICE,
|
|
60
|
+
audioConfig: config?.audioConfig ?? AUDIO_CONFIG
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// Response might be different type based on provided AUDIO_CONFIG
|
|
64
|
+
if (typeof response === 'string') {
|
|
65
|
+
audioPath = `data:audio/mpeg;base64,${response}`;
|
|
66
|
+
} else {
|
|
67
|
+
audioPath = response?.audioContent ?? '';
|
|
68
|
+
}
|
|
69
|
+
this.audioCache[cacheKey] = audioPath;
|
|
70
|
+
}
|
|
71
|
+
this.setStatus(AudioStatus.PLAYING);
|
|
72
|
+
await this.audioProvider.play(audioPath, () => {
|
|
73
|
+
this.setStatus(AudioStatus.STOPPED);
|
|
74
|
+
this.setCurrentPlayingId(null);
|
|
75
|
+
});
|
|
76
|
+
} catch (error) {
|
|
77
|
+
this.reset();
|
|
78
|
+
console.error('Error playing text-to-speech: ', error);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
stop() {
|
|
82
|
+
if (!this.audioProvider) throw new Error('Audio provider is not set. Use setAudioProvider.');
|
|
83
|
+
this.audioProvider.stop();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// reset should also do stop(), add watcher to model to not write it in repos
|
|
87
|
+
// chatbotModel.$isOpen.updates.watch((isOpen) => {
|
|
88
|
+
// if (!isOpen) {
|
|
89
|
+
// chatbotModel.t2s.stop();
|
|
90
|
+
// chatbotModel.t2s.reset();
|
|
91
|
+
// }
|
|
92
|
+
|
|
93
|
+
reset() {
|
|
94
|
+
this.stop();
|
|
95
|
+
this.setStatus(AudioStatus.STOPPED);
|
|
96
|
+
this.setCurrentPlayingId(null);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=t2s.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["restore","createEvent","AUDIO_CONFIG","DEFAULT_VOICE","AudioStatus","ChatTextToSpeech","audioCache","audioProvider","setCurrentPlayingId","$currentPlayingId","setStatus","$status","STOPPED","constructor","chatbotModel","model","$isOpen","updates","watch","isOpen","reset","setAudioProvider","getCacheKey","messageId","isTranslated","play","text","config","Error","status","getState","playingId","isPlaying","PLAYING","isPaused","PAUSED","isCurrentMessage","pause","resume","stop","cacheKey","audioPath","response","api","textToSpeechTextFx","input","voice","audioConfig","audioContent","error","console"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/t2s.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { createEvent, restore, attach, createEffect, sample } from 'effector';
|
|
4
|
+
import { decodeHTMLEntities } from "../helpers.js";
|
|
5
|
+
export class ChatbotTranslation {
|
|
6
|
+
setIsTranslated = createEvent();
|
|
7
|
+
$isTranslated = restore(this.setIsTranslated, false);
|
|
8
|
+
constructor(chatbotModel) {
|
|
9
|
+
this.model = chatbotModel;
|
|
10
|
+
this.translateAlternativesFx = this.createTranslateAlternativesEffect();
|
|
11
|
+
this.translateMessageFx = this.createTranslateMessageEffect();
|
|
12
|
+
this.translateBatchFx = this.createTranslateBatchEffect();
|
|
13
|
+
this.initTranslationSamples();
|
|
14
|
+
}
|
|
15
|
+
shouldSkipTranslation(messages) {
|
|
16
|
+
if (this.$isTranslated.getState()) {
|
|
17
|
+
this.setIsTranslated(false);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
const allTranslated = messages.every(message => message.translatedMessage);
|
|
21
|
+
if (allTranslated) {
|
|
22
|
+
this.setIsTranslated(true);
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
initTranslationSamples() {
|
|
28
|
+
sample({
|
|
29
|
+
clock: this.translateBatchFx.doneData,
|
|
30
|
+
source: [this.model.credits.$assignmentId, this.model.credits.$exerciseId],
|
|
31
|
+
fn: ([assignmentId, exerciseId], translatedMessages) => ({
|
|
32
|
+
assignmentId,
|
|
33
|
+
exerciseId,
|
|
34
|
+
translatedMessages
|
|
35
|
+
})
|
|
36
|
+
}).watch(({
|
|
37
|
+
assignmentId,
|
|
38
|
+
exerciseId,
|
|
39
|
+
translatedMessages
|
|
40
|
+
}) => {
|
|
41
|
+
this.model.messages.setField({
|
|
42
|
+
entityId: assignmentId,
|
|
43
|
+
fieldId: exerciseId,
|
|
44
|
+
messages: translatedMessages
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
createTranslateAlternativesEffect() {
|
|
49
|
+
return attach({
|
|
50
|
+
source: [this.model.$alternatives],
|
|
51
|
+
mapParams: (params, [alternatives]) => ({
|
|
52
|
+
params,
|
|
53
|
+
alternatives
|
|
54
|
+
}),
|
|
55
|
+
effect: createEffect(async ({
|
|
56
|
+
alternatives,
|
|
57
|
+
params
|
|
58
|
+
}) => {
|
|
59
|
+
const hintAlternatives = alternatives?.options.hints ?? [];
|
|
60
|
+
const defaultAlternatives = alternatives?.options.default ?? [];
|
|
61
|
+
const translatedAlternatives = {
|
|
62
|
+
...alternatives
|
|
63
|
+
};
|
|
64
|
+
if (hintAlternatives.length) {
|
|
65
|
+
const hintText = hintAlternatives.map(({
|
|
66
|
+
text
|
|
67
|
+
}) => text);
|
|
68
|
+
const response = await this.model.api.translateTextFx({
|
|
69
|
+
text: hintText,
|
|
70
|
+
targetLanguage: params.targetLanguage
|
|
71
|
+
});
|
|
72
|
+
if (translatedAlternatives.options) {
|
|
73
|
+
translatedAlternatives.options.hints = hintAlternatives.map((alternative, index) => ({
|
|
74
|
+
...alternative,
|
|
75
|
+
translatedMessage: decodeHTMLEntities(response.data.translations[index].translatedText)
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (defaultAlternatives.length) {
|
|
80
|
+
const defaultText = defaultAlternatives.map(({
|
|
81
|
+
text
|
|
82
|
+
}) => text);
|
|
83
|
+
const response = await this.model.api.translateTextFx({
|
|
84
|
+
text: defaultText,
|
|
85
|
+
targetLanguage: params.targetLanguage
|
|
86
|
+
});
|
|
87
|
+
if (translatedAlternatives.options) {
|
|
88
|
+
translatedAlternatives.options.default = defaultAlternatives.map((alternative, index) => ({
|
|
89
|
+
...alternative,
|
|
90
|
+
translatedText: decodeHTMLEntities(response.data.translations[index].translatedText)
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return translatedAlternatives;
|
|
95
|
+
})
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
createTranslateMessageEffect() {
|
|
99
|
+
return createEffect(async ({
|
|
100
|
+
message,
|
|
101
|
+
targetLanguage
|
|
102
|
+
}) => {
|
|
103
|
+
const optionsText = message.options.map(({
|
|
104
|
+
text
|
|
105
|
+
}) => text);
|
|
106
|
+
const response = await this.model.api.translateTextFx({
|
|
107
|
+
text: [message.message, ...optionsText],
|
|
108
|
+
targetLanguage
|
|
109
|
+
});
|
|
110
|
+
const translatedOptions = response.data.translations.slice(1);
|
|
111
|
+
const optionsCopy = [...message.options];
|
|
112
|
+
const newOptions = optionsCopy.map((option, index) => ({
|
|
113
|
+
...option,
|
|
114
|
+
translatedText: decodeHTMLEntities(translatedOptions[index].translatedText)
|
|
115
|
+
}));
|
|
116
|
+
return {
|
|
117
|
+
...message,
|
|
118
|
+
translatedMessage: decodeHTMLEntities(response.data.translations[0].translatedText),
|
|
119
|
+
options: newOptions
|
|
120
|
+
};
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
createTranslateBatchEffect() {
|
|
124
|
+
return attach({
|
|
125
|
+
source: [this.model.credits.$assignmentId, this.model.credits.$exerciseId, this.model.messages.$state],
|
|
126
|
+
mapParams: (params, [assignmentId, exerciseId, messages]) => ({
|
|
127
|
+
params,
|
|
128
|
+
assignmentId,
|
|
129
|
+
exerciseId,
|
|
130
|
+
messages
|
|
131
|
+
}),
|
|
132
|
+
effect: createEffect(async ({
|
|
133
|
+
messages,
|
|
134
|
+
assignmentId,
|
|
135
|
+
exerciseId,
|
|
136
|
+
params
|
|
137
|
+
}) => {
|
|
138
|
+
const currentMessages = messages[assignmentId]?.[exerciseId]?.messages ?? [];
|
|
139
|
+
if (this.shouldSkipTranslation(currentMessages)) {
|
|
140
|
+
return currentMessages;
|
|
141
|
+
}
|
|
142
|
+
const messagesText = currentMessages.map(({
|
|
143
|
+
message
|
|
144
|
+
}) => message);
|
|
145
|
+
const response = await this.model.api.translateTextFx({
|
|
146
|
+
text: messagesText,
|
|
147
|
+
targetLanguage: params.targetLanguage
|
|
148
|
+
});
|
|
149
|
+
const lastMessage = currentMessages.at(-1);
|
|
150
|
+
const lastMessageTranslatedOptions = lastMessage ? await this.translateMessageOptions(lastMessage, params.targetLanguage) : undefined;
|
|
151
|
+
const errorMessageTranslationResponse = await this.model.api.translateTextFx({
|
|
152
|
+
text: [this.model.defaultMessages.error.message],
|
|
153
|
+
targetLanguage: params.targetLanguage
|
|
154
|
+
});
|
|
155
|
+
this.model.defaultMessages.error.translatedMessage = decodeHTMLEntities(errorMessageTranslationResponse.data.translations[0].translatedText);
|
|
156
|
+
|
|
157
|
+
// TODO: move this AFTER state update in sample and remove initTranslationSamples it is not needed
|
|
158
|
+
// TODO: maybe just one request to translate everything
|
|
159
|
+
this.setIsTranslated(true);
|
|
160
|
+
const translatedMessages = response.data.translations.map(({
|
|
161
|
+
translatedText
|
|
162
|
+
}) => translatedText);
|
|
163
|
+
return currentMessages.map((message, index) => {
|
|
164
|
+
const isLastMessage = index === currentMessages.length - 1;
|
|
165
|
+
return {
|
|
166
|
+
...message,
|
|
167
|
+
options: isLastMessage ? lastMessageTranslatedOptions : message.options,
|
|
168
|
+
translatedMessage: decodeHTMLEntities(translatedMessages[index])
|
|
169
|
+
};
|
|
170
|
+
});
|
|
171
|
+
})
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
async translateMessageOptions(message, targetLanguage) {
|
|
175
|
+
if (!message?.options?.length) {
|
|
176
|
+
const translatedAlternatives = await this.translateAlternativesFx({
|
|
177
|
+
targetLanguage
|
|
178
|
+
});
|
|
179
|
+
this.model.setAlternatives(translatedAlternatives);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const optionsText = message.options.map(({
|
|
183
|
+
text
|
|
184
|
+
}) => text);
|
|
185
|
+
const response = await this.model.api.translateTextFx({
|
|
186
|
+
text: optionsText,
|
|
187
|
+
targetLanguage
|
|
188
|
+
});
|
|
189
|
+
return message.options.map((option, index) => ({
|
|
190
|
+
...option,
|
|
191
|
+
translatedText: decodeHTMLEntities(response.data.translations[index].translatedText)
|
|
192
|
+
}));
|
|
193
|
+
}
|
|
194
|
+
reset() {
|
|
195
|
+
this.setIsTranslated(false);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=translation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createEvent","restore","attach","createEffect","sample","decodeHTMLEntities","ChatbotTranslation","setIsTranslated","$isTranslated","constructor","chatbotModel","model","translateAlternativesFx","createTranslateAlternativesEffect","translateMessageFx","createTranslateMessageEffect","translateBatchFx","createTranslateBatchEffect","initTranslationSamples","shouldSkipTranslation","messages","getState","allTranslated","every","message","translatedMessage","clock","doneData","source","credits","$assignmentId","$exerciseId","fn","assignmentId","exerciseId","translatedMessages","watch","setField","entityId","fieldId","$alternatives","mapParams","params","alternatives","effect","hintAlternatives","options","hints","defaultAlternatives","default","translatedAlternatives","length","hintText","map","text","response","api","translateTextFx","targetLanguage","alternative","index","data","translations","translatedText","defaultText","optionsText","translatedOptions","slice","optionsCopy","newOptions","option","$state","currentMessages","messagesText","lastMessage","at","lastMessageTranslatedOptions","translateMessageOptions","undefined","errorMessageTranslationResponse","defaultMessages","error","isLastMessage","setAlternatives","reset"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/translation.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["features/chatbot/types/api.types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MessageVariant"],"sourceRoot":"../../../../../src","sources":["features/chatbot/types/model.types.ts"],"mappings":";;AA+DA,WAAYA,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AudioStatus"],"sourceRoot":"../../../../../src","sources":["features/chatbot/types/t2s.types.ts"],"mappings":";;AAEA,WAAYA,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["features/chatbot/types/translation.types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useFeaturesLocalization","setFeaturesLocalization","Locale"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,uBAAuB,EAAEC,uBAAuB,EAAEC,MAAM,QAAQ,+BAAsB;AAE/F,cAAc,6BAAoB","ignoreList":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { createContext, useContext } from 'react';
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
export function createFeature() {
|
|
6
|
+
const context = /*#__PURE__*/createContext(null);
|
|
7
|
+
const FeatureProvider = ({
|
|
8
|
+
children,
|
|
9
|
+
model
|
|
10
|
+
}) => {
|
|
11
|
+
if (!model) return null;
|
|
12
|
+
return /*#__PURE__*/_jsx(context.Provider, {
|
|
13
|
+
value: model,
|
|
14
|
+
children: children
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
const useFeatureModel = () => {
|
|
18
|
+
return useContext(context);
|
|
19
|
+
};
|
|
20
|
+
return [FeatureProvider, useFeatureModel, context];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=createFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","jsx","_jsx","createFeature","context","FeatureProvider","children","model","Provider","value","useFeatureModel"],"sourceRoot":"../../../../src","sources":["lib/createFeature/createFeature.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAqBC,UAAU,QAAQ,OAAO;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAE3E,OAAO,SAASC,aAAaA,CAAA,EAAM;EACjC,MAAMC,OAAO,gBAAGL,aAAa,CAAW,IAAI,CAAC;EAM7C,MAAMM,eAAe,GAAGA,CAAC;IAAEC,QAAQ;IAAEC;EAAqB,CAAC,KAAK;IAC9D,IAAI,CAACA,KAAK,EAAE,OAAO,IAAI;IAEvB,oBAAOL,IAAA,CAACE,OAAO,CAACI,QAAQ;MAACC,KAAK,EAAEF,KAAM;MAAAD,QAAA,EAAEA;IAAQ,CAAmB,CAAC;EACtE,CAAC;EAED,MAAMI,eAAe,GAAGA,CAAA,KAAM;IAC5B,OAAOV,UAAU,CAACI,OAAO,CAAC;EAC5B,CAAC;EAED,OAAO,CAACC,eAAe,EAAEK,eAAe,EAAEN,OAAO,CAAC;AACpD","ignoreList":[]}
|