@revrag-ai/embed-react-native 1.0.30 → 1.0.32
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/api/api.js +49 -21
- package/dist/commonjs/api/api.js.map +1 -1
- package/dist/commonjs/components/DynamicComponent/Typewriter.js +6 -5
- package/dist/commonjs/components/DynamicComponent/Typewriter.js.map +1 -1
- package/dist/commonjs/components/Embed/EmbedAudioWave.js +87 -130
- package/dist/commonjs/components/Embed/EmbedAudioWave.js.map +1 -1
- package/dist/commonjs/components/Embed/EmbedButton.js +166 -66
- package/dist/commonjs/components/Embed/EmbedButton.js.map +1 -1
- package/dist/commonjs/components/styles/EmbedButton.style.js +31 -30
- package/dist/commonjs/components/styles/EmbedButton.style.js.map +1 -1
- package/dist/commonjs/context/EmbedProvider.js +18 -8
- package/dist/commonjs/context/EmbedProvider.js.map +1 -1
- package/dist/commonjs/events/clickEventTracker.js +15 -4
- package/dist/commonjs/events/clickEventTracker.js.map +1 -1
- package/dist/commonjs/events/embed.event.js +17 -6
- package/dist/commonjs/events/embed.event.js.map +1 -1
- package/dist/commonjs/hooks/EmbedButton.animations.js +6 -6
- package/dist/commonjs/hooks/EmbedButton.animations.js.map +1 -1
- package/dist/commonjs/hooks/EmbedButton.helpers.js +37 -1
- package/dist/commonjs/hooks/EmbedButton.helpers.js.map +1 -1
- package/dist/commonjs/hooks/initialize.js +10 -0
- package/dist/commonjs/hooks/initialize.js.map +1 -1
- package/dist/commonjs/hooks/voiceagent.js +41 -24
- package/dist/commonjs/hooks/voiceagent.js.map +1 -1
- package/dist/commonjs/store/store.key.js +22 -4
- package/dist/commonjs/store/store.key.js.map +1 -1
- package/dist/commonjs/utils/constant.js +1 -1
- package/dist/commonjs/utils/permision.js +1 -1
- package/dist/commonjs/utils/permision.js.map +1 -1
- package/dist/module/api/api.js +49 -21
- package/dist/module/api/api.js.map +1 -1
- package/dist/module/components/DynamicComponent/Typewriter.js +6 -5
- package/dist/module/components/DynamicComponent/Typewriter.js.map +1 -1
- package/dist/module/components/Embed/EmbedAudioWave.js +88 -132
- package/dist/module/components/Embed/EmbedAudioWave.js.map +1 -1
- package/dist/module/components/Embed/EmbedButton.js +171 -71
- package/dist/module/components/Embed/EmbedButton.js.map +1 -1
- package/dist/module/components/styles/EmbedButton.style.js +31 -30
- package/dist/module/components/styles/EmbedButton.style.js.map +1 -1
- package/dist/module/context/EmbedProvider.js +18 -8
- package/dist/module/context/EmbedProvider.js.map +1 -1
- package/dist/module/events/clickEventTracker.js +15 -4
- package/dist/module/events/clickEventTracker.js.map +1 -1
- package/dist/module/events/embed.event.js +17 -6
- package/dist/module/events/embed.event.js.map +1 -1
- package/dist/module/hooks/EmbedButton.animations.js +5 -6
- package/dist/module/hooks/EmbedButton.animations.js.map +1 -1
- package/dist/module/hooks/EmbedButton.helpers.js +35 -0
- package/dist/module/hooks/EmbedButton.helpers.js.map +1 -1
- package/dist/module/hooks/initialize.js +10 -0
- package/dist/module/hooks/initialize.js.map +1 -1
- package/dist/module/hooks/voiceagent.js +41 -24
- package/dist/module/hooks/voiceagent.js.map +1 -1
- package/dist/module/store/store.key.js +20 -3
- package/dist/module/store/store.key.js.map +1 -1
- package/dist/module/utils/constant.js +1 -1
- package/dist/module/utils/permision.js +1 -1
- package/dist/module/utils/permision.js.map +1 -1
- package/dist/typescript/src/api/api.d.ts.map +1 -1
- package/dist/typescript/src/components/DynamicComponent/Typewriter.d.ts.map +1 -1
- package/dist/typescript/src/components/Embed/EmbedAudioWave.d.ts +11 -1
- package/dist/typescript/src/components/Embed/EmbedAudioWave.d.ts.map +1 -1
- package/dist/typescript/src/components/Embed/EmbedButton.d.ts.map +1 -1
- package/dist/typescript/src/components/styles/EmbedButton.style.d.ts +2 -0
- package/dist/typescript/src/components/styles/EmbedButton.style.d.ts.map +1 -1
- package/dist/typescript/src/context/EmbedProvider.d.ts.map +1 -1
- package/dist/typescript/src/events/clickEventTracker.d.ts.map +1 -1
- package/dist/typescript/src/events/embed.event.d.ts +4 -0
- package/dist/typescript/src/events/embed.event.d.ts.map +1 -1
- package/dist/typescript/src/hooks/EmbedButton.animations.d.ts +3 -3
- package/dist/typescript/src/hooks/EmbedButton.animations.d.ts.map +1 -1
- package/dist/typescript/src/hooks/EmbedButton.helpers.d.ts +5 -4
- package/dist/typescript/src/hooks/EmbedButton.helpers.d.ts.map +1 -1
- package/dist/typescript/src/hooks/initialize.d.ts.map +1 -1
- package/dist/typescript/src/hooks/voiceagent.d.ts.map +1 -1
- package/dist/typescript/src/store/store.key.d.ts +2 -0
- package/dist/typescript/src/store/store.key.d.ts.map +1 -1
- package/dist/typescript/src/utils/constant.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","Animated","Platform","StyleSheet","Text","View","jsx","_jsx","jsxs","_jsxs","Typewriter","lines","linesProp","typingSpeed","pauseDuration","containerStyle","textStyle","cursorStyle","showCursor","onViewClose","viewCloseDelay","Array","isArray","completedLines","setCompletedLines","currentCharIndex","setCurrentCharIndex","currentLineIndex","setCurrentLineIndex","isDone","setIsDone","blinkAnim","Value","current","linesKey","JSON","stringify","isAllDone","length","loop","sequence","timing","toValue","duration","useNativeDriver","start","stop","handleTyping","currentLine","undefined","prev","setTimeout","timer","clearTimeout","typedText","substring","isShowingCursor","style","styles","container","children","map","line","index","text","cursor","opacity","typewriterFont","OS","create","flexDirection","fontSize","color","fontFamily","alignItems","marginLeft","width","height","backgroundColor"],"sourceRoot":"../../../../src","sources":["components/DynamicComponent/Typewriter.tsx"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","Animated","Platform","StyleSheet","Text","View","jsx","_jsx","jsxs","_jsxs","Typewriter","lines","linesProp","typingSpeed","pauseDuration","containerStyle","textStyle","cursorStyle","showCursor","onViewClose","viewCloseDelay","Array","isArray","completedLines","setCompletedLines","currentCharIndex","setCurrentCharIndex","currentLineIndex","setCurrentLineIndex","isDone","setIsDone","blinkAnim","Value","current","linesKey","JSON","stringify","isAllDone","length","loop","sequence","timing","toValue","duration","useNativeDriver","start","stop","handleTyping","currentLine","undefined","prev","setTimeout","timer","clearTimeout","closeTimer","typedText","substring","isShowingCursor","style","styles","container","children","map","line","index","text","cursor","opacity","typewriterFont","OS","create","flexDirection","fontSize","color","fontFamily","alignItems","marginLeft","width","height","backgroundColor"],"sourceRoot":"../../../../src","sources":["components/DynamicComponent/Typewriter.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,149 +1,110 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
import { useEffect, useRef
|
|
14
|
-
import {
|
|
3
|
+
/**
|
|
4
|
+
* EmbedAudioWave — Waveform visualizer for the voice agent.
|
|
5
|
+
*
|
|
6
|
+
* Replaced the original implementation which used two JS-thread setInterval loops
|
|
7
|
+
* and useNativeDriver:false (causing jank on iOS physical devices) with:
|
|
8
|
+
* - A single 500ms interval that only writes to a Reanimated shared value
|
|
9
|
+
* (no React state updates, no re-renders from audio polling)
|
|
10
|
+
* - Per-bar Reanimated useAnimatedStyle running on the UI thread (no JS thread animation)
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { useEffect, useRef } from 'react';
|
|
14
|
+
import { StyleSheet, View } from 'react-native';
|
|
15
|
+
import Animated, { cancelAnimation, useAnimatedStyle, useSharedValue, withRepeat, withSequence, withTiming } from 'react-native-reanimated';
|
|
15
16
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
const BAR_COUNT = 10;
|
|
18
|
+
|
|
19
|
+
// Max height (px) for each bar — edge bars are shorter for a natural wave shape
|
|
20
|
+
const BAR_MAX_HEIGHTS = [6, 10, 16, 22, 25, 22, 16, 10, 6, 4];
|
|
21
|
+
|
|
22
|
+
// Phase offset per bar so bars animate at staggered times (creates wave effect)
|
|
23
|
+
const BAR_PHASE_OFFSETS = [0, 60, 120, 180, 240, 180, 120, 60, 0, 30];
|
|
24
|
+
const AnimatedBar = ({
|
|
25
|
+
waveProgress,
|
|
26
|
+
isActive,
|
|
27
|
+
maxHeight,
|
|
28
|
+
phaseOffset,
|
|
29
|
+
isEdge
|
|
30
|
+
}) => {
|
|
31
|
+
const barStyle = useAnimatedStyle(() => {
|
|
32
|
+
'worklet';
|
|
33
|
+
|
|
34
|
+
if (!isActive.value) {
|
|
35
|
+
return {
|
|
36
|
+
height: 2
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// Compute a sine-wave height from the shared progress value + per-bar phase offset
|
|
40
|
+
const phase = (waveProgress.value + phaseOffset) % 1000 / 1000;
|
|
41
|
+
const height = Math.max(2, Math.abs(Math.sin(phase * Math.PI * 2)) * maxHeight);
|
|
42
|
+
return {
|
|
43
|
+
height
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
47
|
+
style: [styles.bar, isEdge ? styles.barEdge : styles.barCenter, barStyle]
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
export const WaveformVisualizer = ({
|
|
51
|
+
roomRef
|
|
52
|
+
}) => {
|
|
53
|
+
// Shared values live on the UI thread — no React re-renders needed
|
|
54
|
+
const isActive = useSharedValue(false);
|
|
55
|
+
const waveProgress = useSharedValue(0);
|
|
56
|
+
const lastActiveState = useRef(false);
|
|
19
57
|
const intervalRef = useRef(null);
|
|
20
|
-
const [currentHeights, setCurrentHeights] = useState(Array(10).fill(0));
|
|
21
|
-
|
|
22
|
-
// Create animated values for each bar
|
|
23
|
-
const barCount = 10;
|
|
24
|
-
const animatedBars = useRef(Array(barCount).fill(0).map(() => new Animated.Value(0))).current;
|
|
25
58
|
useEffect(() => {
|
|
26
|
-
// Check if there's an active room connection AND if agent is talking
|
|
27
59
|
const checkAudioActivity = () => {
|
|
28
60
|
const room = roomRef.current;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Check if any remote participant is currently speaking
|
|
35
|
-
let isAgentSpeaking = false;
|
|
36
|
-
|
|
37
|
-
// Loop through all remote participants
|
|
38
|
-
room.remoteParticipants.forEach(participant => {
|
|
39
|
-
const audioTrackPublications = Array.from(participant.getTrackPublications().values());
|
|
40
|
-
const remoteAudioTrack = audioTrackPublications.find(pub => pub.track?.kind === 'audio');
|
|
41
|
-
|
|
42
|
-
// Check if this participant has audio track, is not muted, and is actively speaking
|
|
43
|
-
if (remoteAudioTrack?.track && !remoteAudioTrack?.isMuted) {
|
|
44
|
-
// Check audio level to detect actual speech (optional but more accurate)
|
|
61
|
+
let speaking = false;
|
|
62
|
+
if (room?.state === 'connected') {
|
|
63
|
+
room.remoteParticipants.forEach(participant => {
|
|
45
64
|
const audioLevel = participant.audioLevel || 0;
|
|
46
|
-
if (audioLevel > 0.05) {
|
|
47
|
-
|
|
48
|
-
isAgentSpeaking = true;
|
|
65
|
+
if (audioLevel > 0.05 || participant.isSpeaking) {
|
|
66
|
+
speaking = true;
|
|
49
67
|
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (speaking === lastActiveState.current) return;
|
|
71
|
+
lastActiveState.current = speaking;
|
|
72
|
+
if (speaking) {
|
|
73
|
+
isActive.value = true;
|
|
74
|
+
// Run the wave progress counter continuously on the UI thread
|
|
75
|
+
waveProgress.value = withRepeat(withSequence(withTiming(1000, {
|
|
76
|
+
duration: 1200
|
|
77
|
+
}), withTiming(0, {
|
|
78
|
+
duration: 0
|
|
79
|
+
})), -1, false);
|
|
80
|
+
} else {
|
|
81
|
+
isActive.value = false;
|
|
82
|
+
cancelAnimation(waveProgress);
|
|
83
|
+
waveProgress.value = withTiming(0, {
|
|
84
|
+
duration: 400
|
|
85
|
+
});
|
|
86
|
+
}
|
|
53
87
|
};
|
|
54
|
-
|
|
55
|
-
// Initial check
|
|
56
88
|
checkAudioActivity();
|
|
57
|
-
|
|
58
|
-
// Set up periodic checking for room state changes
|
|
59
89
|
intervalRef.current = setInterval(checkAudioActivity, 500);
|
|
60
|
-
|
|
61
|
-
// Clean up on unmount
|
|
62
90
|
return () => {
|
|
63
91
|
if (intervalRef.current) {
|
|
64
92
|
clearInterval(intervalRef.current);
|
|
65
93
|
intervalRef.current = null;
|
|
66
94
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}, [roomRef]);
|
|
70
|
-
|
|
71
|
-
// Continuous smooth animation
|
|
72
|
-
useEffect(() => {
|
|
73
|
-
const animateWaveform = () => {
|
|
74
|
-
// Generate smooth waveform data - stop animation completely when not active
|
|
75
|
-
const targetHeights = isAudioActive ? Array(barCount).fill(0).map((_, index) => {
|
|
76
|
-
const timeOffset = Date.now() / 800 + index * 0.3;
|
|
77
|
-
const baseHeight = 0.5;
|
|
78
|
-
const amplitude = 0.5;
|
|
79
|
-
const height = baseHeight + amplitude * Math.abs(Math.sin(timeOffset));
|
|
80
|
-
return Math.max(0.1, Math.min(1.0, height));
|
|
81
|
-
}) : Array(barCount).fill(0); // Completely freeze animation when mic is muted
|
|
82
|
-
|
|
83
|
-
// Update current heights for conditional logic
|
|
84
|
-
setCurrentHeights(targetHeights);
|
|
85
|
-
const animations = animatedBars.map((animatedValue, index) => {
|
|
86
|
-
const targetHeight = targetHeights[index] || 0;
|
|
87
|
-
return Animated.timing(animatedValue, {
|
|
88
|
-
toValue: targetHeight,
|
|
89
|
-
duration: isAudioActive ? 400 : 600,
|
|
90
|
-
// Slower fade out when going inactive
|
|
91
|
-
useNativeDriver: false
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
Animated.parallel(animations).start();
|
|
95
|
+
cancelAnimation(waveProgress);
|
|
96
|
+
isActive.value = false;
|
|
95
97
|
};
|
|
96
|
-
|
|
97
|
-
// Start animation immediately and repeat
|
|
98
|
-
animateWaveform();
|
|
99
|
-
const animationInterval = setInterval(animateWaveform, 300);
|
|
100
|
-
return () => {
|
|
101
|
-
clearInterval(animationInterval);
|
|
102
|
-
};
|
|
103
|
-
}, [isAudioActive, animatedBars]);
|
|
104
|
-
return {
|
|
105
|
-
animatedBars,
|
|
106
|
-
currentHeights,
|
|
107
|
-
isActive: isAudioActive
|
|
108
|
-
};
|
|
109
|
-
};
|
|
110
|
-
export const WaveformVisualizer = ({
|
|
111
|
-
roomRef
|
|
112
|
-
}) => {
|
|
113
|
-
const {
|
|
114
|
-
animatedBars,
|
|
115
|
-
currentHeights
|
|
116
|
-
} = useReactNativeAudioWaveform(roomRef);
|
|
98
|
+
}, [roomRef, isActive, waveProgress]);
|
|
117
99
|
return /*#__PURE__*/_jsx(View, {
|
|
118
100
|
style: styles.container,
|
|
119
|
-
children:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
conditionalValue = 1;
|
|
127
|
-
} else if (currentHeightValue >= 0.4 && currentHeightValue <= 0.5) {
|
|
128
|
-
conditionalValue = 5;
|
|
129
|
-
} else {
|
|
130
|
-
conditionalValue = 1;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Determine bar style based on position
|
|
134
|
-
const isEdgeBar = idx <= 1 || idx >= 8;
|
|
135
|
-
const barStyle = [styles.bar, conditionalValue === 10 ? styles.barWide : styles.barNormal, isEdgeBar ? styles.barEdge : styles.barCenter];
|
|
136
|
-
|
|
137
|
-
// You can use conditionalValue for width, color, or other properties
|
|
138
|
-
return /*#__PURE__*/_jsx(Animated.View, {
|
|
139
|
-
style: [barStyle, {
|
|
140
|
-
height: animatedHeight.interpolate({
|
|
141
|
-
inputRange: [0, 1],
|
|
142
|
-
outputRange: [0, 25]
|
|
143
|
-
})
|
|
144
|
-
}]
|
|
145
|
-
}, idx);
|
|
146
|
-
})
|
|
101
|
+
children: BAR_MAX_HEIGHTS.map((maxH, idx) => /*#__PURE__*/_jsx(AnimatedBar, {
|
|
102
|
+
waveProgress: waveProgress,
|
|
103
|
+
isActive: isActive,
|
|
104
|
+
maxHeight: maxH,
|
|
105
|
+
phaseOffset: BAR_PHASE_OFFSETS[idx] ?? 0,
|
|
106
|
+
isEdge: idx <= 1 || idx >= BAR_COUNT - 2
|
|
107
|
+
}, idx))
|
|
147
108
|
});
|
|
148
109
|
};
|
|
149
110
|
const styles = StyleSheet.create({
|
|
@@ -158,12 +119,7 @@ const styles = StyleSheet.create({
|
|
|
158
119
|
bar: {
|
|
159
120
|
borderRadius: 100,
|
|
160
121
|
alignSelf: 'center',
|
|
161
|
-
margin: 1.5
|
|
162
|
-
},
|
|
163
|
-
barNormal: {
|
|
164
|
-
width: 4
|
|
165
|
-
},
|
|
166
|
-
barWide: {
|
|
122
|
+
margin: 1.5,
|
|
167
123
|
width: 4
|
|
168
124
|
},
|
|
169
125
|
barEdge: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","StyleSheet","View","Animated","cancelAnimation","useAnimatedStyle","useSharedValue","withRepeat","withSequence","withTiming","jsx","_jsx","BAR_COUNT","BAR_MAX_HEIGHTS","BAR_PHASE_OFFSETS","AnimatedBar","waveProgress","isActive","maxHeight","phaseOffset","isEdge","barStyle","value","height","phase","Math","max","abs","sin","PI","style","styles","bar","barEdge","barCenter","WaveformVisualizer","roomRef","lastActiveState","intervalRef","checkAudioActivity","room","current","speaking","state","remoteParticipants","forEach","participant","audioLevel","isSpeaking","duration","setInterval","clearInterval","container","children","map","maxH","idx","create","flexDirection","alignItems","alignSelf","justifyContent","zIndex","borderRadius","margin","width","backgroundColor"],"sourceRoot":"../../../../src","sources":["components/Embed/EmbedAudioWave.tsx"],"mappings":"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","ignoreList":[]}
|