vdb-ai-chat 1.0.78 → 1.0.80
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/chat-widget.js +189 -164
- package/dist/chat-widget.js.LICENSE.txt +2 -0
- package/lib/commonjs/api.js +84 -4
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/components/ChatInput.js +227 -65
- package/lib/commonjs/components/ChatInput.js.map +1 -1
- package/lib/commonjs/components/ChatWidget.js +6 -2
- package/lib/commonjs/components/ChatWidget.js.map +1 -1
- package/lib/commonjs/components/MessageBubble.js +22 -2
- package/lib/commonjs/components/MessageBubble.js.map +1 -1
- package/lib/commonjs/components/icons/VDBCustomIcon.js +54 -0
- package/lib/commonjs/components/icons/VDBCustomIcon.js.map +1 -0
- package/lib/commonjs/components/icons/VDBIcon.js +141 -0
- package/lib/commonjs/components/icons/VDBIcon.js.map +1 -0
- package/lib/commonjs/components/icons/VDBIcons.js +16 -0
- package/lib/commonjs/components/icons/VDBIcons.js.map +1 -0
- package/lib/commonjs/components/icons/index.js +34 -0
- package/lib/commonjs/components/icons/index.js.map +1 -0
- package/lib/commonjs/index.js +29 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.native.js +30 -1
- package/lib/commonjs/index.native.js.map +1 -1
- package/lib/commonjs/routes.js +1 -0
- package/lib/commonjs/routes.js.map +1 -1
- package/lib/module/api.js +81 -5
- package/lib/module/api.js.map +1 -1
- package/lib/module/components/ChatInput.js +228 -66
- package/lib/module/components/ChatInput.js.map +1 -1
- package/lib/module/components/ChatWidget.js +6 -2
- package/lib/module/components/ChatWidget.js.map +1 -1
- package/lib/module/components/MessageBubble.js +22 -2
- package/lib/module/components/MessageBubble.js.map +1 -1
- package/lib/module/components/icons/VDBCustomIcon.js +47 -0
- package/lib/module/components/icons/VDBCustomIcon.js.map +1 -0
- package/lib/module/components/icons/VDBIcon.js +134 -0
- package/lib/module/components/icons/VDBIcon.js.map +1 -0
- package/lib/module/components/icons/VDBIcons.js +10 -0
- package/lib/module/components/icons/VDBIcons.js.map +1 -0
- package/lib/module/components/icons/index.js +3 -0
- package/lib/module/components/icons/index.js.map +1 -0
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.native.js +1 -0
- package/lib/module/index.native.js.map +1 -1
- package/lib/module/routes.js +1 -0
- package/lib/module/routes.js.map +1 -1
- package/lib/typescript/api.d.ts +22 -0
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/components/ChatInput.d.ts +4 -0
- package/lib/typescript/components/ChatInput.d.ts.map +1 -1
- package/lib/typescript/components/ChatWidget.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble.d.ts +2 -0
- package/lib/typescript/components/MessageBubble.d.ts.map +1 -1
- package/lib/typescript/components/icons/VDBCustomIcon.d.ts +11 -0
- package/lib/typescript/components/icons/VDBCustomIcon.d.ts.map +1 -0
- package/lib/typescript/components/icons/VDBIcon.d.ts +34 -0
- package/lib/typescript/components/icons/VDBIcon.d.ts.map +1 -0
- package/lib/typescript/components/icons/VDBIcons.d.ts +9 -0
- package/lib/typescript/components/icons/VDBIcons.d.ts.map +1 -0
- package/lib/typescript/components/icons/index.d.ts +5 -0
- package/lib/typescript/components/icons/index.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/index.native.d.ts +2 -0
- package/lib/typescript/index.native.d.ts.map +1 -1
- package/lib/typescript/routes.d.ts +1 -0
- package/lib/typescript/routes.d.ts.map +1 -1
- package/package.json +18 -2
- package/src/api.ts +147 -3
- package/src/components/ChatInput.tsx +360 -83
- package/src/components/ChatWidget.tsx +9 -0
- package/src/components/MessageBubble.tsx +27 -1
- package/src/components/icons/VDBCustomIcon.tsx +74 -0
- package/src/components/icons/VDBIcon.tsx +186 -0
- package/src/components/icons/VDBIcons.ts +9 -0
- package/src/components/icons/index.ts +4 -0
- package/src/index.native.tsx +12 -0
- package/src/index.ts +12 -0
- package/src/routes.ts +1 -0
|
@@ -1,55 +1,201 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { StyleSheet, Platform
|
|
1
|
+
import React, { useRef, useState, useCallback, useEffect } from "react";
|
|
2
|
+
import { StyleSheet, Platform } from "react-native";
|
|
3
3
|
import { useTheme } from "styled-components/native";
|
|
4
4
|
import styled from "styled-components/native";
|
|
5
5
|
import { useTranslation } from "../i18n";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} catch {
|
|
14
|
-
ImageComponent = Image;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
const SendIcon = ({
|
|
18
|
-
disabled,
|
|
19
|
-
isEmpty
|
|
20
|
-
}) => {
|
|
21
|
-
const isInactive = disabled || isEmpty;
|
|
22
|
-
const theme = useTheme();
|
|
23
|
-
return /*#__PURE__*/React.createElement(ImageComponent, {
|
|
24
|
-
source: {
|
|
25
|
-
uri: "https://cdn.vdbapp.com/ai/chat-widget/assets/img/send.svg"
|
|
26
|
-
},
|
|
27
|
-
resizeMode: "contain",
|
|
28
|
-
style: {
|
|
29
|
-
...styles.buttonIcon,
|
|
30
|
-
tintColor: isInactive ? theme["core-04"] || "#ACACB3" : theme["core-05"] || "#020001",
|
|
31
|
-
cursor: isInactive ? "auto" : "pointer"
|
|
32
|
-
}
|
|
33
|
-
});
|
|
6
|
+
import { VDBIcons } from "./icons/VDBIcons";
|
|
7
|
+
import { IconsVariant, VDBIcon } from "./icons";
|
|
8
|
+
import { transcribeAudio, TranscribeError } from "../api";
|
|
9
|
+
const stripMimeParams = m => {
|
|
10
|
+
if (!m) return m;
|
|
11
|
+
const i = m.indexOf(";");
|
|
12
|
+
return (i >= 0 ? m.slice(0, i) : m).trim();
|
|
34
13
|
};
|
|
14
|
+
let ExpoAudio = null;
|
|
15
|
+
try {
|
|
16
|
+
ExpoAudio = require("expo-av").Audio;
|
|
17
|
+
} catch {}
|
|
35
18
|
export const ChatInput = ({
|
|
36
19
|
value,
|
|
37
20
|
onChangeText,
|
|
38
21
|
onSend,
|
|
39
22
|
disabled,
|
|
40
23
|
placeholder,
|
|
41
|
-
inputRef
|
|
24
|
+
inputRef,
|
|
25
|
+
apiUrl,
|
|
26
|
+
conversationId,
|
|
27
|
+
priceMode,
|
|
28
|
+
onTranscribeError
|
|
42
29
|
}) => {
|
|
43
30
|
const theme = useTheme();
|
|
44
31
|
const {
|
|
45
32
|
t
|
|
46
33
|
} = useTranslation();
|
|
47
|
-
|
|
34
|
+
const [isRecording, setIsRecording] = useState(false);
|
|
35
|
+
const [isTranscribing, setIsTranscribing] = useState(false);
|
|
36
|
+
const [transcribeErrorMsg, setTranscribeErrorMsg] = useState(null);
|
|
37
|
+
const mediaRecorderRef = useRef(null);
|
|
38
|
+
const audioChunksRef = useRef([]);
|
|
39
|
+
const expoRecordingRef = useRef(null);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (!transcribeErrorMsg) return;
|
|
42
|
+
const timer = setTimeout(() => setTranscribeErrorMsg(null), 5000);
|
|
43
|
+
return () => clearTimeout(timer);
|
|
44
|
+
}, [transcribeErrorMsg]);
|
|
45
|
+
const handleTranscribeFailure = useCallback(err => {
|
|
46
|
+
const asError = err instanceof Error ? err : new Error(String(err ?? "Unknown error"));
|
|
47
|
+
let userMessage = t("chat.transcribeError.text", "Couldn't transcribe your recording. Please try again.");
|
|
48
|
+
if (err instanceof TranscribeError) {
|
|
49
|
+
if (err.errorCode && err.message) {
|
|
50
|
+
userMessage = err.message ?? t("chat.transcribeError.failed", "Transcription failed. Please try recording again.");
|
|
51
|
+
} else if (err.status === 401 || err.status === 403) {
|
|
52
|
+
userMessage = t("chat.transcribeError.auth", "You're not signed in. Please sign in and try again.");
|
|
53
|
+
} else if (err.status >= 500) {
|
|
54
|
+
userMessage = t("chat.transcribeError.server", "Server error while transcribing. Please try again shortly.");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
console.error("Failed to transcribe audio", err);
|
|
58
|
+
setTranscribeErrorMsg(userMessage);
|
|
59
|
+
onTranscribeError?.(asError, userMessage);
|
|
60
|
+
}, [t, onTranscribeError]);
|
|
61
|
+
const transcribeAndAppend = useCallback(async (file, fileName, mimeType) => {
|
|
62
|
+
if (!apiUrl) return;
|
|
63
|
+
setIsTranscribing(true);
|
|
64
|
+
setTranscribeErrorMsg(null);
|
|
65
|
+
try {
|
|
66
|
+
const sanitizedMime = stripMimeParams(mimeType);
|
|
67
|
+
const data = await transcribeAudio(apiUrl, file, {
|
|
68
|
+
conversationId,
|
|
69
|
+
priceMode,
|
|
70
|
+
fileName,
|
|
71
|
+
mimeType: sanitizedMime
|
|
72
|
+
});
|
|
73
|
+
const transcript = data?.transcript ?? "";
|
|
74
|
+
if (transcript) {
|
|
75
|
+
onChangeText(value ? `${value} ${transcript}` : transcript);
|
|
76
|
+
}
|
|
77
|
+
} catch (err) {
|
|
78
|
+
handleTranscribeFailure(err);
|
|
79
|
+
} finally {
|
|
80
|
+
setIsTranscribing(false);
|
|
81
|
+
}
|
|
82
|
+
}, [apiUrl, conversationId, priceMode, value, onChangeText, handleTranscribeFailure]);
|
|
83
|
+
const startWebRecording = useCallback(async () => {
|
|
84
|
+
try {
|
|
85
|
+
const stream = await navigator.mediaDevices.getUserMedia({
|
|
86
|
+
audio: true
|
|
87
|
+
});
|
|
88
|
+
const preferredTypes = ["audio/webm;codecs=opus", "audio/webm", "audio/ogg;codecs=opus", "audio/mp4"];
|
|
89
|
+
const MR = window.MediaRecorder;
|
|
90
|
+
const supportedType = preferredTypes.find(tpe => MR?.isTypeSupported?.(tpe)) || "";
|
|
91
|
+
const mediaRecorder = supportedType ? new MR(stream, {
|
|
92
|
+
mimeType: supportedType
|
|
93
|
+
}) : new MR(stream);
|
|
94
|
+
mediaRecorderRef.current = mediaRecorder;
|
|
95
|
+
audioChunksRef.current = [];
|
|
96
|
+
mediaRecorder.ondataavailable = e => {
|
|
97
|
+
if (e.data && e.data.size > 0) audioChunksRef.current.push(e.data);
|
|
98
|
+
};
|
|
99
|
+
mediaRecorder.onstop = async () => {
|
|
100
|
+
stream.getTracks().forEach(track => track.stop());
|
|
101
|
+
const chunkType = mediaRecorder.mimeType || audioChunksRef.current[0]?.type || "audio/webm";
|
|
102
|
+
const audioBlob = new Blob(audioChunksRef.current, {
|
|
103
|
+
type: chunkType
|
|
104
|
+
});
|
|
105
|
+
const ext = chunkType.includes("mp4") ? "mp4" : chunkType.includes("ogg") ? "ogg" : "webm";
|
|
106
|
+
await transcribeAndAppend(audioBlob, `recording-${Date.now()}.${ext}`, chunkType);
|
|
107
|
+
};
|
|
108
|
+
mediaRecorder.start();
|
|
109
|
+
setIsRecording(true);
|
|
110
|
+
setTranscribeErrorMsg(null);
|
|
111
|
+
} catch (err) {
|
|
112
|
+
console.error("Failed to start web recording", err);
|
|
113
|
+
setTranscribeErrorMsg(t("chat.recordError.text", "Microphone access failed. Please check permissions."));
|
|
114
|
+
}
|
|
115
|
+
}, [transcribeAndAppend, t]);
|
|
116
|
+
const stopWebRecording = useCallback(() => {
|
|
117
|
+
if (mediaRecorderRef.current) {
|
|
118
|
+
mediaRecorderRef.current.stop();
|
|
119
|
+
mediaRecorderRef.current = null;
|
|
120
|
+
setIsRecording(false);
|
|
121
|
+
}
|
|
122
|
+
}, []);
|
|
123
|
+
const startNativeRecording = useCallback(async () => {
|
|
124
|
+
if (!ExpoAudio) return;
|
|
125
|
+
try {
|
|
126
|
+
const {
|
|
127
|
+
granted
|
|
128
|
+
} = await ExpoAudio.requestPermissionsAsync();
|
|
129
|
+
if (!granted) {
|
|
130
|
+
setTranscribeErrorMsg(t("chat.recordError.permission", "Microphone permission was denied."));
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
await ExpoAudio.setAudioModeAsync({
|
|
134
|
+
allowsRecordingIOS: true,
|
|
135
|
+
playsInSilentModeIOS: true
|
|
136
|
+
});
|
|
137
|
+
const {
|
|
138
|
+
recording
|
|
139
|
+
} = await ExpoAudio.Recording.createAsync(ExpoAudio.RecordingOptionsPresets.HIGH_QUALITY);
|
|
140
|
+
expoRecordingRef.current = recording;
|
|
141
|
+
setIsRecording(true);
|
|
142
|
+
setTranscribeErrorMsg(null);
|
|
143
|
+
} catch (err) {
|
|
144
|
+
console.error("Failed to start native recording", err);
|
|
145
|
+
setTranscribeErrorMsg(t("chat.recordError.text", "Microphone access failed. Please check permissions."));
|
|
146
|
+
}
|
|
147
|
+
}, [t]);
|
|
148
|
+
const stopNativeRecording = useCallback(async () => {
|
|
149
|
+
const recording = expoRecordingRef.current;
|
|
150
|
+
if (!recording) return;
|
|
151
|
+
try {
|
|
152
|
+
await recording.stopAndUnloadAsync();
|
|
153
|
+
await ExpoAudio.setAudioModeAsync({
|
|
154
|
+
allowsRecordingIOS: false
|
|
155
|
+
});
|
|
156
|
+
const uri = recording.getURI();
|
|
157
|
+
expoRecordingRef.current = null;
|
|
158
|
+
setIsRecording(false);
|
|
159
|
+
if (uri) {
|
|
160
|
+
const fileName = `recording-${Date.now()}.m4a`;
|
|
161
|
+
await transcribeAndAppend({
|
|
162
|
+
uri,
|
|
163
|
+
name: fileName,
|
|
164
|
+
type: "audio/m4a"
|
|
165
|
+
}, fileName, "audio/m4a");
|
|
166
|
+
}
|
|
167
|
+
} catch (err) {
|
|
168
|
+
console.error("Failed to stop native recording", err);
|
|
169
|
+
expoRecordingRef.current = null;
|
|
170
|
+
setIsRecording(false);
|
|
171
|
+
}
|
|
172
|
+
}, [transcribeAndAppend]);
|
|
173
|
+
const startRecording = useCallback(() => {
|
|
174
|
+
if (Platform.OS === "web") {
|
|
175
|
+
return startWebRecording();
|
|
176
|
+
}
|
|
177
|
+
return startNativeRecording();
|
|
178
|
+
}, [startWebRecording, startNativeRecording]);
|
|
179
|
+
const stopRecording = useCallback(() => {
|
|
180
|
+
if (Platform.OS === "web") {
|
|
181
|
+
stopWebRecording();
|
|
182
|
+
} else {
|
|
183
|
+
stopNativeRecording();
|
|
184
|
+
}
|
|
185
|
+
}, [stopWebRecording, stopNativeRecording]);
|
|
186
|
+
const handleMicPress = useCallback(() => {
|
|
187
|
+
if (isRecording) {
|
|
188
|
+
stopRecording();
|
|
189
|
+
} else {
|
|
190
|
+
startRecording();
|
|
191
|
+
}
|
|
192
|
+
}, [isRecording, startRecording, stopRecording]);
|
|
193
|
+
const isMicAvailable = !!apiUrl && (Platform.OS === "web" || !!ExpoAudio);
|
|
194
|
+
const isSendDisabled = disabled || isRecording || isTranscribing;
|
|
195
|
+
return /*#__PURE__*/React.createElement(InputWrapper, null, /*#__PURE__*/React.createElement(InputContainer, {
|
|
48
196
|
theme: theme
|
|
49
197
|
}, /*#__PURE__*/React.createElement(Input, {
|
|
50
|
-
ref: inputRef
|
|
51
|
-
// @ts-ignore - supported on web via react-native-web
|
|
52
|
-
,
|
|
198
|
+
ref: inputRef,
|
|
53
199
|
id: "chat-input",
|
|
54
200
|
style: [styles.inputWeb],
|
|
55
201
|
autoComplete: "off",
|
|
@@ -58,16 +204,35 @@ export const ChatInput = ({
|
|
|
58
204
|
value: value,
|
|
59
205
|
onChangeText: onChangeText,
|
|
60
206
|
onSubmitEditing: onSend,
|
|
61
|
-
editable: !
|
|
207
|
+
editable: !isSendDisabled,
|
|
62
208
|
autoFocus: !theme.isTablet
|
|
63
|
-
}), /*#__PURE__*/React.createElement(
|
|
209
|
+
}), isMicAvailable && /*#__PURE__*/React.createElement(MicButton, {
|
|
210
|
+
onPress: handleMicPress,
|
|
211
|
+
disabled: isTranscribing
|
|
212
|
+
}, /*#__PURE__*/React.createElement(VDBIcon, {
|
|
213
|
+
color: isTranscribing ? theme["core-04"] || "#ACACB3" : isRecording ? theme["error-01"] || "#FF0000" : theme["core-05"] || "#020001",
|
|
214
|
+
size: 24,
|
|
215
|
+
variant: IconsVariant.VDBCustom,
|
|
216
|
+
name: isRecording ? VDBIcons.STOP_CIRCLE : VDBIcons.MIC
|
|
217
|
+
})), /*#__PURE__*/React.createElement(SendButton, {
|
|
64
218
|
onPress: onSend,
|
|
65
|
-
disabled:
|
|
66
|
-
}, /*#__PURE__*/React.createElement(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
219
|
+
disabled: isSendDisabled
|
|
220
|
+
}, /*#__PURE__*/React.createElement(VDBIcon, {
|
|
221
|
+
color: isSendDisabled || value.trim() === "" ? theme["core-04"] : theme["core-05"],
|
|
222
|
+
size: 24,
|
|
223
|
+
variant: IconsVariant.VDBCustom,
|
|
224
|
+
name: VDBIcons.SEND
|
|
225
|
+
}))), transcribeErrorMsg ? /*#__PURE__*/React.createElement(ErrorBanner, {
|
|
226
|
+
accessibilityRole: "alert",
|
|
227
|
+
onPress: () => setTranscribeErrorMsg(null)
|
|
228
|
+
}, /*#__PURE__*/React.createElement(ErrorText, {
|
|
229
|
+
theme: theme,
|
|
230
|
+
numberOfLines: 2
|
|
231
|
+
}, transcribeErrorMsg)) : null);
|
|
70
232
|
};
|
|
233
|
+
const InputWrapper = styled.View`
|
|
234
|
+
align-self: stretch;
|
|
235
|
+
`;
|
|
71
236
|
const InputContainer = styled.View`
|
|
72
237
|
flex-direction: row;
|
|
73
238
|
padding-horizontal: 12px;
|
|
@@ -85,6 +250,17 @@ const InputContainer = styled.View`
|
|
|
85
250
|
border-width: 1;
|
|
86
251
|
height: 56px;
|
|
87
252
|
`;
|
|
253
|
+
const ErrorBanner = styled.TouchableOpacity`
|
|
254
|
+
margin-top: 6px;
|
|
255
|
+
align-self: stretch;
|
|
256
|
+
`;
|
|
257
|
+
const ErrorText = styled.Text`
|
|
258
|
+
font-size: 12px;
|
|
259
|
+
line-height: 16px;
|
|
260
|
+
color: ${({
|
|
261
|
+
theme
|
|
262
|
+
}) => theme["error-01"] || "#FF0000"};
|
|
263
|
+
`;
|
|
88
264
|
const Input = styled.TextInput`
|
|
89
265
|
flex: 1;
|
|
90
266
|
color: ${({
|
|
@@ -114,37 +290,23 @@ const SendButton = styled.TouchableOpacity`
|
|
|
114
290
|
theme
|
|
115
291
|
}) => theme["core-01"] || "#FFFFFF"};
|
|
116
292
|
`;
|
|
293
|
+
const MicButton = styled.TouchableOpacity`
|
|
294
|
+
margin-right: 16px;
|
|
295
|
+
padding: 0;
|
|
296
|
+
justify-content: center;
|
|
297
|
+
align-items: center;
|
|
298
|
+
height: 24;
|
|
299
|
+
aspect-ratio: 1;
|
|
300
|
+
border-radius: 0px;
|
|
301
|
+
background-color: transparent;
|
|
302
|
+
`;
|
|
117
303
|
const styles = StyleSheet.create({
|
|
118
|
-
webShadow: {
|
|
119
|
-
...(Platform.OS === "web" ? {
|
|
120
|
-
boxShadow: "2px 8px 24px -6px rgba(55, 54, 64, 0.26)"
|
|
121
|
-
} : {})
|
|
122
|
-
},
|
|
123
|
-
nativeShadow: {
|
|
124
|
-
shadowColor: "#373640",
|
|
125
|
-
shadowOffset: {
|
|
126
|
-
width: 2,
|
|
127
|
-
height: 8
|
|
128
|
-
},
|
|
129
|
-
shadowOpacity: 0.26,
|
|
130
|
-
shadowRadius: 12,
|
|
131
|
-
elevation: 3
|
|
132
|
-
},
|
|
133
304
|
inputWeb: {
|
|
134
305
|
...(Platform.OS === "web" ? {
|
|
135
306
|
outlineStyle: "none",
|
|
136
307
|
outlineWidth: 0,
|
|
137
308
|
boxShadow: "none"
|
|
138
309
|
} : {})
|
|
139
|
-
},
|
|
140
|
-
buttonIcon: {
|
|
141
|
-
height: 24,
|
|
142
|
-
width: 24
|
|
143
|
-
},
|
|
144
|
-
sendIconText: {
|
|
145
|
-
fontSize: 18,
|
|
146
|
-
fontWeight: "700",
|
|
147
|
-
textAlign: "center"
|
|
148
310
|
}
|
|
149
311
|
});
|
|
150
312
|
//# sourceMappingURL=ChatInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","Platform","Image","useTheme","styled","useTranslation","ImageComponent","OS","ExpoImage","require","SendIcon","disabled","isEmpty","isInactive","theme","createElement","source","uri","resizeMode","style","styles","buttonIcon","tintColor","cursor","ChatInput","value","onChangeText","onSend","placeholder","inputRef","t","InputContainer","Input","ref","id","inputWeb","autoComplete","placeholderTextColor","onSubmitEditing","editable","autoFocus","isTablet","SendButton","onPress","trim","View","TextInput","TouchableOpacity","create","webShadow","boxShadow","nativeShadow","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","outlineStyle","outlineWidth","sendIconText","fontSize","fontWeight","textAlign"],"sourceRoot":"../../../src","sources":["components/ChatInput.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useRef","useState","useCallback","useEffect","StyleSheet","Platform","useTheme","styled","useTranslation","VDBIcons","IconsVariant","VDBIcon","transcribeAudio","TranscribeError","stripMimeParams","m","i","indexOf","slice","trim","ExpoAudio","require","Audio","ChatInput","value","onChangeText","onSend","disabled","placeholder","inputRef","apiUrl","conversationId","priceMode","onTranscribeError","theme","t","isRecording","setIsRecording","isTranscribing","setIsTranscribing","transcribeErrorMsg","setTranscribeErrorMsg","mediaRecorderRef","audioChunksRef","expoRecordingRef","timer","setTimeout","clearTimeout","handleTranscribeFailure","err","asError","Error","String","userMessage","errorCode","message","status","console","error","transcribeAndAppend","file","fileName","mimeType","sanitizedMime","data","transcript","startWebRecording","stream","navigator","mediaDevices","getUserMedia","audio","preferredTypes","MR","window","MediaRecorder","supportedType","find","tpe","isTypeSupported","mediaRecorder","current","ondataavailable","e","size","push","onstop","getTracks","forEach","track","stop","chunkType","type","audioBlob","Blob","ext","includes","Date","now","start","stopWebRecording","startNativeRecording","granted","requestPermissionsAsync","setAudioModeAsync","allowsRecordingIOS","playsInSilentModeIOS","recording","Recording","createAsync","RecordingOptionsPresets","HIGH_QUALITY","stopNativeRecording","stopAndUnloadAsync","uri","getURI","name","startRecording","OS","stopRecording","handleMicPress","isMicAvailable","isSendDisabled","createElement","InputWrapper","InputContainer","Input","ref","id","style","styles","inputWeb","autoComplete","placeholderTextColor","onSubmitEditing","editable","autoFocus","isTablet","MicButton","onPress","color","variant","VDBCustom","STOP_CIRCLE","MIC","SendButton","SEND","ErrorBanner","accessibilityRole","ErrorText","numberOfLines","View","TouchableOpacity","Text","TextInput","create","outlineStyle","outlineWidth","boxShadow"],"sourceRoot":"../../../src","sources":["components/ChatInput.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -946,7 +946,9 @@ export const ChatWidget = /*#__PURE__*/forwardRef(({
|
|
|
946
946
|
disabled: loading,
|
|
947
947
|
placeholder: placeholder,
|
|
948
948
|
theme: themeProps,
|
|
949
|
-
inputRef: inputRef
|
|
949
|
+
inputRef: inputRef,
|
|
950
|
+
apiUrl: apiUrl,
|
|
951
|
+
priceMode: priceMode
|
|
950
952
|
}), /*#__PURE__*/React.createElement(BetaNotice, {
|
|
951
953
|
active: betaActive
|
|
952
954
|
}));
|
|
@@ -1069,7 +1071,9 @@ export const ChatWidget = /*#__PURE__*/forwardRef(({
|
|
|
1069
1071
|
shownResults: productsByMsg[item.id]?.response?.body?.diamonds.length || 0,
|
|
1070
1072
|
onSuggestionSelect: handleSuggestionSelect,
|
|
1071
1073
|
isLatest: isLatest,
|
|
1072
|
-
isTyping: typingMessageId === item.id
|
|
1074
|
+
isTyping: typingMessageId === item.id,
|
|
1075
|
+
showShowResultsButton: fromFilterScreen && item.role === "assistant" && item.search_payload && Object.keys(item.search_payload).length > 0,
|
|
1076
|
+
onViewAll: onViewAll
|
|
1073
1077
|
}), item.role === "assistant" && item.search_payload && Object.keys(item.search_payload).length > 0 && !productsByMsg[item.id] && /*#__PURE__*/React.createElement(LazyProductsFetcher, {
|
|
1074
1078
|
apiUrl: apiUrl,
|
|
1075
1079
|
priceMode: priceMode,
|