@magmamath/students-features 0.9.111 → 0.9.112-rc.standard-1
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/dist/commonjs/features/chatbot/TTS_HIGHLIGHTING.md +58 -69
- package/dist/commonjs/features/chatbot/components/Chat/Chat.js +21 -32
- package/dist/commonjs/features/chatbot/components/Chat/Chat.js.map +1 -1
- package/dist/commonjs/features/chatbot/components/ChatMessage/ChatMessage.js.map +1 -1
- package/dist/commonjs/features/chatbot/components/ChatMessage/MessageContent.js +4 -16
- package/dist/commonjs/features/chatbot/components/ChatMessage/MessageContent.js.map +1 -1
- package/dist/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.js +2 -6
- package/dist/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.js.map +1 -1
- package/dist/commonjs/features/chatbot/components/Chatbot.js +2 -4
- package/dist/commonjs/features/chatbot/components/Chatbot.js.map +1 -1
- package/dist/commonjs/features/chatbot/constants.js +1 -2
- package/dist/commonjs/features/chatbot/constants.js.map +1 -1
- package/dist/commonjs/features/chatbot/helpers.js +8 -1
- package/dist/commonjs/features/chatbot/helpers.js.map +1 -1
- package/dist/commonjs/features/chatbot/model/ChatBotModel.js +6 -7
- package/dist/commonjs/features/chatbot/model/ChatBotModel.js.map +1 -1
- package/dist/commonjs/features/chatbot/model/t2s.js +107 -0
- package/dist/commonjs/features/chatbot/model/t2s.js.map +1 -0
- package/dist/commonjs/features/chatbot/types/model.types.js.map +1 -1
- package/dist/commonjs/features/chatbot/types/t2s.types.js.map +1 -1
- package/dist/commonjs/index.js +1 -13
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/types/common.types.js +0 -4
- package/dist/module/features/chatbot/TTS_HIGHLIGHTING.md +58 -69
- package/dist/module/features/chatbot/components/Chat/Chat.js +21 -32
- package/dist/module/features/chatbot/components/Chat/Chat.js.map +1 -1
- package/dist/module/features/chatbot/components/ChatMessage/ChatMessage.js.map +1 -1
- package/dist/module/features/chatbot/components/ChatMessage/MessageContent.js +4 -16
- package/dist/module/features/chatbot/components/ChatMessage/MessageContent.js.map +1 -1
- package/dist/module/features/chatbot/components/ChatMessage/ReceivedMessage.js +2 -6
- package/dist/module/features/chatbot/components/ChatMessage/ReceivedMessage.js.map +1 -1
- package/dist/module/features/chatbot/components/Chatbot.js +2 -4
- package/dist/module/features/chatbot/components/Chatbot.js.map +1 -1
- package/dist/module/features/chatbot/constants.js +0 -1
- package/dist/module/features/chatbot/constants.js.map +1 -1
- package/dist/module/features/chatbot/helpers.js +8 -1
- package/dist/module/features/chatbot/helpers.js.map +1 -1
- package/dist/module/features/chatbot/index.js.map +1 -1
- package/dist/module/features/chatbot/model/ChatBotModel.js +6 -7
- package/dist/module/features/chatbot/model/ChatBotModel.js.map +1 -1
- package/dist/module/features/chatbot/model/t2s.js +102 -0
- package/dist/module/features/chatbot/model/t2s.js.map +1 -0
- package/dist/module/features/chatbot/types/model.types.js.map +1 -1
- package/dist/module/features/chatbot/types/t2s.types.js.map +1 -1
- package/dist/module/index.js +0 -1
- package/dist/module/index.js.map +1 -1
- package/dist/module/types/common.types.js +0 -2
- package/dist/typescript/commonjs/features/chatbot/components/Chat/Chat.d.ts +1 -3
- package/dist/typescript/commonjs/features/chatbot/components/Chat/Chat.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ChatMessage.d.ts +1 -3
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ChatMessage.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageContent.d.ts +2 -4
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/MessageContent.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts +1 -1
- package/dist/typescript/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/components/Chatbot.d.ts +1 -3
- package/dist/typescript/commonjs/features/chatbot/components/Chatbot.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/constants.d.ts +0 -1
- package/dist/typescript/commonjs/features/chatbot/constants.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/helpers.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/index.d.ts +1 -1
- package/dist/typescript/commonjs/features/chatbot/index.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/model/ChatBotModel.d.ts +2 -3
- package/dist/typescript/commonjs/features/chatbot/model/ChatBotModel.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/model/t2s.d.ts +34 -0
- package/dist/typescript/commonjs/features/chatbot/model/t2s.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts +4 -2
- package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts +8 -1
- package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/types/t2s.types.d.ts +0 -25
- package/dist/typescript/commonjs/features/chatbot/types/t2s.types.d.ts.map +1 -1
- package/dist/typescript/commonjs/index.d.ts +0 -1
- package/dist/typescript/commonjs/index.d.ts.map +1 -1
- package/dist/typescript/commonjs/types/common.types.d.ts +0 -2
- package/dist/typescript/commonjs/types/common.types.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/components/Chat/Chat.d.ts +1 -3
- package/dist/typescript/module/features/chatbot/components/Chat/Chat.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/components/ChatMessage/ChatMessage.d.ts +1 -3
- package/dist/typescript/module/features/chatbot/components/ChatMessage/ChatMessage.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageContent.d.ts +2 -4
- package/dist/typescript/module/features/chatbot/components/ChatMessage/MessageContent.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts +1 -1
- package/dist/typescript/module/features/chatbot/components/ChatMessage/ReceivedMessage.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/components/Chatbot.d.ts +1 -3
- package/dist/typescript/module/features/chatbot/components/Chatbot.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/constants.d.ts +0 -1
- package/dist/typescript/module/features/chatbot/constants.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/helpers.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/index.d.ts +1 -1
- package/dist/typescript/module/features/chatbot/index.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/model/ChatBotModel.d.ts +2 -3
- package/dist/typescript/module/features/chatbot/model/ChatBotModel.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/model/t2s.d.ts +34 -0
- package/dist/typescript/module/features/chatbot/model/t2s.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/types/api.types.d.ts +4 -2
- package/dist/typescript/module/features/chatbot/types/api.types.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/types/model.types.d.ts +8 -1
- package/dist/typescript/module/features/chatbot/types/model.types.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/types/t2s.types.d.ts +0 -25
- package/dist/typescript/module/features/chatbot/types/t2s.types.d.ts.map +1 -1
- package/dist/typescript/module/index.d.ts +0 -1
- package/dist/typescript/module/index.d.ts.map +1 -1
- package/dist/typescript/module/types/common.types.d.ts +0 -2
- package/dist/typescript/module/types/common.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/features/chatbot/TTS_HIGHLIGHTING.md +58 -69
- package/src/features/chatbot/components/Chat/Chat.tsx +21 -36
- package/src/features/chatbot/components/ChatMessage/ChatMessage.tsx +1 -3
- package/src/features/chatbot/components/ChatMessage/MessageContent.tsx +3 -25
- package/src/features/chatbot/components/ChatMessage/ReceivedMessage.tsx +0 -4
- package/src/features/chatbot/components/Chatbot.tsx +0 -4
- package/src/features/chatbot/constants.ts +0 -2
- package/src/features/chatbot/helpers.ts +10 -1
- package/src/features/chatbot/index.ts +1 -1
- package/src/features/chatbot/model/ChatBotModel.ts +6 -10
- package/src/features/chatbot/model/t2s.ts +123 -0
- package/src/features/chatbot/types/api.types.ts +7 -1
- package/src/features/chatbot/types/model.types.ts +9 -1
- package/src/features/chatbot/types/t2s.types.ts +0 -33
- package/src/index.ts +0 -1
- package/src/types/common.types.ts +0 -4
- package/dist/commonjs/features/chatbot/helpers/ttsHighlight.js +0 -27
- package/dist/commonjs/features/chatbot/helpers/ttsHighlight.js.map +0 -1
- package/dist/commonjs/features/chatbot/model/ChatTTSHighlightModel.js +0 -56
- package/dist/commonjs/features/chatbot/model/ChatTTSHighlightModel.js.map +0 -1
- package/dist/commonjs/features/chatbot/model/ChatTTSModel.js +0 -154
- package/dist/commonjs/features/chatbot/model/ChatTTSModel.js.map +0 -1
- package/dist/commonjs/features/openEnded/components/OpenEndedAttemptsLimit.js +0 -34
- package/dist/commonjs/features/openEnded/components/OpenEndedAttemptsLimit.js.map +0 -1
- package/dist/commonjs/features/openEnded/components/OpenEndedScoreLabel.js +0 -77
- package/dist/commonjs/features/openEnded/components/OpenEndedScoreLabel.js.map +0 -1
- package/dist/commonjs/features/openEnded/index.js +0 -48
- package/dist/commonjs/features/openEnded/index.js.map +0 -1
- package/dist/commonjs/features/openEnded/oe.helpers.js +0 -26
- package/dist/commonjs/features/openEnded/oe.helpers.js.map +0 -1
- package/dist/commonjs/features/openEnded/oe.types.js +0 -14
- package/dist/commonjs/features/openEnded/oe.types.js.map +0 -1
- package/dist/commonjs/shared/common.constants.js +0 -9
- package/dist/commonjs/shared/common.constants.js.map +0 -1
- package/dist/module/features/chatbot/helpers/ttsHighlight.js +0 -21
- package/dist/module/features/chatbot/helpers/ttsHighlight.js.map +0 -1
- package/dist/module/features/chatbot/model/ChatTTSHighlightModel.js +0 -52
- package/dist/module/features/chatbot/model/ChatTTSHighlightModel.js.map +0 -1
- package/dist/module/features/chatbot/model/ChatTTSModel.js +0 -149
- package/dist/module/features/chatbot/model/ChatTTSModel.js.map +0 -1
- package/dist/module/features/openEnded/components/OpenEndedAttemptsLimit.js +0 -28
- package/dist/module/features/openEnded/components/OpenEndedAttemptsLimit.js.map +0 -1
- package/dist/module/features/openEnded/components/OpenEndedScoreLabel.js +0 -71
- package/dist/module/features/openEnded/components/OpenEndedScoreLabel.js.map +0 -1
- package/dist/module/features/openEnded/index.js +0 -7
- package/dist/module/features/openEnded/index.js.map +0 -1
- package/dist/module/features/openEnded/oe.helpers.js +0 -21
- package/dist/module/features/openEnded/oe.helpers.js.map +0 -1
- package/dist/module/features/openEnded/oe.types.js +0 -10
- package/dist/module/features/openEnded/oe.types.js.map +0 -1
- package/dist/module/shared/common.constants.js +0 -5
- package/dist/module/shared/common.constants.js.map +0 -1
- package/dist/typescript/commonjs/features/chatbot/helpers/ttsHighlight.d.ts +0 -8
- package/dist/typescript/commonjs/features/chatbot/helpers/ttsHighlight.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/chatbot/model/ChatTTSHighlightModel.d.ts +0 -25
- package/dist/typescript/commonjs/features/chatbot/model/ChatTTSHighlightModel.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/chatbot/model/ChatTTSModel.d.ts +0 -38
- package/dist/typescript/commonjs/features/chatbot/model/ChatTTSModel.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/openEnded/components/OpenEndedAttemptsLimit.d.ts +0 -7
- package/dist/typescript/commonjs/features/openEnded/components/OpenEndedAttemptsLimit.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/openEnded/components/OpenEndedScoreLabel.d.ts +0 -12
- package/dist/typescript/commonjs/features/openEnded/components/OpenEndedScoreLabel.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/openEnded/index.d.ts +0 -5
- package/dist/typescript/commonjs/features/openEnded/index.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/openEnded/oe.helpers.d.ts +0 -13
- package/dist/typescript/commonjs/features/openEnded/oe.helpers.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/openEnded/oe.types.d.ts +0 -7
- package/dist/typescript/commonjs/features/openEnded/oe.types.d.ts.map +0 -1
- package/dist/typescript/commonjs/shared/common.constants.d.ts +0 -2
- package/dist/typescript/commonjs/shared/common.constants.d.ts.map +0 -1
- package/dist/typescript/module/features/chatbot/helpers/ttsHighlight.d.ts +0 -8
- package/dist/typescript/module/features/chatbot/helpers/ttsHighlight.d.ts.map +0 -1
- package/dist/typescript/module/features/chatbot/model/ChatTTSHighlightModel.d.ts +0 -25
- package/dist/typescript/module/features/chatbot/model/ChatTTSHighlightModel.d.ts.map +0 -1
- package/dist/typescript/module/features/chatbot/model/ChatTTSModel.d.ts +0 -38
- package/dist/typescript/module/features/chatbot/model/ChatTTSModel.d.ts.map +0 -1
- package/dist/typescript/module/features/openEnded/components/OpenEndedAttemptsLimit.d.ts +0 -7
- package/dist/typescript/module/features/openEnded/components/OpenEndedAttemptsLimit.d.ts.map +0 -1
- package/dist/typescript/module/features/openEnded/components/OpenEndedScoreLabel.d.ts +0 -12
- package/dist/typescript/module/features/openEnded/components/OpenEndedScoreLabel.d.ts.map +0 -1
- package/dist/typescript/module/features/openEnded/index.d.ts +0 -5
- package/dist/typescript/module/features/openEnded/index.d.ts.map +0 -1
- package/dist/typescript/module/features/openEnded/oe.helpers.d.ts +0 -13
- package/dist/typescript/module/features/openEnded/oe.helpers.d.ts.map +0 -1
- package/dist/typescript/module/features/openEnded/oe.types.d.ts +0 -7
- package/dist/typescript/module/features/openEnded/oe.types.d.ts.map +0 -1
- package/dist/typescript/module/shared/common.constants.d.ts +0 -2
- package/dist/typescript/module/shared/common.constants.d.ts.map +0 -1
- package/src/features/chatbot/helpers/ttsHighlight.ts +0 -22
- package/src/features/chatbot/model/ChatTTSHighlightModel.ts +0 -64
- package/src/features/chatbot/model/ChatTTSModel.ts +0 -168
- package/src/features/openEnded/components/OpenEndedAttemptsLimit.tsx +0 -26
- package/src/features/openEnded/components/OpenEndedScoreLabel.tsx +0 -81
- package/src/features/openEnded/index.ts +0 -4
- package/src/features/openEnded/oe.helpers.ts +0 -31
- package/src/features/openEnded/oe.types.ts +0 -6
- package/src/shared/common.constants.ts +0 -3
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
5
|
-
Word-by-word text highlighting synchronized with text-to-speech playback in the chatbot. The feature is optional and enabled via
|
|
5
|
+
Word-by-word text highlighting synchronized with text-to-speech playback in the chatbot. The feature is optional and enabled via props.
|
|
6
6
|
|
|
7
7
|
## How It Works
|
|
8
8
|
|
|
@@ -18,7 +18,7 @@ Word-by-word text highlighting synchronized with text-to-speech playback in the
|
|
|
18
18
|
│ [{ markName: "w_0", timeSeconds: 0.0 }, │
|
|
19
19
|
│ { markName: "w_1", timeSeconds: 0.5 }] │
|
|
20
20
|
│ ↓ │
|
|
21
|
-
│ 4. Audio plays,
|
|
21
|
+
│ 4. Audio plays, ontimeupdate fires (~4x/sec) │
|
|
22
22
|
│ ↓ │
|
|
23
23
|
│ 5. Current time → find matching timepoint → word index │
|
|
24
24
|
│ ↓ │
|
|
@@ -33,88 +33,77 @@ Word-by-word text highlighting synchronized with text-to-speech playback in the
|
|
|
33
33
|
chatModel.bot.setUpT2S({
|
|
34
34
|
audioProvider: createT2SAudioProvider(),
|
|
35
35
|
textSanitizer: removeKatexPartFromTextToSpeech,
|
|
36
|
-
|
|
36
|
+
isHighlightEnabled: true, // Enable highlighting
|
|
37
37
|
})
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## Architecture
|
|
41
|
-
|
|
42
|
-
### ChatTTSModel (ChatTTSModel.ts)
|
|
43
|
-
|
|
44
|
-
Handles TTS playback and word highlighting. Key design decisions:
|
|
45
|
-
|
|
46
|
-
- **Map-based cache** — `audioCache: Map<string, AudioCache>` stores both `audioPath` and `timepoints` per message. When highlighting is off, `timepoints` is `[]`. Cache lives for the model's lifetime (cleared when user leaves the problem).
|
|
47
|
-
- **`fetchAudio()` method** — encapsulates API call + audioContent decoding. Highlight vs non-highlight differences are ternaries (SSML vs plain text, `enableTimePointing`).
|
|
48
|
-
- **`play()` is linear** — cache lookup → fetch if miss → store → activate highlight if enabled → play audio. No branching between highlight/non-highlight paths.
|
|
49
|
-
- **Pause/resume guards** — `wordHighlightEnabled` check before toggling `setIsActive(false)`/`setIsActive(true)` on pause/resume.
|
|
50
|
-
- **`wordHighlightEnabled` (private)** — stored result of `!!isWordHighlightEnabled && !!audioProvider.onTimeUpdate`. Set once at `setConfig`.
|
|
51
|
-
- **`isWordHighlightEnabled` (public getter)** — read-only access for external consumers (e.g. `Chat.tsx`).
|
|
52
38
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
onTimeUpdate?: OnTimeUpdate // optional — presence enables highlight capability
|
|
62
|
-
}
|
|
39
|
+
// In component
|
|
40
|
+
<Chatbot
|
|
41
|
+
model={chatModel.bot}
|
|
42
|
+
isHighlightEnabled={true}
|
|
43
|
+
highlightConfig={{
|
|
44
|
+
MessageRenderer: ChatbotHighlightedMessage,
|
|
45
|
+
}}
|
|
46
|
+
/>
|
|
63
47
|
```
|
|
64
48
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
### ChatTTSHighlightModel (ChatTTSHighlightModel.ts)
|
|
68
|
-
|
|
69
|
-
Manages highlight state using Effector stores with declarative reset. Receives `OnTimeUpdate` callback directly (not the whole `AudioProvider`).
|
|
70
|
-
|
|
71
|
-
- **`$isActive`** — gates `$highlightedWordIndex` computation. Toggled on pause/resume without resetting timepoints.
|
|
72
|
-
- **`$highlightedWordIndex`** — derived store, returns `-1` when inactive or no match. Parses mark name via `WORD_MARK_REGEX`.
|
|
73
|
-
- **`activate(timepoints, onTimeUpdate)`** — sets timepoints, enables highlighting, registers time update callback. Only triggers store updates when the highlighted word actually changes (`lastMark` comparison).
|
|
74
|
-
- **`deactivate(onTimeUpdate)`** — stops listening, resets all state via declarative `.reset()` chain.
|
|
75
|
-
- **All stores use `.reset(this.reset)`** — single `reset` event clears `$time`, `$timepoints`, and `$isActive`.
|
|
76
|
-
|
|
77
|
-
### Helpers (helpers/ttsHighlight.ts)
|
|
49
|
+
## Files Modified
|
|
78
50
|
|
|
79
|
-
-
|
|
80
|
-
- **`findCurrentMark(timepoints, time)`** — iterates backwards through timepoints to find the current mark. Efficient for linear playback.
|
|
51
|
+
### students-features
|
|
81
52
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
53
|
+
| File | Changes |
|
|
54
|
+
|------|---------|
|
|
55
|
+
| `types/t2s.types.ts` | Added `onTimeUpdate`, `getCurrentTime` to AudioProvider; added `HighlightConfig` type |
|
|
56
|
+
| `types/api.types.ts` | Added `ssml` option to GoogleText2SpeechPayload input |
|
|
57
|
+
| `helpers/textToSSML.ts` | NEW - Converts text to SSML with word marks |
|
|
58
|
+
| `model/t2s.ts` | Added `$highlightedWordIndex`, `$timepoints`, `$time` stores; SSML/timepoint handling |
|
|
59
|
+
| `components/Chatbot.tsx` | Added `isHighlightEnabled`, `highlightConfig` props |
|
|
60
|
+
| `components/Chat/Chat.tsx` | Passes highlight state to ChatMessage |
|
|
61
|
+
| `components/ChatMessage/*` | Passes highlight props through component chain |
|
|
62
|
+
| `components/ChatMessage/MessageContent.tsx` | Renders custom MessageRenderer when provided |
|
|
63
|
+
|
|
64
|
+
### students-web
|
|
65
|
+
|
|
66
|
+
| File | Changes |
|
|
67
|
+
|------|---------|
|
|
68
|
+
| `chatbot/helpers.ts` | Added `onTimeUpdate`, `getCurrentTime` to AudioProvider |
|
|
69
|
+
| `chatbot/components/ChatbotHighlightedMessage.tsx` | NEW - Renders words with highlight styling |
|
|
70
|
+
| `chatbot/components/ChatbotHighlightedMessage.module.scss` | NEW - Yellow highlight styles |
|
|
71
|
+
| `chatbot/model/model.ts` | Enabled `isHighlightEnabled: true` |
|
|
72
|
+
| `PracticeMode/chatbot/PracticeChatbot.tsx` | Passes highlightConfig with MessageRenderer |
|
|
73
|
+
|
|
74
|
+
## Key Components
|
|
75
|
+
|
|
76
|
+
### textToSSML (students-features)
|
|
77
|
+
```ts
|
|
78
|
+
textToSSML("Hello world")
|
|
79
|
+
// → '<speak><mark name="w_0"/>Hello <mark name="w_1"/>world</speak>'
|
|
80
|
+
```
|
|
85
81
|
|
|
86
|
-
###
|
|
82
|
+
### $highlightedWordIndex (students-features)
|
|
83
|
+
Effector store that computes current word index from timepoints + playback time.
|
|
87
84
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
85
|
+
### ChatbotHighlightedMessage (students-web)
|
|
86
|
+
```tsx
|
|
87
|
+
// Splits text, highlights word at highlightedIndex
|
|
88
|
+
<span className={isHighlighted ? styles.Highlighted : undefined}>
|
|
89
|
+
{word}
|
|
90
|
+
</span>
|
|
91
|
+
```
|
|
94
92
|
|
|
95
93
|
## Data Flow
|
|
96
94
|
|
|
97
95
|
```
|
|
98
|
-
AudioProvider.onTimeUpdate(
|
|
96
|
+
AudioProvider.onTimeUpdate(time)
|
|
97
|
+
↓
|
|
98
|
+
t2s.setTime(time)
|
|
99
99
|
↓
|
|
100
|
-
|
|
100
|
+
$highlightedWordIndex = findCurrentMark(timepoints, time) → parse index
|
|
101
101
|
↓
|
|
102
|
-
|
|
102
|
+
Chat.tsx: useUnit(model.t2s.$highlightedWordIndex)
|
|
103
103
|
↓
|
|
104
|
-
|
|
104
|
+
ChatMessage → ReceivedMessage → MessageContent
|
|
105
105
|
↓
|
|
106
|
-
|
|
106
|
+
MessageRenderer({ text, highlightedIndex })
|
|
107
107
|
↓
|
|
108
|
-
|
|
108
|
+
ChatbotHighlightedMessage renders highlighted word
|
|
109
109
|
```
|
|
110
|
-
|
|
111
|
-
## Key Files
|
|
112
|
-
|
|
113
|
-
| File | Purpose |
|
|
114
|
-
|------|---------|
|
|
115
|
-
| `model/ChatTTSModel.ts` | `ChatTTSModel` — TTS playback, caching, highlight orchestration |
|
|
116
|
-
| `model/ChatTTSHighlightModel.ts` | Highlight state — timepoints, current time, `$isActive`, derived word index |
|
|
117
|
-
| `helpers/ttsHighlight.ts` | `textToSSML` + `findCurrentMark` — SSML conversion and playback position lookup |
|
|
118
|
-
| `constants.ts` | `WORD_MARK_REGEX` and audio config defaults |
|
|
119
|
-
| `types/t2s.types.ts` | `AudioProvider`, `OnTimeUpdate`, `AudioStatus`, `AudioCache`, `TTSHighlightRendererProps` types |
|
|
120
|
-
| `components/Chat/Chat.tsx` | Reads `isWordHighlightEnabled` and `$highlightedWordIndex`, passes to messages |
|
|
@@ -27,18 +27,16 @@ const Chat = ({
|
|
|
27
27
|
isTextToSpeechEnabled,
|
|
28
28
|
isInputDisabled,
|
|
29
29
|
colorScheme = _styleTypes.ColorScheme.Blue,
|
|
30
|
-
MessageWrapper
|
|
31
|
-
TTSHighlightRenderer
|
|
30
|
+
MessageWrapper
|
|
32
31
|
}) => {
|
|
33
32
|
const dimensions = (0, _reactNative.useWindowDimensions)();
|
|
34
33
|
const ref = (0, _react.useRef)(null);
|
|
35
34
|
const isOpen = (0, _effectorReact.useUnit)(model.$isOpen);
|
|
36
35
|
const isHelpRequestPending = (0, _effectorReact.useUnit)(model.sendHelpRequestFx.pending);
|
|
37
36
|
const isTextToSpeechPending = (0, _effectorReact.useUnit)(model.api.textToSpeechTextFx.pending);
|
|
38
|
-
const audioStatus = (0, _effectorReact.useUnit)(model.t2s.$status);
|
|
39
37
|
const currentPlayingId = (0, _effectorReact.useUnit)(model.t2s.$currentPlayingId);
|
|
40
|
-
const highlightedWordIndex = (0, _effectorReact.useUnit)(model.t2s.wordHighlight.$highlightedWordIndex);
|
|
41
38
|
const isTranslated = (0, _effectorReact.useUnit)(model.translation.$isTranslated);
|
|
39
|
+
const audioStatus = (0, _effectorReact.useUnit)(model.t2s.$status);
|
|
42
40
|
const errorSpottingEnabled = (0, _effectorReact.useUnit)(model.errorSpotting.$isEnabled);
|
|
43
41
|
const messages = (0, _effectorReact.useStoreMap)(model.$currentChatData, ({
|
|
44
42
|
messages
|
|
@@ -62,34 +60,25 @@ const Chat = ({
|
|
|
62
60
|
},
|
|
63
61
|
children: [isOpen && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
64
62
|
style: [styles.gap, isInputDisabled && styles.messagesWithoutInput],
|
|
65
|
-
children: [messages.map((
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
isActive: isPlayingMessage,
|
|
85
|
-
isLoading: isTextToSpeechPending,
|
|
86
|
-
status: audioStatus,
|
|
87
|
-
disabled: isTextToSpeechPending
|
|
88
|
-
}
|
|
89
|
-
})
|
|
90
|
-
})
|
|
91
|
-
}, key);
|
|
92
|
-
}), isHelpRequestPending && /*#__PURE__*/(0, _jsxRuntime.jsx)(_MessageLoader.MessageLoader, {
|
|
63
|
+
children: [messages.map(message => /*#__PURE__*/(0, _jsxRuntime.jsx)(_ConditionalWrapper.ConditionalWrapper, {
|
|
64
|
+
withWrapper: shouldWrapMessage,
|
|
65
|
+
Wrapper: MessageWrapper,
|
|
66
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatMessage.ChatMessage, {
|
|
67
|
+
isTranslated: isTranslated,
|
|
68
|
+
withIcon: !message.isOwnMessage && message.id === lastMessageId,
|
|
69
|
+
message: message,
|
|
70
|
+
variant: message.isOwnMessage ? _modelTypes.MessageVariant.SENT : _modelTypes.MessageVariant.RECEIVED,
|
|
71
|
+
colorScheme: colorScheme,
|
|
72
|
+
withErrorSpotting: errorSpottingEnabled && !message.isOwnMessage,
|
|
73
|
+
t2sState: {
|
|
74
|
+
isEnabled: isTextToSpeechEnabled && !message.isOwnMessage,
|
|
75
|
+
isActive: message.id === currentPlayingId,
|
|
76
|
+
isLoading: isTextToSpeechPending,
|
|
77
|
+
status: audioStatus,
|
|
78
|
+
disabled: isTextToSpeechPending
|
|
79
|
+
}
|
|
80
|
+
}, message.id)
|
|
81
|
+
})), isHelpRequestPending && /*#__PURE__*/(0, _jsxRuntime.jsx)(_MessageLoader.MessageLoader, {
|
|
93
82
|
colorScheme: colorScheme
|
|
94
83
|
})]
|
|
95
84
|
}), isOpen && !isInputDisabled && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatInput.ChatInput, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_effectorReact","_ChatMessage","_MessageLoader","_ChatInput","_modelTypes","_styleTypes","_ConditionalWrapper","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TOOLBAR_HEIGHT","BOTTOM_OFFSET","Platform","select","web","Chat","model","isHintFeedback","isTextToSpeechEnabled","isInputDisabled","colorScheme","ColorScheme","Blue","MessageWrapper","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_effectorReact","_ChatMessage","_MessageLoader","_ChatInput","_modelTypes","_styleTypes","_ConditionalWrapper","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TOOLBAR_HEIGHT","BOTTOM_OFFSET","Platform","select","web","Chat","model","isHintFeedback","isTextToSpeechEnabled","isInputDisabled","colorScheme","ColorScheme","Blue","MessageWrapper","dimensions","useWindowDimensions","ref","useRef","isOpen","useUnit","$isOpen","isHelpRequestPending","sendHelpRequestFx","pending","isTextToSpeechPending","api","textToSpeechTextFx","currentPlayingId","t2s","$currentPlayingId","isTranslated","translation","$isTranslated","audioStatus","$status","errorSpottingEnabled","errorSpotting","$isEnabled","messages","useStoreMap","$currentChatData","lastMessageId","at","id","MAX_HEIGHT","height","shouldWrapMessage","length","jsx","View","style","styles","container","maxHeight","children","jsxs","ScrollView","bounces","contentContainerStyle","list","onContentSizeChange","_","current","scrollToEnd","setScrollActive","gap","messagesWithoutInput","map","message","ConditionalWrapper","withWrapper","Wrapper","ChatMessage","withIcon","isOwnMessage","variant","MessageVariant","SENT","RECEIVED","withErrorSpotting","t2sState","isEnabled","isActive","isLoading","status","disabled","MessageLoader","ChatInput","hasMessages","exports","StyleSheet","create","flex","alignItems","width","paddingVertical","paddingRight","marginBottom"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/Chat/Chat.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_ReceivedMessage","_SentMessage","_modelTypes","_jsxRuntime","e","__esModule","default","variantsMap","MessageVariant","SENT","SentMessage","RECEIVED","ReceivedMessage","ChatMessage","variant","props","Component","jsx","exports"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/ChatMessage/ChatMessage.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAH,OAAA;AAAwD,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_ReceivedMessage","_SentMessage","_modelTypes","_jsxRuntime","e","__esModule","default","variantsMap","MessageVariant","SENT","SentMessage","RECEIVED","ReceivedMessage","ChatMessage","variant","props","Component","jsx","exports"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/ChatMessage/ChatMessage.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAH,OAAA;AAAwD,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAgBxD,MAAMG,WAAgE,GAAG;EACvE,CAACC,0BAAc,CAACC,IAAI,GAAGC,wBAAW;EAClC,CAACF,0BAAc,CAACG,QAAQ,GAAGC;AAC7B,CAAC;AAEM,MAAMC,WAAW,GAAGA,CAAC;EAAEC,OAAO;EAAE,GAAGC;AAAwB,CAAC,KAAK;EACtE,MAAMC,SAAS,GAAGT,WAAW,CAACO,OAAO,CAAC;EACtC,oBAAO,IAAAX,WAAA,CAAAc,GAAA,EAACD,SAAS;IAAA,GAAKD;EAAK,CAAG,CAAC;AACjC,CAAC;AAAAG,OAAA,CAAAL,WAAA,GAAAA,WAAA","ignoreList":[]}
|
|
@@ -17,17 +17,11 @@ const MessageContentWeb = ({
|
|
|
17
17
|
t2sState,
|
|
18
18
|
variant,
|
|
19
19
|
colorScheme = _styleTypes.ColorScheme.Blue,
|
|
20
|
-
withErrorSpotting
|
|
21
|
-
highlightedWordIndex,
|
|
22
|
-
TTSHighlightRenderer: TTSHighlightComponent
|
|
20
|
+
withErrorSpotting
|
|
23
21
|
}) => {
|
|
24
22
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
25
23
|
style: styles.messageText,
|
|
26
|
-
children: [
|
|
27
|
-
text: text,
|
|
28
|
-
highlightedIndex: highlightedWordIndex ?? -1,
|
|
29
|
-
colorScheme: colorScheme
|
|
30
|
-
}) : text, /*#__PURE__*/(0, _jsxRuntime.jsx)(_MessageButtonsBlock.MessageButtonsBlock, {
|
|
24
|
+
children: [text, /*#__PURE__*/(0, _jsxRuntime.jsx)(_MessageButtonsBlock.MessageButtonsBlock, {
|
|
31
25
|
message: message,
|
|
32
26
|
t2sState: t2sState,
|
|
33
27
|
variant: variant,
|
|
@@ -42,18 +36,12 @@ const MessageContentMobile = ({
|
|
|
42
36
|
t2sState,
|
|
43
37
|
variant,
|
|
44
38
|
colorScheme = _styleTypes.ColorScheme.Blue,
|
|
45
|
-
withErrorSpotting
|
|
46
|
-
highlightedWordIndex,
|
|
47
|
-
TTSHighlightRenderer: TTSHighlightComponent
|
|
39
|
+
withErrorSpotting
|
|
48
40
|
}) => {
|
|
49
41
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
50
42
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
51
43
|
style: [styles.messageText, styles.mobileMessageText],
|
|
52
|
-
children: [
|
|
53
|
-
text: text,
|
|
54
|
-
highlightedIndex: highlightedWordIndex ?? -1,
|
|
55
|
-
colorScheme: colorScheme
|
|
56
|
-
}) : text, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
44
|
+
children: [text, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
57
45
|
style: {
|
|
58
46
|
width: (0, _helpers.getSpacerSize)(message, t2sState)
|
|
59
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_styleTypes","_MessageButtonsBlock","_helpers","_jsxRuntime","e","__esModule","default","MessageContentWeb","message","text","t2sState","variant","colorScheme","ColorScheme","Blue","withErrorSpotting","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_styleTypes","_MessageButtonsBlock","_helpers","_jsxRuntime","e","__esModule","default","MessageContentWeb","message","text","t2sState","variant","colorScheme","ColorScheme","Blue","withErrorSpotting","jsxs","Text","style","styles","messageText","children","jsx","MessageButtonsBlock","MessageContentMobile","Fragment","mobileMessageText","View","width","getSpacerSize","MessageContent","exports","Platform","select","web","StyleSheet","create","flex","fontSize","fontWeight","fontFamily","color","lineHeight"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/ChatMessage/MessageContent.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAIA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,oBAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAAyC,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAD,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAYzC,MAAMG,iBAAiB,GAAGA,CAAC;EACzBC,OAAO;EACPC,IAAI;EACJC,QAAQ;EACRC,OAAO;EACPC,WAAW,GAAGC,uBAAW,CAACC,IAAI;EAC9BC;AACmB,CAAC,KAAK;EACzB,oBACE,IAAAZ,WAAA,CAAAa,IAAA,EAACjB,YAAA,CAAAkB,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,WAAY;IAAAC,QAAA,GAC7BZ,IAAI,eACL,IAAAN,WAAA,CAAAmB,GAAA,EAACrB,oBAAA,CAAAsB,mBAAmB;MAClBf,OAAO,EAAEA,OAAQ;MACjBE,QAAQ,EAAEA,QAAS;MACnBC,OAAO,EAAEA,OAAQ;MACjBC,WAAW,EAAEA,WAAY;MACzBG,iBAAiB,EAAEA;IAAkB,CACtC,CAAC;EAAA,CACE,CAAC;AAEX,CAAC;AAED,MAAMS,oBAAoB,GAAGA,CAAC;EAC5BhB,OAAO;EACPC,IAAI;EACJC,QAAQ;EACRC,OAAO;EACPC,WAAW,GAAGC,uBAAW,CAACC,IAAI;EAC9BC;AACmB,CAAC,KAAK;EACzB,oBACE,IAAAZ,WAAA,CAAAa,IAAA,EAAAb,WAAA,CAAAsB,QAAA;IAAAJ,QAAA,gBACE,IAAAlB,WAAA,CAAAa,IAAA,EAACjB,YAAA,CAAAkB,IAAI;MAACC,KAAK,EAAE,CAACC,MAAM,CAACC,WAAW,EAAED,MAAM,CAACO,iBAAiB,CAAE;MAAAL,QAAA,GACzDZ,IAAI,eACL,IAAAN,WAAA,CAAAmB,GAAA,EAACvB,YAAA,CAAA4B,IAAI;QAACT,KAAK,EAAE;UAAEU,KAAK,EAAE,IAAAC,sBAAa,EAACrB,OAAO,EAAEE,QAAQ;QAAE;MAAE,CAAE,CAAC;IAAA,CACxD,CAAC,eACP,IAAAP,WAAA,CAAAmB,GAAA,EAACrB,oBAAA,CAAAsB,mBAAmB;MAClBf,OAAO,EAAEA,OAAQ;MACjBE,QAAQ,EAAEA,QAAS;MACnBC,OAAO,EAAEA,OAAQ;MACjBC,WAAW,EAAEA,WAAY;MACzBG,iBAAiB,EAAEA;IAAkB,CACtC,CAAC;EAAA,CACF,CAAC;AAEP,CAAC;AAEM,MAAMe,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAGE,qBAAQ,CAACC,MAAM,CAAC;EAC5CC,GAAG,EAAE3B,iBAAiB;EACtBD,OAAO,EAAEkB;AACX,CAAC,CAAC;AAEF,MAAML,MAAM,GAAGgB,uBAAU,CAACC,MAAM,CAAC;EAC/BhB,WAAW,EAAE;IACXiB,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,GAAG;IACfC,UAAU,EAAE,cAAc;IAC1BC,KAAK,EAAE,SAAS;IAChBb,KAAK,EAAE;EACT,CAAC;EACDF,iBAAiB,EAAE;IACjBgB,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -18,9 +18,7 @@ const ReceivedMessage = ({
|
|
|
18
18
|
t2sState,
|
|
19
19
|
withIcon,
|
|
20
20
|
colorScheme = _styleTypes.ColorScheme.Blue,
|
|
21
|
-
withErrorSpotting
|
|
22
|
-
highlightedWordIndex,
|
|
23
|
-
TTSHighlightRenderer
|
|
21
|
+
withErrorSpotting
|
|
24
22
|
}) => {
|
|
25
23
|
const text = isTranslated ? message.translatedMessage : message.message;
|
|
26
24
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
@@ -39,9 +37,7 @@ const ReceivedMessage = ({
|
|
|
39
37
|
t2sState: t2sState,
|
|
40
38
|
text: text ?? '',
|
|
41
39
|
colorScheme: colorScheme,
|
|
42
|
-
withErrorSpotting: withErrorSpotting
|
|
43
|
-
highlightedWordIndex: highlightedWordIndex,
|
|
44
|
-
TTSHighlightRenderer: TTSHighlightRenderer
|
|
40
|
+
withErrorSpotting: withErrorSpotting
|
|
45
41
|
})
|
|
46
42
|
})]
|
|
47
43
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_ChatbotIcon","_styleTypes","_MessageContent","_modelTypes","_jsxRuntime","e","__esModule","default","ReceivedMessage","message","isTranslated","t2sState","withIcon","colorScheme","ColorScheme","Blue","withErrorSpotting","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_ChatbotIcon","_styleTypes","_MessageContent","_modelTypes","_jsxRuntime","e","__esModule","default","ReceivedMessage","message","isTranslated","t2sState","withIcon","colorScheme","ColorScheme","Blue","withErrorSpotting","text","translatedMessage","jsxs","View","style","styles","container","children","jsx","icon","ChatbotIcon","width","height","MessageContent","variant","MessageVariant","RECEIVED","exports","StyleSheet","create","flex","flexDirection","maxWidth","alignItems","justifyContent","alignSelf","marginRight","padding","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","borderRadius","borderBottomLeftRadius","backgroundColor"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/ChatMessage/ReceivedMessage.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAGA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAAwD,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAD,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEjD,MAAMG,eAAe,GAAGA,CAAC;EAC9BC,OAAO;EACPC,YAAY;EACZC,QAAQ;EACRC,QAAQ;EACRC,WAAW,GAAGC,uBAAW,CAACC,IAAI;EAC9BC;AACY,CAAC,KAAK;EAClB,MAAMC,IAAI,GAAGP,YAAY,GAAGD,OAAO,CAACS,iBAAiB,GAAGT,OAAO,CAACA,OAAO;EAEvE,oBACE,IAAAL,WAAA,CAAAe,IAAA,EAACpB,YAAA,CAAAqB,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,GAC3BZ,QAAQ,iBACP,IAAAR,WAAA,CAAAqB,GAAA,EAAC1B,YAAA,CAAAqB,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACI,IAAK;MAAAF,QAAA,eACvB,IAAApB,WAAA,CAAAqB,GAAA,EAACzB,YAAA,CAAA2B,WAAW;QAACC,KAAK,EAAE,EAAG;QAACC,MAAM,EAAE;MAAG,CAAE;IAAC,CAClC,CACP,eAED,IAAAzB,WAAA,CAAAqB,GAAA,EAAC1B,YAAA,CAAAqB,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACb,OAAQ;MAAAe,QAAA,eAC1B,IAAApB,WAAA,CAAAqB,GAAA,EAACvB,eAAA,CAAA4B,cAAc;QACbrB,OAAO,EAAEA,OAAQ;QACjBsB,OAAO,EAAEC,0BAAc,CAACC,QAAS;QACjCtB,QAAQ,EAAEA,QAAS;QACnBM,IAAI,EAAEA,IAAI,IAAI,EAAG;QACjBJ,WAAW,EAAEA,WAAY;QACzBG,iBAAiB,EAAEA;MAAkB,CACtC;IAAC,CACE,CAAC;EAAA,CACH,CAAC;AAEX,CAAC;AAAAkB,OAAA,CAAA1B,eAAA,GAAAA,eAAA;AAED,MAAMc,MAAM,GAAGa,uBAAU,CAACC,MAAM,CAAC;EAC/Bb,SAAS,EAAE;IACTc,IAAI,EAAE,CAAC;IACPC,aAAa,EAAE,KAAK;IACpBC,QAAQ,EAAE,GAAG;IACbX,KAAK,EAAE,GAAG;IACVY,UAAU,EAAE,UAAU;IACtBC,cAAc,EAAE;EAClB,CAAC;EACDf,IAAI,EAAE;IACJgB,SAAS,EAAE,UAAU;IACrBC,WAAW,EAAE;EACf,CAAC;EACDlC,OAAO,EAAE;IACP4B,IAAI,EAAE,CAAC;IACPC,aAAa,EAAE,KAAK;IACpBC,QAAQ,EAAE,GAAG;IACbK,OAAO,EAAE,CAAC;IACVC,WAAW,EAAE,MAAM;IACnBC,YAAY,EAAE;MAAElB,KAAK,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAC;IACrCkB,aAAa,EAAE,IAAI;IACnBC,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE,CAAC;IACZC,YAAY,EAAE,CAAC;IACfC,sBAAsB,EAAE,CAAC;IACzBC,eAAe,EAAE;EACnB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -20,8 +20,7 @@ const Chatbot = ({
|
|
|
20
20
|
textToSpeechConfig,
|
|
21
21
|
ButtonWrapper,
|
|
22
22
|
iconSize,
|
|
23
|
-
colorScheme = _styleTypes.ColorScheme.Blue
|
|
24
|
-
TTSHighlightRenderer
|
|
23
|
+
colorScheme = _styleTypes.ColorScheme.Blue
|
|
25
24
|
}) => {
|
|
26
25
|
const isChatAllowed = (0, _effectorReact.useUnit)(model.$chatAccess);
|
|
27
26
|
const isAvailable = (0, _effectorReact.useStoreMap)(model.$currentChatData, ({
|
|
@@ -48,8 +47,7 @@ const Chatbot = ({
|
|
|
48
47
|
isHintFeedback: isHintFeedback,
|
|
49
48
|
isTextToSpeechEnabled: isTextToSpeechEnabled,
|
|
50
49
|
isInputDisabled: isInputDisabled,
|
|
51
|
-
MessageWrapper: ButtonWrapper
|
|
52
|
-
TTSHighlightRenderer: TTSHighlightRenderer
|
|
50
|
+
MessageWrapper: ButtonWrapper
|
|
53
51
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatControls.ChatControls, {
|
|
54
52
|
model: model,
|
|
55
53
|
onPressChatIcon: openChat,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_effectorReact","_Chat","_ChatControls","_ChatBotModelContext","_styleTypes","_jsxRuntime","e","__esModule","default","Chatbot","model","isHintFeedback","isTextToSpeechEnabled","isInputDisabled","textToSpeechConfig","ButtonWrapper","iconSize","colorScheme","ColorScheme","Blue","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_effectorReact","_Chat","_ChatControls","_ChatBotModelContext","_styleTypes","_jsxRuntime","e","__esModule","default","Chatbot","model","isHintFeedback","isTextToSpeechEnabled","isInputDisabled","textToSpeechConfig","ButtonWrapper","iconSize","colorScheme","ColorScheme","Blue","isChatAllowed","useUnit","$chatAccess","isAvailable","useStoreMap","$currentChatData","t2s","setAudioConfig","shouldAnimateCloseButton","store","fn","chat","messages","length","keys","openChat","setIsOpen","closeChat","jsxs","ChatBotModelContext","Provider","value","children","jsx","Chat","MessageWrapper","ChatControls","onPressChatIcon","onPressClose","undefined","exports"],"sourceRoot":"../../../../../src","sources":["features/chatbot/components/Chatbot.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAGA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAEA,IAAAI,oBAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAAkD,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAD,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAgB3C,MAAMG,OAAO,GAAGA,CAAC;EACtBC,KAAK;EACLC,cAAc;EACdC,qBAAqB,GAAG,KAAK;EAC7BC,eAAe;EACfC,kBAAkB;EAClBC,aAAa;EACbC,QAAQ;EACRC,WAAW,GAAGC,uBAAW,CAACC;AACd,CAAC,KAAK;EAClB,MAAMC,aAAa,GAAG,IAAAC,sBAAO,EAACX,KAAK,CAACY,WAAW,CAAC;EAChD,MAAMC,WAAW,GAAG,IAAAC,0BAAW,EAACd,KAAK,CAACe,gBAAgB,EAAE,CAAC;IAAEF;EAAY,CAAC,KAAKA,WAAW,CAAC;EACzFb,KAAK,CAACgB,GAAG,CAACC,cAAc,CAACb,kBAAkB,IAAI,IAAI,CAAC;EAEpD,MAAMc,wBAAwB,GAAG,IAAAJ,0BAAW,EAAC;IAC3CK,KAAK,EAAEnB,KAAK,CAACe,gBAAgB;IAC7BK,EAAE,EAAEA,CAACC,IAAI,EAAE,CAAClB,eAAe,CAAC,KAAK;MAC/B,OAAOA,eAAe,IAAIkB,IAAI,CAACC,QAAQ,CAACC,MAAM,KAAK,CAAC;IACtD,CAAC;IACDC,IAAI,EAAE,CAACrB,eAAe;EACxB,CAAC,CAAC;EAEF,MAAMsB,QAAQ,GAAGA,CAAA,KAAMzB,KAAK,CAAC0B,SAAS,CAAC,IAAI,CAAC;EAC5C,MAAMC,SAAS,GAAGA,CAAA,KAAM3B,KAAK,CAAC0B,SAAS,CAAC,KAAK,CAAC;EAE9C,IAAI,CAACb,WAAW,IAAI,CAACH,aAAa,EAAE;IAClC,OAAO,IAAI;EACb;EAEA,oBACE,IAAAf,WAAA,CAAAiC,IAAA,EAACnC,oBAAA,CAAAoC,mBAAmB,CAACC,QAAQ;IAACC,KAAK,EAAE/B,KAAM;IAAAgC,QAAA,gBACzC,IAAArC,WAAA,CAAAsC,GAAA,EAAC1C,KAAA,CAAA2C,IAAI;MACHlC,KAAK,EAAEA,KAAM;MACbO,WAAW,EAAEA,WAAY;MACzBN,cAAc,EAAEA,cAAe;MAC/BC,qBAAqB,EAAEA,qBAAsB;MAC7CC,eAAe,EAAEA,eAAgB;MACjCgC,cAAc,EAAE9B;IAAc,CAC/B,CAAC,eAEF,IAAAV,WAAA,CAAAsC,GAAA,EAACzC,aAAA,CAAA4C,YAAY;MACXpC,KAAK,EAAEA,KAAM;MACbqC,eAAe,EAAEZ,QAAS;MAC1Ba,YAAY,EAAEX,SAAU;MACxBrB,QAAQ,EAAEA,QAAS;MACnBD,aAAa,EAAEF,eAAe,GAAGoC,SAAS,GAAGlC,aAAc;MAC3Da,wBAAwB,EAAEA;IAAyB,CACpD,CAAC;EAAA,CAC0B,CAAC;AAEnC,CAAC;AAAAsB,OAAA,CAAAzC,OAAA,GAAAA,OAAA","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.TEXT_TO_SPEECH_CONFIG = exports.MESSAGE_COLORS_MAP = exports.KATEX_REPLACEMENTS_REVERSE = exports.KATEX_REPLACEMENTS = exports.HOVER_ANIMATION_DURATION = exports.DEFAULT_VOICE = exports.CONTROLS_COLORS_MAP = exports.AUDIO_CONFIG = void 0;
|
|
7
7
|
var _reactNativeUi = require("@magmamath/react-native-ui");
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _modelTypes = require("./types/model.types.js");
|
|
@@ -77,5 +77,4 @@ const CONTROLS_COLORS_MAP = exports.CONTROLS_COLORS_MAP = {
|
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
79
|
const HOVER_ANIMATION_DURATION = exports.HOVER_ANIMATION_DURATION = 200;
|
|
80
|
-
const WORD_MARK_REGEX = exports.WORD_MARK_REGEX = /^w_(\d+)$/;
|
|
81
80
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeUi","require","_reactNative","_modelTypes","_styleTypes","AUDIO_CONFIG","exports","audioEncoding","pitch","speakingRate","DEFAULT_VOICE","languageCode","name","TEXT_TO_SPEECH_CONFIG","Platform","select","ios","audioConfig","voice","default","KATEX_REPLACEMENTS","KATEX_REPLACEMENTS_REVERSE","__KATEX_DOLLAR_SYMBOL__","MESSAGE_COLORS_MAP","ColorScheme","Blue","MessageVariant","RECEIVED","background","COLORS","NEUTRAL_3","border","icon","ButtonColor","BLUE","SENT","PRIMARY_BLUE","Yellow","YELLOW","PRIMARY_YELLOW","CONTROLS_COLORS_MAP","hover","HOVER_ANIMATION_DURATION"
|
|
1
|
+
{"version":3,"names":["_reactNativeUi","require","_reactNative","_modelTypes","_styleTypes","AUDIO_CONFIG","exports","audioEncoding","pitch","speakingRate","DEFAULT_VOICE","languageCode","name","TEXT_TO_SPEECH_CONFIG","Platform","select","ios","audioConfig","voice","default","KATEX_REPLACEMENTS","KATEX_REPLACEMENTS_REVERSE","__KATEX_DOLLAR_SYMBOL__","MESSAGE_COLORS_MAP","ColorScheme","Blue","MessageVariant","RECEIVED","background","COLORS","NEUTRAL_3","border","icon","ButtonColor","BLUE","SENT","PRIMARY_BLUE","Yellow","YELLOW","PRIMARY_YELLOW","CONTROLS_COLORS_MAP","hover","HOVER_ANIMATION_DURATION"],"sourceRoot":"../../../../src","sources":["features/chatbot/constants.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAGO,MAAMI,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG;EAC1BE,aAAa,EAAE,UAAU;EACzBC,KAAK,EAAE,CAAC;EACRC,YAAY,EAAE;AAChB,CAAC;AAEM,MAAMC,aAAa,GAAAJ,OAAA,CAAAI,aAAA,GAAG;EAC3BC,YAAY,EAAE,OAAO;EACrBC,IAAI,EAAE;AACR,CAAC;AAEM,MAAMC,qBAAqB,GAAAP,OAAA,CAAAO,qBAAA,GAAGC,qBAAQ,CAACC,MAAM,CAAC;EACnDC,GAAG,EAAE;IACHC,WAAW,EAAE;MACXV,aAAa,EAAE,KAAK;MACpBC,KAAK,EAAE,GAAG;MACVC,YAAY,EAAE;IAChB,CAAC;IACDS,KAAK,EAAE;MACLP,YAAY,EAAE,OAAO;MACrBC,IAAI,EAAE;IACR;EACF,CAAC;EACDO,OAAO,EAAE;IACPF,WAAW,EAAEZ,YAAY;IACzBa,KAAK,EAAER;EACT;AACF,CAAC,CAAC;AAEK,MAAMU,kBAAkB,GAAAd,OAAA,CAAAc,kBAAA,GAAG;EAChC,KAAK,EAAE;AACT,CAAU;AAEH,MAAMC,0BAA0B,GAAAf,OAAA,CAAAe,0BAAA,GAAG;EACxCC,uBAAuB,EAAE;AAC3B,CAAU;AAEH,MAAMC,kBAAkB,GAAAjB,OAAA,CAAAiB,kBAAA,GAAG;EAChC,CAACC,uBAAW,CAACC,IAAI,GAAG;IAClB,CAACC,0BAAc,CAACC,QAAQ,GAAG;MACzBC,UAAU,EAAEC,qBAAM,CAACC,SAAS;MAC5BC,MAAM,EAAEF,qBAAM,CAACC,SAAS;MACxBE,IAAI,EAAEC,0BAAW,CAACC;IACpB,CAAC;IACD,CAACR,0BAAc,CAACS,IAAI,GAAG;MACrBP,UAAU,EAAEC,qBAAM,CAACO,YAAY;MAC/BL,MAAM,EAAEF,qBAAM,CAACO,YAAY;MAC3BJ,IAAI,EAAEC,0BAAW,CAACC;IACpB;EACF,CAAC;EACD,CAACV,uBAAW,CAACa,MAAM,GAAG;IACpB,CAACX,0BAAc,CAACC,QAAQ,GAAG;MACzBC,UAAU,EAAEC,qBAAM,CAACC,SAAS;MAC5BC,MAAM,EAAEF,qBAAM,CAACC,SAAS;MACxBE,IAAI,EAAEC,0BAAW,CAACK;IACpB,CAAC;IACD,CAACZ,0BAAc,CAACS,IAAI,GAAG;MACrBP,UAAU,EAAEC,qBAAM,CAACU,cAAc;MACjCR,MAAM,EAAEF,qBAAM,CAACU,cAAc;MAC7BP,IAAI,EAAEC,0BAAW,CAACK;IACpB;EACF;AACF,CAAC;AAEM,MAAME,mBAAmB,GAAAlC,OAAA,CAAAkC,mBAAA,GAAG;EACjC,CAAChB,uBAAW,CAACC,IAAI,GAAG;IAClBgB,KAAK,EAAEZ,qBAAM,CAACO,YAAY;IAC1BR,UAAU,EAAEC,qBAAM,CAACO;EACrB,CAAC;EACD,CAACZ,uBAAW,CAACa,MAAM,GAAG;IACpBI,KAAK,EAAEZ,qBAAM,CAACU,cAAc;IAC5BX,UAAU,EAAEC,qBAAM,CAACU;EACrB;AACF,CAAC;AAEM,MAAMG,wBAAwB,GAAApC,OAAA,CAAAoC,wBAAA,GAAG,GAAG","ignoreList":[]}
|
|
@@ -47,6 +47,7 @@ function prepareChatRequestPayload(payload, threadItem) {
|
|
|
47
47
|
conversationId,
|
|
48
48
|
freeTextMessage,
|
|
49
49
|
problemDescription,
|
|
50
|
+
problemStandards,
|
|
50
51
|
problemAnswer,
|
|
51
52
|
language,
|
|
52
53
|
imageCdnId,
|
|
@@ -59,7 +60,10 @@ function prepareChatRequestPayload(payload, threadItem) {
|
|
|
59
60
|
type: _modelTypes.ChatRequestType.FREETEXT,
|
|
60
61
|
data: {
|
|
61
62
|
conversationId,
|
|
62
|
-
message: freeTextMessage
|
|
63
|
+
message: freeTextMessage,
|
|
64
|
+
...(problemStandards && {
|
|
65
|
+
problemStandards
|
|
66
|
+
})
|
|
63
67
|
}
|
|
64
68
|
} : {
|
|
65
69
|
type: _modelTypes.ChatRequestType.FREETEXT,
|
|
@@ -74,6 +78,9 @@ function prepareChatRequestPayload(payload, threadItem) {
|
|
|
74
78
|
...(imageAltText && {
|
|
75
79
|
altText: imageAltText
|
|
76
80
|
}),
|
|
81
|
+
...(problemStandards && {
|
|
82
|
+
problemStandards
|
|
83
|
+
}),
|
|
77
84
|
...(!!answerOptions?.length && {
|
|
78
85
|
answerOptions
|
|
79
86
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeUi","require","_constants","_index","_modelTypes","decodeHTMLEntities","input","replace","exports","replaceKatexSyntax","texts","reverse","replacements","Object","entries","KATEX_REPLACEMENTS_REVERSE","KATEX_REPLACEMENTS","map","text","reduce","newText","pattern","placeholder","RegExp","transformAlternatives","payload","isOpenChatEnabled","IS_WEB","options","default","t","promptKey","translatedText","hints","prepareChatRequestPayload","threadItem","conversationId","freeTextMessage","problemDescription","problemAnswer","language","imageCdnId","imageAltText","answerOptions","answer","type","ChatRequestType","FREETEXT","data","message","correctAnswer","altText","length","HINT","getNextHintProps","userAnswer"],"sourceRoot":"../../../../src","sources":["features/chatbot/helpers.ts"],"mappings":";;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAH,OAAA;AALA;;AAOO,MAAMI,kBAAkB,GAAIC,KAAa,IAAK;EACnD,OAAOA,KAAK,CAACC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;AACrC,CAAC;AAAAC,OAAA,CAAAH,kBAAA,GAAAA,kBAAA;AAEM,MAAMI,kBAAkB,GAAGA,CAACC,KAAe,EAAEC,OAAO,GAAG,KAAK,KAAK;EACtE,MAAMC,YAAY,GAAGD,OAAO,GACxBE,MAAM,CAACC,OAAO,CAACC,qCAA0B,CAAC,GAC1CF,MAAM,CAACC,OAAO,CAACE,6BAAkB,CAAC;EAEtC,OAAON,KAAK,CAACO,GAAG,CAAEC,IAAI,IACpBN,YAAY,CAACO,MAAM,CACjB,CAACC,OAAO,EAAE,CAACC,OAAO,EAAEC,WAAW,CAAC,KAAKF,OAAO,CAACb,OAAO,CAAC,IAAIgB,MAAM,CAACF,OAAO,EAAE,GAAG,CAAC,EAAEC,WAAW,CAAC,EAC3FJ,IACF,CACF,CAAC;AACH,CAAC;AAAAV,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AAEM,MAAMe,qBAAqB,GAAIC,OAAuC,IAAK;EAChF,IAAI,CAACA,OAAO,EAAE,OAAOA,OAAO;EAE5B,MAAMC,iBAAiB,GAAG,CAAC,CAACD,OAAO,CAACC,iBAAiB,IAAIC,qBAAM;EAE/D,OAAO;IACL,GAAGF,OAAO;IACVC,iBAAiB;IACjBE,OAAO,EAAE;MACPC,OAAO,EAAE,CACP;QACEX,IAAI,EAAEQ,iBAAiB,GAAG,IAAAI,QAAC,EAAC,uBAAuB,CAAC,GAAG,IAAAA,QAAC,EAAC,eAAe,CAAC;QACzEC,SAAS,EAAEN,OAAO,CAACG,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC,CAACE,SAAS;QAC/CC,cAAc,EAAEP,OAAO,CAACG,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC,CAACG;MAC7C,CAAC,CACF;MACDC,KAAK,EAAE,CACL;QACEf,IAAI,EAAEQ,iBAAiB,GAAG,IAAAI,QAAC,EAAC,uBAAuB,CAAC,GAAG,IAAAA,QAAC,EAAC,kBAAkB,CAAC;QAC5EC,SAAS,EAAEN,OAAO,CAACG,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC,CAACF,SAAS;QAC7CC,cAAc,EAAEP,OAAO,CAACG,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC,CAACD;MAC3C,CAAC;IAEL;EACF,CAAC;AACH,CAAC;AAAAxB,OAAA,CAAAgB,qBAAA,GAAAA,qBAAA;AAEM,SAASU,yBAAyBA,CACvCT,OAA2B,EAC3BU,UAAsB,EACF;EACpB,MAAM;IACJC,cAAc;IACdC,eAAe;IACfC,kBAAkB;IAClBC,aAAa;IACbC,QAAQ;IACRC,UAAU;IACVC,YAAY;IACZC,aAAa;IACbC;EACF,CAAC,
|
|
1
|
+
{"version":3,"names":["_reactNativeUi","require","_constants","_index","_modelTypes","decodeHTMLEntities","input","replace","exports","replaceKatexSyntax","texts","reverse","replacements","Object","entries","KATEX_REPLACEMENTS_REVERSE","KATEX_REPLACEMENTS","map","text","reduce","newText","pattern","placeholder","RegExp","transformAlternatives","payload","isOpenChatEnabled","IS_WEB","options","default","t","promptKey","translatedText","hints","prepareChatRequestPayload","threadItem","conversationId","freeTextMessage","problemDescription","problemStandards","problemAnswer","language","imageCdnId","imageAltText","answerOptions","answer","type","ChatRequestType","FREETEXT","data","message","correctAnswer","altText","length","HINT","getNextHintProps","userAnswer"],"sourceRoot":"../../../../src","sources":["features/chatbot/helpers.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,7 @@ exports.ChatbotModel = void 0;
|
|
|
7
7
|
var _effector = require("effector");
|
|
8
8
|
var _ChatbotApi = require("./ChatbotApi.js");
|
|
9
9
|
var _ChatbotTranslation = require("./ChatbotTranslation.js");
|
|
10
|
-
var
|
|
10
|
+
var _t2s = require("./t2s.js");
|
|
11
11
|
var _messagesHelper = require("./messagesHelper.js");
|
|
12
12
|
var _ChatBotThreadManager = require("./ChatBotThreadManager.js");
|
|
13
13
|
var _ChatsCacheModel = require("./ChatsCacheModel.js");
|
|
@@ -66,7 +66,6 @@ class ChatbotModel {
|
|
|
66
66
|
postMessage: this.threadManager.postMessage
|
|
67
67
|
});
|
|
68
68
|
this.$chatAccess = chatAccess;
|
|
69
|
-
if ($key) this.bindKey($key);
|
|
70
69
|
this.threadManager.setApi({
|
|
71
70
|
getHint: api.requestHint,
|
|
72
71
|
sendMessage: api.sendMessage
|
|
@@ -75,6 +74,9 @@ class ChatbotModel {
|
|
|
75
74
|
this.threadManager.setMessagesLimit(threadMessagesLimit);
|
|
76
75
|
}
|
|
77
76
|
this.$alternatives = (0, _effector.createStore)(null).on(this.api.getAlternativesFx.doneData, (_, payload) => (0, _helpers.transformAlternatives)(payload)).on(this.setAlternatives, (_, payload) => (0, _helpers.transformAlternatives)(payload)).reset(this.resetAlternatives);
|
|
77
|
+
this.t2s = new _t2s.ChatTextToSpeechModel({
|
|
78
|
+
api: this.api
|
|
79
|
+
});
|
|
78
80
|
this.translation = new _ChatbotTranslation.ChatbotTranslation({
|
|
79
81
|
$context: this.$context,
|
|
80
82
|
defaultMessages: this.defaultMessages,
|
|
@@ -86,14 +88,10 @@ class ChatbotModel {
|
|
|
86
88
|
},
|
|
87
89
|
chats: this.cache
|
|
88
90
|
});
|
|
89
|
-
this.t2s = new _ChatTTSModel.ChatTTSModel({
|
|
90
|
-
api: this.api,
|
|
91
|
-
$currentChatData: this.$currentChatData,
|
|
92
|
-
$isTranslated: this.translation.$isTranslated
|
|
93
|
-
});
|
|
94
91
|
this.errorSpotting = new _ErrorSpottingModel.ErrorSpottingModel({
|
|
95
92
|
$currentChatData: this.$currentChatData
|
|
96
93
|
});
|
|
94
|
+
if ($key) this.bindKey($key);
|
|
97
95
|
(0, _effector.sample)({
|
|
98
96
|
source: this.$isOpen.updates,
|
|
99
97
|
filter: isOpen => !isOpen,
|
|
@@ -206,6 +204,7 @@ class ChatbotModel {
|
|
|
206
204
|
answer: context.answer,
|
|
207
205
|
answerOptions: context.answerOptions,
|
|
208
206
|
problemDescription: context.problem,
|
|
207
|
+
problemStandards: context.problemStandards,
|
|
209
208
|
problemAnswer: context.problemAnswer,
|
|
210
209
|
language: context.language,
|
|
211
210
|
imageAltText: context.imageDescription,
|