@magmamath/students-features 0.9.112-rc.standard-1 → 0.9.112
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 +69 -58
- package/dist/commonjs/features/chatbot/components/Chat/Chat.js +32 -21
- 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 +16 -4
- package/dist/commonjs/features/chatbot/components/ChatMessage/MessageContent.js.map +1 -1
- package/dist/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.js +6 -2
- package/dist/commonjs/features/chatbot/components/ChatMessage/ReceivedMessage.js.map +1 -1
- package/dist/commonjs/features/chatbot/components/Chatbot.js +4 -2
- package/dist/commonjs/features/chatbot/components/Chatbot.js.map +1 -1
- package/dist/commonjs/features/chatbot/constants.js +2 -1
- package/dist/commonjs/features/chatbot/constants.js.map +1 -1
- package/dist/commonjs/features/chatbot/helpers/ttsHighlight.js +29 -0
- package/dist/commonjs/features/chatbot/helpers/ttsHighlight.js.map +1 -0
- package/dist/commonjs/features/chatbot/helpers.js +1 -8
- package/dist/commonjs/features/chatbot/helpers.js.map +1 -1
- package/dist/commonjs/features/chatbot/model/ChatBotModel.js +7 -6
- package/dist/commonjs/features/chatbot/model/ChatBotModel.js.map +1 -1
- package/dist/commonjs/features/chatbot/model/ChatTTSHighlightModel.js +56 -0
- package/dist/commonjs/features/chatbot/model/ChatTTSHighlightModel.js.map +1 -0
- package/dist/commonjs/features/chatbot/model/ChatTTSModel.js +154 -0
- package/dist/commonjs/features/chatbot/model/ChatTTSModel.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/features/openEnded/components/OpenEndedAttemptsLimit.js +34 -0
- package/dist/commonjs/features/openEnded/components/OpenEndedAttemptsLimit.js.map +1 -0
- package/dist/commonjs/features/openEnded/components/OpenEndedScoreLabel.js +77 -0
- package/dist/commonjs/features/openEnded/components/OpenEndedScoreLabel.js.map +1 -0
- package/dist/commonjs/features/openEnded/index.js +48 -0
- package/dist/commonjs/features/openEnded/index.js.map +1 -0
- package/dist/commonjs/features/openEnded/oe.helpers.js +26 -0
- package/dist/commonjs/features/openEnded/oe.helpers.js.map +1 -0
- package/dist/commonjs/features/openEnded/oe.types.js +14 -0
- package/dist/commonjs/features/openEnded/oe.types.js.map +1 -0
- package/dist/commonjs/index.js +13 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/shared/common.constants.js +9 -0
- package/dist/commonjs/shared/common.constants.js.map +1 -0
- package/dist/commonjs/types/common.types.js +4 -0
- package/dist/module/features/chatbot/TTS_HIGHLIGHTING.md +69 -58
- package/dist/module/features/chatbot/components/Chat/Chat.js +32 -21
- 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 +16 -4
- package/dist/module/features/chatbot/components/ChatMessage/MessageContent.js.map +1 -1
- package/dist/module/features/chatbot/components/ChatMessage/ReceivedMessage.js +6 -2
- package/dist/module/features/chatbot/components/ChatMessage/ReceivedMessage.js.map +1 -1
- package/dist/module/features/chatbot/components/Chatbot.js +4 -2
- package/dist/module/features/chatbot/components/Chatbot.js.map +1 -1
- package/dist/module/features/chatbot/constants.js +1 -0
- package/dist/module/features/chatbot/constants.js.map +1 -1
- package/dist/module/features/chatbot/helpers/ttsHighlight.js +23 -0
- package/dist/module/features/chatbot/helpers/ttsHighlight.js.map +1 -0
- package/dist/module/features/chatbot/helpers.js +1 -8
- 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 +7 -6
- package/dist/module/features/chatbot/model/ChatBotModel.js.map +1 -1
- package/dist/module/features/chatbot/model/ChatTTSHighlightModel.js +52 -0
- package/dist/module/features/chatbot/model/ChatTTSHighlightModel.js.map +1 -0
- package/dist/module/features/chatbot/model/ChatTTSModel.js +149 -0
- package/dist/module/features/chatbot/model/ChatTTSModel.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/features/openEnded/components/OpenEndedAttemptsLimit.js +28 -0
- package/dist/module/features/openEnded/components/OpenEndedAttemptsLimit.js.map +1 -0
- package/dist/module/features/openEnded/components/OpenEndedScoreLabel.js +71 -0
- package/dist/module/features/openEnded/components/OpenEndedScoreLabel.js.map +1 -0
- package/dist/module/features/openEnded/index.js +7 -0
- package/dist/module/features/openEnded/index.js.map +1 -0
- package/dist/module/features/openEnded/oe.helpers.js +21 -0
- package/dist/module/features/openEnded/oe.helpers.js.map +1 -0
- package/dist/module/features/openEnded/oe.types.js +10 -0
- package/dist/module/features/openEnded/oe.types.js.map +1 -0
- package/dist/module/index.js +1 -0
- package/dist/module/index.js.map +1 -1
- package/dist/module/shared/common.constants.js +5 -0
- package/dist/module/shared/common.constants.js.map +1 -0
- package/dist/module/types/common.types.js +2 -0
- package/dist/typescript/commonjs/features/chatbot/components/Chat/Chat.d.ts +3 -1
- 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 +3 -1
- 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 +4 -2
- 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 +3 -1
- package/dist/typescript/commonjs/features/chatbot/components/Chatbot.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/constants.d.ts +1 -0
- package/dist/typescript/commonjs/features/chatbot/constants.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/helpers/ttsHighlight.d.ts +8 -0
- package/dist/typescript/commonjs/features/chatbot/helpers/ttsHighlight.d.ts.map +1 -0
- 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 +3 -2
- package/dist/typescript/commonjs/features/chatbot/model/ChatBotModel.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/model/ChatTTSHighlightModel.d.ts +25 -0
- package/dist/typescript/commonjs/features/chatbot/model/ChatTTSHighlightModel.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/model/ChatTTSModel.d.ts +38 -0
- package/dist/typescript/commonjs/features/chatbot/model/ChatTTSModel.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts +2 -4
- 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 +1 -8
- 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 +25 -0
- package/dist/typescript/commonjs/features/chatbot/types/t2s.types.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/openEnded/components/OpenEndedAttemptsLimit.d.ts +7 -0
- package/dist/typescript/commonjs/features/openEnded/components/OpenEndedAttemptsLimit.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/openEnded/components/OpenEndedScoreLabel.d.ts +12 -0
- package/dist/typescript/commonjs/features/openEnded/components/OpenEndedScoreLabel.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/openEnded/index.d.ts +5 -0
- package/dist/typescript/commonjs/features/openEnded/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/openEnded/oe.helpers.d.ts +13 -0
- package/dist/typescript/commonjs/features/openEnded/oe.helpers.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/openEnded/oe.types.d.ts +7 -0
- package/dist/typescript/commonjs/features/openEnded/oe.types.d.ts.map +1 -0
- package/dist/typescript/commonjs/index.d.ts +1 -0
- package/dist/typescript/commonjs/index.d.ts.map +1 -1
- package/dist/typescript/commonjs/shared/common.constants.d.ts +2 -0
- package/dist/typescript/commonjs/shared/common.constants.d.ts.map +1 -0
- package/dist/typescript/commonjs/types/common.types.d.ts +2 -0
- package/dist/typescript/commonjs/types/common.types.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/components/Chat/Chat.d.ts +3 -1
- 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 +3 -1
- 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 +4 -2
- 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 +3 -1
- package/dist/typescript/module/features/chatbot/components/Chatbot.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/constants.d.ts +1 -0
- package/dist/typescript/module/features/chatbot/constants.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/helpers/ttsHighlight.d.ts +8 -0
- package/dist/typescript/module/features/chatbot/helpers/ttsHighlight.d.ts.map +1 -0
- 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 +3 -2
- package/dist/typescript/module/features/chatbot/model/ChatBotModel.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/model/ChatTTSHighlightModel.d.ts +25 -0
- package/dist/typescript/module/features/chatbot/model/ChatTTSHighlightModel.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/model/ChatTTSModel.d.ts +38 -0
- package/dist/typescript/module/features/chatbot/model/ChatTTSModel.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/types/api.types.d.ts +2 -4
- 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 +1 -8
- 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 +25 -0
- package/dist/typescript/module/features/chatbot/types/t2s.types.d.ts.map +1 -1
- package/dist/typescript/module/features/openEnded/components/OpenEndedAttemptsLimit.d.ts +7 -0
- package/dist/typescript/module/features/openEnded/components/OpenEndedAttemptsLimit.d.ts.map +1 -0
- package/dist/typescript/module/features/openEnded/components/OpenEndedScoreLabel.d.ts +12 -0
- package/dist/typescript/module/features/openEnded/components/OpenEndedScoreLabel.d.ts.map +1 -0
- package/dist/typescript/module/features/openEnded/index.d.ts +5 -0
- package/dist/typescript/module/features/openEnded/index.d.ts.map +1 -0
- package/dist/typescript/module/features/openEnded/oe.helpers.d.ts +13 -0
- package/dist/typescript/module/features/openEnded/oe.helpers.d.ts.map +1 -0
- package/dist/typescript/module/features/openEnded/oe.types.d.ts +7 -0
- package/dist/typescript/module/features/openEnded/oe.types.d.ts.map +1 -0
- package/dist/typescript/module/index.d.ts +1 -0
- package/dist/typescript/module/index.d.ts.map +1 -1
- package/dist/typescript/module/shared/common.constants.d.ts +2 -0
- package/dist/typescript/module/shared/common.constants.d.ts.map +1 -0
- package/dist/typescript/module/types/common.types.d.ts +2 -0
- package/dist/typescript/module/types/common.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/features/chatbot/TTS_HIGHLIGHTING.md +69 -58
- package/src/features/chatbot/components/Chat/Chat.tsx +36 -21
- package/src/features/chatbot/components/ChatMessage/ChatMessage.tsx +3 -1
- package/src/features/chatbot/components/ChatMessage/MessageContent.tsx +25 -3
- package/src/features/chatbot/components/ChatMessage/ReceivedMessage.tsx +4 -0
- package/src/features/chatbot/components/Chatbot.tsx +4 -0
- package/src/features/chatbot/constants.ts +2 -0
- package/src/features/chatbot/helpers/ttsHighlight.ts +25 -0
- package/src/features/chatbot/helpers.ts +1 -10
- package/src/features/chatbot/index.ts +1 -1
- package/src/features/chatbot/model/ChatBotModel.ts +10 -6
- package/src/features/chatbot/model/ChatTTSHighlightModel.ts +64 -0
- package/src/features/chatbot/model/ChatTTSModel.ts +168 -0
- package/src/features/chatbot/types/api.types.ts +1 -7
- package/src/features/chatbot/types/model.types.ts +1 -9
- package/src/features/chatbot/types/t2s.types.ts +33 -0
- package/src/features/openEnded/components/OpenEndedAttemptsLimit.tsx +26 -0
- package/src/features/openEnded/components/OpenEndedScoreLabel.tsx +81 -0
- package/src/features/openEnded/index.ts +4 -0
- package/src/features/openEnded/oe.helpers.ts +31 -0
- package/src/features/openEnded/oe.types.ts +6 -0
- package/src/index.ts +1 -0
- package/src/shared/common.constants.ts +3 -0
- package/src/types/common.types.ts +4 -0
- package/dist/commonjs/features/chatbot/model/t2s.js +0 -107
- package/dist/commonjs/features/chatbot/model/t2s.js.map +0 -1
- package/dist/module/features/chatbot/model/t2s.js +0 -102
- package/dist/module/features/chatbot/model/t2s.js.map +0 -1
- package/dist/typescript/commonjs/features/chatbot/model/t2s.d.ts +0 -34
- package/dist/typescript/commonjs/features/chatbot/model/t2s.d.ts.map +0 -1
- package/dist/typescript/module/features/chatbot/model/t2s.d.ts +0 -34
- package/dist/typescript/module/features/chatbot/model/t2s.d.ts.map +0 -1
- package/src/features/chatbot/model/t2s.ts +0 -123
|
@@ -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 `isWordHighlightEnabled` config flag.
|
|
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 via RAF loop │
|
|
22
22
|
│ ↓ │
|
|
23
23
|
│ 5. Current time → find matching timepoint → word index │
|
|
24
24
|
│ ↓ │
|
|
@@ -33,77 +33,88 @@ 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
|
+
isWordHighlightEnabled: true,
|
|
37
37
|
})
|
|
38
|
-
|
|
39
|
-
// In component
|
|
40
|
-
<Chatbot
|
|
41
|
-
model={chatModel.bot}
|
|
42
|
-
isHighlightEnabled={true}
|
|
43
|
-
highlightConfig={{
|
|
44
|
-
MessageRenderer: ChatbotHighlightedMessage,
|
|
45
|
-
}}
|
|
46
|
-
/>
|
|
47
38
|
```
|
|
48
39
|
|
|
49
|
-
##
|
|
40
|
+
## Architecture
|
|
50
41
|
|
|
51
|
-
###
|
|
42
|
+
### ChatTTSModel (ChatTTSModel.ts)
|
|
52
43
|
|
|
53
|
-
|
|
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
|
-
```
|
|
44
|
+
Handles TTS playback and word highlighting. Key design decisions:
|
|
81
45
|
|
|
82
|
-
|
|
83
|
-
|
|
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`).
|
|
84
52
|
|
|
85
|
-
###
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
53
|
+
### AudioProvider type
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
type AudioProvider = {
|
|
57
|
+
play: (audioPath: string, onPlaybackComplete: () => void) => Promise<void>
|
|
58
|
+
pause: () => void
|
|
59
|
+
resume: () => void
|
|
60
|
+
stop: () => void
|
|
61
|
+
onTimeUpdate?: OnTimeUpdate // optional — presence enables highlight capability
|
|
62
|
+
}
|
|
91
63
|
```
|
|
92
64
|
|
|
65
|
+
`onTimeUpdate` is optional. It's the mechanism that syncs audio playback time with word highlights via a RAF loop. If the provider doesn't have it, highlighting won't activate even if `isWordHighlightEnabled: true`.
|
|
66
|
+
|
|
67
|
+
### ChatTTSHighlightModel (ChatTTSHighlightModel.ts)
|
|
68
|
+
|
|
69
|
+
Manages highlight state using Effector stores with declarative reset. Receives `OnTimeUpdate` callback directly (not the whole `AudioProvider`).
|
|
70
|
+
|
|
71
|
+
- **`$isActive`** — gates `$highlightedWordIndex` computation. Toggled on pause/resume without resetting timepoints.
|
|
72
|
+
- **`$highlightedWordIndex`** — derived store, returns `-1` when inactive or no match. Parses mark name via `WORD_MARK_REGEX`.
|
|
73
|
+
- **`activate(timepoints, onTimeUpdate)`** — sets timepoints, enables highlighting, registers time update callback. Only triggers store updates when the highlighted word actually changes (`lastMark` comparison).
|
|
74
|
+
- **`deactivate(onTimeUpdate)`** — stops listening, resets all state via declarative `.reset()` chain.
|
|
75
|
+
- **All stores use `.reset(this.reset)`** — single `reset` event clears `$time`, `$timepoints`, and `$isActive`.
|
|
76
|
+
|
|
77
|
+
### Helpers (helpers/ttsHighlight.ts)
|
|
78
|
+
|
|
79
|
+
- **`textToSSML(text)`** — converts plain text to SSML with `<mark>` tags for word timing.
|
|
80
|
+
- **`findCurrentMark(timepoints, time)`** — iterates backwards through timepoints to find the current mark. Efficient for linear playback.
|
|
81
|
+
|
|
82
|
+
### Constants (constants.ts)
|
|
83
|
+
|
|
84
|
+
- **`WORD_MARK_REGEX`** — `/^w_(\d+)$/` — extracts word index from mark names like `w_0`, `w_1`.
|
|
85
|
+
|
|
86
|
+
### Naming conventions
|
|
87
|
+
|
|
88
|
+
| Name | Scope | Purpose |
|
|
89
|
+
|------|-------|---------|
|
|
90
|
+
| `wordHighlight` | public instance | `ChatTTSHighlightModel` instance on `ChatTTSModel` |
|
|
91
|
+
| `wordHighlightEnabled` | private field | Whether highlighting is active (set once at config) |
|
|
92
|
+
| `isWordHighlightEnabled` | public getter | Read-only access to `wordHighlightEnabled` for external consumers |
|
|
93
|
+
| `isWordHighlightEnabled` | T2SConfig field | Config flag passed to `setUpT2S()` |
|
|
94
|
+
|
|
93
95
|
## Data Flow
|
|
94
96
|
|
|
95
97
|
```
|
|
96
|
-
AudioProvider.onTimeUpdate(
|
|
97
|
-
↓
|
|
98
|
-
t2s.setTime(time)
|
|
98
|
+
AudioProvider.onTimeUpdate(callback)
|
|
99
99
|
↓
|
|
100
|
-
|
|
100
|
+
ChatTTSHighlightModel.activate(timepoints, onTimeUpdate)
|
|
101
101
|
↓
|
|
102
|
-
|
|
102
|
+
RAF loop → audio.currentTime → findCurrentMark() → only updates when mark changes
|
|
103
103
|
↓
|
|
104
|
-
|
|
104
|
+
$highlightedWordIndex = parse mark name "w_N" → N (or -1 if inactive/no match)
|
|
105
105
|
↓
|
|
106
|
-
|
|
106
|
+
Chat.tsx: model.t2s.isWordHighlightEnabled && isPlayingMessage ? highlightedWordIndex : -1
|
|
107
107
|
↓
|
|
108
|
-
|
|
108
|
+
ChatMessage → MessageContent → TTSHighlightRenderer({ text, highlightedIndex })
|
|
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,16 +27,18 @@ const Chat = ({
|
|
|
27
27
|
isTextToSpeechEnabled,
|
|
28
28
|
isInputDisabled,
|
|
29
29
|
colorScheme = _styleTypes.ColorScheme.Blue,
|
|
30
|
-
MessageWrapper
|
|
30
|
+
MessageWrapper,
|
|
31
|
+
TTSHighlightRenderer
|
|
31
32
|
}) => {
|
|
32
33
|
const dimensions = (0, _reactNative.useWindowDimensions)();
|
|
33
34
|
const ref = (0, _react.useRef)(null);
|
|
34
35
|
const isOpen = (0, _effectorReact.useUnit)(model.$isOpen);
|
|
35
36
|
const isHelpRequestPending = (0, _effectorReact.useUnit)(model.sendHelpRequestFx.pending);
|
|
36
37
|
const isTextToSpeechPending = (0, _effectorReact.useUnit)(model.api.textToSpeechTextFx.pending);
|
|
38
|
+
const audioStatus = (0, _effectorReact.useUnit)(model.t2s.$status);
|
|
37
39
|
const currentPlayingId = (0, _effectorReact.useUnit)(model.t2s.$currentPlayingId);
|
|
40
|
+
const highlightedWordIndex = (0, _effectorReact.useUnit)(model.t2s.wordHighlight.$highlightedWordIndex);
|
|
38
41
|
const isTranslated = (0, _effectorReact.useUnit)(model.translation.$isTranslated);
|
|
39
|
-
const audioStatus = (0, _effectorReact.useUnit)(model.t2s.$status);
|
|
40
42
|
const errorSpottingEnabled = (0, _effectorReact.useUnit)(model.errorSpotting.$isEnabled);
|
|
41
43
|
const messages = (0, _effectorReact.useStoreMap)(model.$currentChatData, ({
|
|
42
44
|
messages
|
|
@@ -60,25 +62,34 @@ const Chat = ({
|
|
|
60
62
|
},
|
|
61
63
|
children: [isOpen && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
62
64
|
style: [styles.gap, isInputDisabled && styles.messagesWithoutInput],
|
|
63
|
-
children: [messages.map(message
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
65
|
+
children: [messages.map((message, index) => {
|
|
66
|
+
const key = `${message.id}-${index}`;
|
|
67
|
+
const isPlayingMessage = message.id === currentPlayingId;
|
|
68
|
+
const messageHighlightIndex = model.t2s.isWordHighlightEnabled && isPlayingMessage ? highlightedWordIndex : -1;
|
|
69
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
|
|
70
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ConditionalWrapper.ConditionalWrapper, {
|
|
71
|
+
withWrapper: shouldWrapMessage,
|
|
72
|
+
Wrapper: MessageWrapper,
|
|
73
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatMessage.ChatMessage, {
|
|
74
|
+
isTranslated: isTranslated,
|
|
75
|
+
withIcon: !message.isOwnMessage && message.id === lastMessageId,
|
|
76
|
+
message: message,
|
|
77
|
+
variant: message.isOwnMessage ? _modelTypes.MessageVariant.SENT : _modelTypes.MessageVariant.RECEIVED,
|
|
78
|
+
colorScheme: colorScheme,
|
|
79
|
+
withErrorSpotting: errorSpottingEnabled && !message.isOwnMessage,
|
|
80
|
+
highlightedWordIndex: messageHighlightIndex,
|
|
81
|
+
TTSHighlightRenderer: TTSHighlightRenderer,
|
|
82
|
+
t2sState: {
|
|
83
|
+
isEnabled: isTextToSpeechEnabled && !message.isOwnMessage,
|
|
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, {
|
|
82
93
|
colorScheme: colorScheme
|
|
83
94
|
})]
|
|
84
95
|
}), 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","dimensions","useWindowDimensions","ref","useRef","isOpen","useUnit","$isOpen","isHelpRequestPending","sendHelpRequestFx","pending","isTextToSpeechPending","api","textToSpeechTextFx","
|
|
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","TTSHighlightRenderer","dimensions","useWindowDimensions","ref","useRef","isOpen","useUnit","$isOpen","isHelpRequestPending","sendHelpRequestFx","pending","isTextToSpeechPending","api","textToSpeechTextFx","audioStatus","t2s","$status","currentPlayingId","$currentPlayingId","highlightedWordIndex","wordHighlight","$highlightedWordIndex","isTranslated","translation","$isTranslated","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","index","key","isPlayingMessage","messageHighlightIndex","isWordHighlightEnabled","Fragment","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;AAkBxD,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,11 +17,17 @@ const MessageContentWeb = ({
|
|
|
17
17
|
t2sState,
|
|
18
18
|
variant,
|
|
19
19
|
colorScheme = _styleTypes.ColorScheme.Blue,
|
|
20
|
-
withErrorSpotting
|
|
20
|
+
withErrorSpotting,
|
|
21
|
+
highlightedWordIndex,
|
|
22
|
+
TTSHighlightRenderer: TTSHighlightComponent
|
|
21
23
|
}) => {
|
|
22
24
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
23
25
|
style: styles.messageText,
|
|
24
|
-
children: [
|
|
26
|
+
children: [TTSHighlightComponent ? /*#__PURE__*/(0, _jsxRuntime.jsx)(TTSHighlightComponent, {
|
|
27
|
+
text: text,
|
|
28
|
+
highlightedIndex: highlightedWordIndex ?? -1,
|
|
29
|
+
colorScheme: colorScheme
|
|
30
|
+
}) : text, /*#__PURE__*/(0, _jsxRuntime.jsx)(_MessageButtonsBlock.MessageButtonsBlock, {
|
|
25
31
|
message: message,
|
|
26
32
|
t2sState: t2sState,
|
|
27
33
|
variant: variant,
|
|
@@ -36,12 +42,18 @@ const MessageContentMobile = ({
|
|
|
36
42
|
t2sState,
|
|
37
43
|
variant,
|
|
38
44
|
colorScheme = _styleTypes.ColorScheme.Blue,
|
|
39
|
-
withErrorSpotting
|
|
45
|
+
withErrorSpotting,
|
|
46
|
+
highlightedWordIndex,
|
|
47
|
+
TTSHighlightRenderer: TTSHighlightComponent
|
|
40
48
|
}) => {
|
|
41
49
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
42
50
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
43
51
|
style: [styles.messageText, styles.mobileMessageText],
|
|
44
|
-
children: [
|
|
52
|
+
children: [TTSHighlightComponent ? /*#__PURE__*/(0, _jsxRuntime.jsx)(TTSHighlightComponent, {
|
|
53
|
+
text: text,
|
|
54
|
+
highlightedIndex: highlightedWordIndex ?? -1,
|
|
55
|
+
colorScheme: colorScheme
|
|
56
|
+
}) : text, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
45
57
|
style: {
|
|
46
58
|
width: (0, _helpers.getSpacerSize)(message, t2sState)
|
|
47
59
|
}
|
|
@@ -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","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;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_styleTypes","_MessageButtonsBlock","_helpers","_jsxRuntime","e","__esModule","default","MessageContentWeb","message","text","t2sState","variant","colorScheme","ColorScheme","Blue","withErrorSpotting","highlightedWordIndex","TTSHighlightRenderer","TTSHighlightComponent","jsxs","Text","style","styles","messageText","children","jsx","highlightedIndex","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;AAczC,MAAMG,iBAAiB,GAAGA,CAAC;EACzBC,OAAO;EACPC,IAAI;EACJC,QAAQ;EACRC,OAAO;EACPC,WAAW,GAAGC,uBAAW,CAACC,IAAI;EAC9BC,iBAAiB;EACjBC,oBAAoB;EACpBC,oBAAoB,EAAEC;AACH,CAAC,KAAK;EACzB,oBACE,IAAAf,WAAA,CAAAgB,IAAA,EAACpB,YAAA,CAAAqB,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,WAAY;IAAAC,QAAA,GAC7BN,qBAAqB,gBACpB,IAAAf,WAAA,CAAAsB,GAAA,EAACP,qBAAqB;MACpBT,IAAI,EAAEA,IAAK;MACXiB,gBAAgB,EAAEV,oBAAoB,IAAI,CAAC,CAAE;MAC7CJ,WAAW,EAAEA;IAAY,CAC1B,CAAC,GAEFH,IACD,eACD,IAAAN,WAAA,CAAAsB,GAAA,EAACxB,oBAAA,CAAA0B,mBAAmB;MAClBnB,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,MAAMa,oBAAoB,GAAGA,CAAC;EAC5BpB,OAAO;EACPC,IAAI;EACJC,QAAQ;EACRC,OAAO;EACPC,WAAW,GAAGC,uBAAW,CAACC,IAAI;EAC9BC,iBAAiB;EACjBC,oBAAoB;EACpBC,oBAAoB,EAAEC;AACH,CAAC,KAAK;EACzB,oBACE,IAAAf,WAAA,CAAAgB,IAAA,EAAAhB,WAAA,CAAA0B,QAAA;IAAAL,QAAA,gBACE,IAAArB,WAAA,CAAAgB,IAAA,EAACpB,YAAA,CAAAqB,IAAI;MAACC,KAAK,EAAE,CAACC,MAAM,CAACC,WAAW,EAAED,MAAM,CAACQ,iBAAiB,CAAE;MAAAN,QAAA,GACzDN,qBAAqB,gBACpB,IAAAf,WAAA,CAAAsB,GAAA,EAACP,qBAAqB;QACpBT,IAAI,EAAEA,IAAK;QACXiB,gBAAgB,EAAEV,oBAAoB,IAAI,CAAC,CAAE;QAC7CJ,WAAW,EAAEA;MAAY,CAC1B,CAAC,GAEFH,IACD,eACD,IAAAN,WAAA,CAAAsB,GAAA,EAAC1B,YAAA,CAAAgC,IAAI;QAACV,KAAK,EAAE;UAAEW,KAAK,EAAE,IAAAC,sBAAa,EAACzB,OAAO,EAAEE,QAAQ;QAAE;MAAE,CAAE,CAAC;IAAA,CACxD,CAAC,eACP,IAAAP,WAAA,CAAAsB,GAAA,EAACxB,oBAAA,CAAA0B,mBAAmB;MAClBnB,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,MAAMmB,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAGE,qBAAQ,CAACC,MAAM,CAAC;EAC5CC,GAAG,EAAE/B,iBAAiB;EACtBD,OAAO,EAAEsB;AACX,CAAC,CAAC;AAEF,MAAMN,MAAM,GAAGiB,uBAAU,CAACC,MAAM,CAAC;EAC/BjB,WAAW,EAAE;IACXkB,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,7 +18,9 @@ const ReceivedMessage = ({
|
|
|
18
18
|
t2sState,
|
|
19
19
|
withIcon,
|
|
20
20
|
colorScheme = _styleTypes.ColorScheme.Blue,
|
|
21
|
-
withErrorSpotting
|
|
21
|
+
withErrorSpotting,
|
|
22
|
+
highlightedWordIndex,
|
|
23
|
+
TTSHighlightRenderer
|
|
22
24
|
}) => {
|
|
23
25
|
const text = isTranslated ? message.translatedMessage : message.message;
|
|
24
26
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
@@ -37,7 +39,9 @@ const ReceivedMessage = ({
|
|
|
37
39
|
t2sState: t2sState,
|
|
38
40
|
text: text ?? '',
|
|
39
41
|
colorScheme: colorScheme,
|
|
40
|
-
withErrorSpotting: withErrorSpotting
|
|
42
|
+
withErrorSpotting: withErrorSpotting,
|
|
43
|
+
highlightedWordIndex: highlightedWordIndex,
|
|
44
|
+
TTSHighlightRenderer: TTSHighlightRenderer
|
|
41
45
|
})
|
|
42
46
|
})]
|
|
43
47
|
});
|
|
@@ -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","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,
|
|
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","highlightedWordIndex","TTSHighlightRenderer","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,iBAAiB;EACjBC,oBAAoB;EACpBC;AACY,CAAC,KAAK;EAClB,MAAMC,IAAI,GAAGT,YAAY,GAAGD,OAAO,CAACW,iBAAiB,GAAGX,OAAO,CAACA,OAAO;EAEvE,oBACE,IAAAL,WAAA,CAAAiB,IAAA,EAACtB,YAAA,CAAAuB,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,GAC3Bd,QAAQ,iBACP,IAAAR,WAAA,CAAAuB,GAAA,EAAC5B,YAAA,CAAAuB,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACI,IAAK;MAAAF,QAAA,eACvB,IAAAtB,WAAA,CAAAuB,GAAA,EAAC3B,YAAA,CAAA6B,WAAW;QAACC,KAAK,EAAE,EAAG;QAACC,MAAM,EAAE;MAAG,CAAE;IAAC,CAClC,CACP,eAED,IAAA3B,WAAA,CAAAuB,GAAA,EAAC5B,YAAA,CAAAuB,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACf,OAAQ;MAAAiB,QAAA,eAC1B,IAAAtB,WAAA,CAAAuB,GAAA,EAACzB,eAAA,CAAA8B,cAAc;QACbvB,OAAO,EAAEA,OAAQ;QACjBwB,OAAO,EAAEC,0BAAc,CAACC,QAAS;QACjCxB,QAAQ,EAAEA,QAAS;QACnBQ,IAAI,EAAEA,IAAI,IAAI,EAAG;QACjBN,WAAW,EAAEA,WAAY;QACzBG,iBAAiB,EAAEA,iBAAkB;QACrCC,oBAAoB,EAAEA,oBAAqB;QAC3CC,oBAAoB,EAAEA;MAAqB,CAC5C;IAAC,CACE,CAAC;EAAA,CACH,CAAC;AAEX,CAAC;AAAAkB,OAAA,CAAA5B,eAAA,GAAAA,eAAA;AAED,MAAMgB,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;EACDpC,OAAO,EAAE;IACP8B,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,7 +20,8 @@ const Chatbot = ({
|
|
|
20
20
|
textToSpeechConfig,
|
|
21
21
|
ButtonWrapper,
|
|
22
22
|
iconSize,
|
|
23
|
-
colorScheme = _styleTypes.ColorScheme.Blue
|
|
23
|
+
colorScheme = _styleTypes.ColorScheme.Blue,
|
|
24
|
+
TTSHighlightRenderer
|
|
24
25
|
}) => {
|
|
25
26
|
const isChatAllowed = (0, _effectorReact.useUnit)(model.$chatAccess);
|
|
26
27
|
const isAvailable = (0, _effectorReact.useStoreMap)(model.$currentChatData, ({
|
|
@@ -47,7 +48,8 @@ const Chatbot = ({
|
|
|
47
48
|
isHintFeedback: isHintFeedback,
|
|
48
49
|
isTextToSpeechEnabled: isTextToSpeechEnabled,
|
|
49
50
|
isInputDisabled: isInputDisabled,
|
|
50
|
-
MessageWrapper: ButtonWrapper
|
|
51
|
+
MessageWrapper: ButtonWrapper,
|
|
52
|
+
TTSHighlightRenderer: TTSHighlightRenderer
|
|
51
53
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatControls.ChatControls, {
|
|
52
54
|
model: model,
|
|
53
55
|
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","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;
|
|
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","TTSHighlightRenderer","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;AAkB3C,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,IAAI;EAC9BC;AACY,CAAC,KAAK;EAClB,MAAMC,aAAa,GAAG,IAAAC,sBAAO,EAACZ,KAAK,CAACa,WAAW,CAAC;EAChD,MAAMC,WAAW,GAAG,IAAAC,0BAAW,EAACf,KAAK,CAACgB,gBAAgB,EAAE,CAAC;IAAEF;EAAY,CAAC,KAAKA,WAAW,CAAC;EACzFd,KAAK,CAACiB,GAAG,CAACC,cAAc,CAACd,kBAAkB,IAAI,IAAI,CAAC;EAEpD,MAAMe,wBAAwB,GAAG,IAAAJ,0BAAW,EAAC;IAC3CK,KAAK,EAAEpB,KAAK,CAACgB,gBAAgB;IAC7BK,EAAE,EAAEA,CAACC,IAAI,EAAE,CAACnB,eAAe,CAAC,KAAK;MAC/B,OAAOA,eAAe,IAAImB,IAAI,CAACC,QAAQ,CAACC,MAAM,KAAK,CAAC;IACtD,CAAC;IACDC,IAAI,EAAE,CAACtB,eAAe;EACxB,CAAC,CAAC;EAEF,MAAMuB,QAAQ,GAAGA,CAAA,KAAM1B,KAAK,CAAC2B,SAAS,CAAC,IAAI,CAAC;EAC5C,MAAMC,SAAS,GAAGA,CAAA,KAAM5B,KAAK,CAAC2B,SAAS,CAAC,KAAK,CAAC;EAE9C,IAAI,CAACb,WAAW,IAAI,CAACH,aAAa,EAAE;IAClC,OAAO,IAAI;EACb;EAEA,oBACE,IAAAhB,WAAA,CAAAkC,IAAA,EAACpC,oBAAA,CAAAqC,mBAAmB,CAACC,QAAQ;IAACC,KAAK,EAAEhC,KAAM;IAAAiC,QAAA,gBACzC,IAAAtC,WAAA,CAAAuC,GAAA,EAAC3C,KAAA,CAAA4C,IAAI;MACHnC,KAAK,EAAEA,KAAM;MACbO,WAAW,EAAEA,WAAY;MACzBN,cAAc,EAAEA,cAAe;MAC/BC,qBAAqB,EAAEA,qBAAsB;MAC7CC,eAAe,EAAEA,eAAgB;MACjCiC,cAAc,EAAE/B,aAAc;MAC9BK,oBAAoB,EAAEA;IAAqB,CAC5C,CAAC,eAEF,IAAAf,WAAA,CAAAuC,GAAA,EAAC1C,aAAA,CAAA6C,YAAY;MACXrC,KAAK,EAAEA,KAAM;MACbsC,eAAe,EAAEZ,QAAS;MAC1Ba,YAAY,EAAEX,SAAU;MACxBtB,QAAQ,EAAEA,QAAS;MACnBD,aAAa,EAAEF,eAAe,GAAGqC,SAAS,GAAGnC,aAAc;MAC3Dc,wBAAwB,EAAEA;IAAyB,CACpD,CAAC;EAAA,CAC0B,CAAC;AAEnC,CAAC;AAAAsB,OAAA,CAAA1C,OAAA,GAAAA,OAAA","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
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;
|
|
6
|
+
exports.WORD_MARK_REGEX = 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,4 +77,5 @@ 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+)$/;
|
|
80
81
|
//# 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"],"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":[]}
|
|
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","WORD_MARK_REGEX"],"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;AAEpC,MAAMC,eAAe,GAAArC,OAAA,CAAAqC,eAAA,GAAG,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.textToSSML = exports.findCurrentMark = void 0;
|
|
7
|
+
const escapeXml = str => str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Converts plain text to SSML with word marks for TTS highlighting.
|
|
11
|
+
* "Hello world" -> '<speak><mark name="w_0"/>Hello <mark name="w_1"/>world</speak>'
|
|
12
|
+
*/
|
|
13
|
+
const textToSSML = text => {
|
|
14
|
+
const words = text.split(/\s+/).filter(Boolean);
|
|
15
|
+
if (words.length === 0) return '<speak></speak>';
|
|
16
|
+
const ssmlParts = words.map((word, i) => `<mark name="w_${i}"/>${escapeXml(word)}`);
|
|
17
|
+
return `<speak>${ssmlParts.join(' ')}</speak>`;
|
|
18
|
+
};
|
|
19
|
+
exports.textToSSML = textToSSML;
|
|
20
|
+
const findCurrentMark = (timepoints, time) => {
|
|
21
|
+
for (let i = timepoints.length - 1; i >= 0; i--) {
|
|
22
|
+
if (timepoints[i].timeSeconds <= time) {
|
|
23
|
+
return timepoints[i].markName;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
};
|
|
28
|
+
exports.findCurrentMark = findCurrentMark;
|
|
29
|
+
//# sourceMappingURL=ttsHighlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["escapeXml","str","replace","textToSSML","text","words","split","filter","Boolean","length","ssmlParts","map","word","i","join","exports","findCurrentMark","timepoints","time","timeSeconds","markName","undefined"],"sourceRoot":"../../../../../src","sources":["features/chatbot/helpers/ttsHighlight.ts"],"mappings":";;;;;;AAEA,MAAMA,SAAS,GAAIC,GAAW,IAC5BA,GAAG,CAACC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;;AAExE;AACA;AACA;AACA;AACO,MAAMC,UAAU,GAAIC,IAAY,IAAa;EAClD,MAAMC,KAAK,GAAGD,IAAI,CAACE,KAAK,CAAC,KAAK,CAAC,CAACC,MAAM,CAACC,OAAO,CAAC;EAC/C,IAAIH,KAAK,CAACI,MAAM,KAAK,CAAC,EAAE,OAAO,iBAAiB;EAEhD,MAAMC,SAAS,GAAGL,KAAK,CAACM,GAAG,CAAC,CAACC,IAAI,EAAEC,CAAC,KAAK,iBAAiBA,CAAC,MAAMb,SAAS,CAACY,IAAI,CAAC,EAAE,CAAC;EACnF,OAAO,UAAUF,SAAS,CAACI,IAAI,CAAC,GAAG,CAAC,UAAU;AAChD,CAAC;AAAAC,OAAA,CAAAZ,UAAA,GAAAA,UAAA;AAEM,MAAMa,eAAe,GAAGA,CAACC,UAAuB,EAAEC,IAAY,KAAyB;EAC5F,KAAK,IAAIL,CAAC,GAAGI,UAAU,CAACR,MAAM,GAAG,CAAC,EAAEI,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC/C,IAAII,UAAU,CAACJ,CAAC,CAAC,CAACM,WAAW,IAAID,IAAI,EAAE;MACrC,OAAOD,UAAU,CAACJ,CAAC,CAAC,CAACO,QAAQ;IAC/B;EACF;EACA,OAAOC,SAAS;AAClB,CAAC;AAAAN,OAAA,CAAAC,eAAA,GAAAA,eAAA","ignoreList":[]}
|
|
@@ -47,7 +47,6 @@ function prepareChatRequestPayload(payload, threadItem) {
|
|
|
47
47
|
conversationId,
|
|
48
48
|
freeTextMessage,
|
|
49
49
|
problemDescription,
|
|
50
|
-
problemStandards,
|
|
51
50
|
problemAnswer,
|
|
52
51
|
language,
|
|
53
52
|
imageCdnId,
|
|
@@ -60,10 +59,7 @@ function prepareChatRequestPayload(payload, threadItem) {
|
|
|
60
59
|
type: _modelTypes.ChatRequestType.FREETEXT,
|
|
61
60
|
data: {
|
|
62
61
|
conversationId,
|
|
63
|
-
message: freeTextMessage
|
|
64
|
-
...(problemStandards && {
|
|
65
|
-
problemStandards
|
|
66
|
-
})
|
|
62
|
+
message: freeTextMessage
|
|
67
63
|
}
|
|
68
64
|
} : {
|
|
69
65
|
type: _modelTypes.ChatRequestType.FREETEXT,
|
|
@@ -78,9 +74,6 @@ function prepareChatRequestPayload(payload, threadItem) {
|
|
|
78
74
|
...(imageAltText && {
|
|
79
75
|
altText: imageAltText
|
|
80
76
|
}),
|
|
81
|
-
...(problemStandards && {
|
|
82
|
-
problemStandards
|
|
83
|
-
}),
|
|
84
77
|
...(!!answerOptions?.length && {
|
|
85
78
|
answerOptions
|
|
86
79
|
})
|
|
@@ -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","
|
|
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":"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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 _ChatTTSModel = require("./ChatTTSModel.js");
|
|
11
11
|
var _messagesHelper = require("./messagesHelper.js");
|
|
12
12
|
var _ChatBotThreadManager = require("./ChatBotThreadManager.js");
|
|
13
13
|
var _ChatsCacheModel = require("./ChatsCacheModel.js");
|
|
@@ -66,6 +66,7 @@ class ChatbotModel {
|
|
|
66
66
|
postMessage: this.threadManager.postMessage
|
|
67
67
|
});
|
|
68
68
|
this.$chatAccess = chatAccess;
|
|
69
|
+
if ($key) this.bindKey($key);
|
|
69
70
|
this.threadManager.setApi({
|
|
70
71
|
getHint: api.requestHint,
|
|
71
72
|
sendMessage: api.sendMessage
|
|
@@ -74,9 +75,6 @@ class ChatbotModel {
|
|
|
74
75
|
this.threadManager.setMessagesLimit(threadMessagesLimit);
|
|
75
76
|
}
|
|
76
77
|
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
|
-
});
|
|
80
78
|
this.translation = new _ChatbotTranslation.ChatbotTranslation({
|
|
81
79
|
$context: this.$context,
|
|
82
80
|
defaultMessages: this.defaultMessages,
|
|
@@ -88,10 +86,14 @@ class ChatbotModel {
|
|
|
88
86
|
},
|
|
89
87
|
chats: this.cache
|
|
90
88
|
});
|
|
89
|
+
this.t2s = new _ChatTTSModel.ChatTTSModel({
|
|
90
|
+
api: this.api,
|
|
91
|
+
$currentChatData: this.$currentChatData,
|
|
92
|
+
$isTranslated: this.translation.$isTranslated
|
|
93
|
+
});
|
|
91
94
|
this.errorSpotting = new _ErrorSpottingModel.ErrorSpottingModel({
|
|
92
95
|
$currentChatData: this.$currentChatData
|
|
93
96
|
});
|
|
94
|
-
if ($key) this.bindKey($key);
|
|
95
97
|
(0, _effector.sample)({
|
|
96
98
|
source: this.$isOpen.updates,
|
|
97
99
|
filter: isOpen => !isOpen,
|
|
@@ -204,7 +206,6 @@ class ChatbotModel {
|
|
|
204
206
|
answer: context.answer,
|
|
205
207
|
answerOptions: context.answerOptions,
|
|
206
208
|
problemDescription: context.problem,
|
|
207
|
-
problemStandards: context.problemStandards,
|
|
208
209
|
problemAnswer: context.problemAnswer,
|
|
209
210
|
language: context.language,
|
|
210
211
|
imageAltText: context.imageDescription,
|