react-native-audio-api 0.13.3 → 0.13.5
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/android/src/main/java/com/swmansion/audioapi/system/AudioEvent.kt +1 -0
- package/common/cpp/audioapi/HostObjects/sources/AudioFileSourceNodeHostObject.cpp +8 -2
- package/common/cpp/audioapi/HostObjects/sources/AudioFileSourceNodeHostObject.h +1 -0
- package/common/cpp/audioapi/HostObjects/utils/JsEnumParser.cpp +2 -0
- package/common/cpp/audioapi/core/sources/AudioFileSourceNode.cpp +15 -1
- package/common/cpp/audioapi/core/sources/AudioFileSourceNode.h +19 -0
- package/common/cpp/audioapi/core/sources/RecorderAdapterNode.cpp +12 -1
- package/common/cpp/audioapi/core/sources/RecorderAdapterNode.h +6 -0
- package/common/cpp/audioapi/core/utils/param/ParamQueueBase.hpp +1 -1
- package/common/cpp/audioapi/core/utils/param/ParamRenderQueue.cpp +35 -12
- package/common/cpp/audioapi/core/utils/param/ParamRenderQueue.h +9 -0
- package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +3 -3
- package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +2 -2
- package/common/cpp/audioapi/events/AudioEvent.h +1 -0
- package/common/cpp/audioapi/events/AudioEventPayload.h +11 -0
- package/common/cpp/audioapi/events/AudioEventPayloadMapping.h +1 -0
- package/common/cpp/audioapi/utils/events/BufferingStateDispatcher.cpp +49 -0
- package/common/cpp/audioapi/utils/events/BufferingStateDispatcher.h +42 -0
- package/ios/audioapi/ios/core/IOSAudioRecorder.h +12 -1
- package/ios/audioapi/ios/core/IOSAudioRecorder.mm +195 -72
- package/ios/audioapi/ios/core/NativeAudioRecorder.h +3 -1
- package/ios/audioapi/ios/core/NativeAudioRecorder.m +41 -14
- package/ios/audioapi/ios/core/utils/FileOptions.mm +18 -5
- package/ios/audioapi/ios/core/utils/IOSFileWriter.h +8 -0
- package/ios/audioapi/ios/core/utils/IOSFileWriter.mm +55 -8
- package/ios/audioapi/ios/core/utils/IOSRotatingFileWriter.h +3 -0
- package/ios/audioapi/ios/core/utils/IOSRotatingFileWriter.mm +16 -0
- package/ios/audioapi/ios/system/AudioEngine.h +2 -1
- package/ios/audioapi/ios/system/AudioEngine.mm +49 -23
- package/ios/audioapi/ios/system/SystemNotificationManager.mm +10 -0
- package/lib/commonjs/Audio/Audio.js +30 -3
- package/lib/commonjs/Audio/Audio.js.map +1 -1
- package/lib/commonjs/Audio/Audio.web.js +21 -3
- package/lib/commonjs/Audio/Audio.web.js.map +1 -1
- package/lib/commonjs/Audio/AudioFileSourceNode.js +20 -0
- package/lib/commonjs/Audio/AudioFileSourceNode.js.map +1 -1
- package/lib/commonjs/Audio/controls/AudioControls.js +90 -94
- package/lib/commonjs/Audio/controls/AudioControls.js.map +1 -1
- package/lib/commonjs/Audio/controls/audioControlUtils.js +48 -18
- package/lib/commonjs/Audio/controls/audioControlUtils.js.map +1 -1
- package/lib/commonjs/Audio/index.js +7 -0
- package/lib/commonjs/Audio/index.js.map +1 -1
- package/lib/commonjs/Audio/utils.js +16 -5
- package/lib/commonjs/Audio/utils.js.map +1 -1
- package/lib/commonjs/AudioAPIModule/AudioAPIModule.js +1 -1
- package/lib/commonjs/core/AudioDecoder.js +4 -1
- package/lib/commonjs/core/AudioDecoder.js.map +1 -1
- package/lib/module/Audio/Audio.js +30 -3
- package/lib/module/Audio/Audio.js.map +1 -1
- package/lib/module/Audio/Audio.web.js +21 -3
- package/lib/module/Audio/Audio.web.js.map +1 -1
- package/lib/module/Audio/AudioFileSourceNode.js +20 -0
- package/lib/module/Audio/AudioFileSourceNode.js.map +1 -1
- package/lib/module/Audio/controls/AudioControls.js +92 -96
- package/lib/module/Audio/controls/AudioControls.js.map +1 -1
- package/lib/module/Audio/controls/audioControlUtils.js +48 -19
- package/lib/module/Audio/controls/audioControlUtils.js.map +1 -1
- package/lib/module/Audio/index.js +1 -0
- package/lib/module/Audio/index.js.map +1 -1
- package/lib/module/Audio/utils.js +15 -5
- package/lib/module/Audio/utils.js.map +1 -1
- package/lib/module/AudioAPIModule/AudioAPIModule.js +1 -1
- package/lib/module/core/AudioDecoder.js +4 -1
- package/lib/module/core/AudioDecoder.js.map +1 -1
- package/lib/typescript/Audio/Audio.d.ts.map +1 -1
- package/lib/typescript/Audio/Audio.web.d.ts.map +1 -1
- package/lib/typescript/Audio/AudioFileSourceNode.d.ts +2 -0
- package/lib/typescript/Audio/AudioFileSourceNode.d.ts.map +1 -1
- package/lib/typescript/Audio/controls/AudioControls.d.ts.map +1 -1
- package/lib/typescript/Audio/controls/audioControlUtils.d.ts +11 -4
- package/lib/typescript/Audio/controls/audioControlUtils.d.ts.map +1 -1
- package/lib/typescript/Audio/index.d.ts +1 -0
- package/lib/typescript/Audio/index.d.ts.map +1 -1
- package/lib/typescript/Audio/types.d.ts +15 -1
- package/lib/typescript/Audio/types.d.ts.map +1 -1
- package/lib/typescript/Audio/utils.d.ts +2 -1
- package/lib/typescript/Audio/utils.d.ts.map +1 -1
- package/lib/typescript/core/AudioDecoder.d.ts.map +1 -1
- package/lib/typescript/events/types.d.ts +5 -0
- package/lib/typescript/events/types.d.ts.map +1 -1
- package/lib/typescript/jsi-interfaces.d.ts +1 -0
- package/lib/typescript/jsi-interfaces.d.ts.map +1 -1
- package/package.json +8 -8
- package/scripts/validate-worklets-version.js +1 -1
- package/src/Audio/Audio.tsx +38 -2
- package/src/Audio/Audio.web.tsx +26 -2
- package/src/Audio/AudioFileSourceNode.ts +28 -0
- package/src/Audio/controls/AudioControls.tsx +117 -116
- package/src/Audio/controls/audioControlUtils.ts +63 -31
- package/src/Audio/index.ts +1 -0
- package/src/Audio/types.ts +15 -1
- package/src/Audio/utils.ts +20 -2
- package/src/AudioAPIModule/AudioAPIModule.ts +1 -1
- package/src/core/AudioDecoder.ts +5 -3
- package/src/events/types.ts +6 -0
- package/src/jsi-interfaces.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","View","AudioComponentContext","useStableAudioProps","resolveSourcePath","AudioControls","useAudioSourceLoader","jsx","_jsx","jsxs","_jsxs","Audio","memo","forwardRef","props","ref","children","autoPlay","controls","loop","muted","preload","forceDownload","source","playbackRate","preservesPitch","volume","context","onLoadStart","onLoad","onError","onPositionChange","onEnded","onEndedCallback","onPlay","onPause","onVolumeChange","volumeState","setVolumeState","mutedState","setMutedState","ready","setReady","playbackState","setPlaybackState","currentTime","setCurrentTime","path","lastEffectiveVolumeRef","fileSourceRef","current","disconnect","pause","dispose","effectiveMutedState","effectiveVolumeState","effectiveVolumeRef","playRef","handleAutoPlay","handleEnded","endedDuration","loaderReady","duration","loadForPlayback","preloadMode","onAutoPlay","setVolume","play","loaded","setPlaybackRate","nextPlaybackRate","seekToTime","seconds","nextTime","Math","max","min","setLoop","setPreservesPitch","fileSource","startPositionTracking","stopPositionTracking","setMuted","getFileSourceNode","ctxValue","sourcePath","Provider","value","style","alignSelf","width"],"sourceRoot":"../../../src","sources":["Audio/Audio.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IACVC,WAAW,EACXC,SAAS,EACTC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,IAAI,QAAQ,cAAc;AAQnC,SAASC,qBAAqB,QAAQ,sBAAmB;AACzD,SAASC,mBAAmB,EAAEC,iBAAiB,QAAQ,YAAS;AAChE,OAAOC,aAAa,MAAM,6BAA0B;AACpD,SAASC,oBAAoB,QAAQ,2BAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE9D,MAAMC,KAAK,gBAAGjB,KAAK,CAACkB,IAAI,cACtBlB,KAAK,CAACmB,UAAU,CAA6B,CAACC,KAAK,EAAEC,GAAG,KAAK;EAC3D,MAAM;IAAEC;EAAS,CAAC,GAAGF,KAAK;EAC1B,MAAM;IACJG,QAAQ;IACRC,QAAQ;IACRC,IAAI;IACJC,KAAK;IACLC,OAAO;IACPC,aAAa;IACbC,MAAM;IACNC,YAAY;IACZC,cAAc;IACdC,MAAM;IACNC,OAAO;IACPC,WAAW;IACXC,MAAM;IACNC,OAAO;IACPC,gBAAgB;IAChBC,OAAO,EAAEC,eAAe;IACxBC,MAAM;IACNC,OAAO;IACPC;EACF,CAAC,
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","View","AudioComponentContext","useStableAudioProps","resolveSourcePath","AudioControls","useAudioSourceLoader","jsx","_jsx","jsxs","_jsxs","Audio","memo","forwardRef","props","ref","children","autoPlay","controls","loop","muted","preload","forceDownload","source","playbackRate","preservesPitch","volume","context","onLoadStart","onLoad","onError","onPositionChange","onEnded","onEndedCallback","onPlay","onPause","onVolumeChange","onWaiting","onPlaying","volumeState","setVolumeState","mutedState","setMutedState","ready","setReady","playbackState","setPlaybackState","isBuffering","setIsBuffering","currentTime","setCurrentTime","publicPlaybackState","path","lastEffectiveVolumeRef","fileSourceRef","current","disconnect","pause","dispose","effectiveMutedState","effectiveVolumeState","effectiveVolumeRef","playRef","handleAutoPlay","handleEnded","endedDuration","loaderReady","duration","loadForPlayback","preloadMode","onAutoPlay","setVolume","play","loaded","setPlaybackRate","nextPlaybackRate","seekToTime","seconds","nextTime","Math","max","min","setLoop","setPreservesPitch","fileSource","startPositionTracking","stopPositionTracking","startBufferingTracking","buffering","stopBufferingTracking","setMuted","getFileSourceNode","ctxValue","sourcePath","Provider","value","style","alignSelf","width"],"sourceRoot":"../../../src","sources":["Audio/Audio.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -26,15 +26,23 @@ const Audio = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((props, ref)
|
|
|
26
26
|
onEnded: onEndedCallback,
|
|
27
27
|
onPlay,
|
|
28
28
|
onPause,
|
|
29
|
-
onVolumeChange
|
|
29
|
+
onVolumeChange,
|
|
30
|
+
onWaiting,
|
|
31
|
+
onPlaying
|
|
30
32
|
} = useStableAudioProps(props);
|
|
31
33
|
const audioRef = useRef(null);
|
|
32
34
|
const [volumeState, setVolumeState] = useState(volume);
|
|
33
35
|
const [mutedState, setMutedState] = useState(null);
|
|
34
36
|
const [ready, setReady] = useState(false);
|
|
35
37
|
const [playbackState, setPlaybackState] = useState('idle');
|
|
38
|
+
const [isBuffering, setIsBuffering] = useState(false);
|
|
36
39
|
const [currentTime, setCurrentTime] = useState(0);
|
|
37
40
|
const [duration, setDuration] = useState(0);
|
|
41
|
+
|
|
42
|
+
// See the native Audio.tsx's identical comment: kept derived rather than
|
|
43
|
+
// folded into playbackState so a stall starting/ending doesn't have to
|
|
44
|
+
// tear down whatever effect is watching playbackState.
|
|
45
|
+
const publicPlaybackState = useMemo(() => playbackState === 'playing' && isBuffering ? 'buffering' : playbackState, [playbackState, isBuffering]);
|
|
38
46
|
const lastElementVolumeRef = useRef(muted ? 0 : volume);
|
|
39
47
|
const effectiveMutedState = useMemo(() => {
|
|
40
48
|
return mutedState ?? muted;
|
|
@@ -159,7 +167,7 @@ const Audio = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((props, ref)
|
|
|
159
167
|
volume: reportedVolumeState,
|
|
160
168
|
setMuted,
|
|
161
169
|
muted: effectiveMutedState,
|
|
162
|
-
playbackState,
|
|
170
|
+
playbackState: publicPlaybackState,
|
|
163
171
|
currentTime,
|
|
164
172
|
duration,
|
|
165
173
|
autoPlay,
|
|
@@ -169,7 +177,7 @@ const Audio = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((props, ref)
|
|
|
169
177
|
playbackRate,
|
|
170
178
|
preservesPitch,
|
|
171
179
|
audioContext: null
|
|
172
|
-
}), [play, pause, seekToTime, setVolume, ready, reportedVolumeState, setMuted, effectiveMutedState,
|
|
180
|
+
}), [play, pause, seekToTime, setVolume, ready, reportedVolumeState, setMuted, effectiveMutedState, publicPlaybackState, currentTime, duration, autoPlay, controls, loop, preload, playbackRate, preservesPitch]);
|
|
173
181
|
return /*#__PURE__*/_jsx(AudioComponentContext.Provider, {
|
|
174
182
|
value: ctxValue,
|
|
175
183
|
children: /*#__PURE__*/_jsxs(View, {
|
|
@@ -199,16 +207,26 @@ const Audio = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((props, ref)
|
|
|
199
207
|
},
|
|
200
208
|
onPause: () => {
|
|
201
209
|
setPlaybackState(state => state === 'playing' ? 'paused' : state);
|
|
210
|
+
setIsBuffering(false);
|
|
202
211
|
onPause();
|
|
203
212
|
},
|
|
204
213
|
onEnded: () => {
|
|
205
214
|
setPlaybackState('idle');
|
|
206
215
|
setCurrentTime(duration);
|
|
216
|
+
setIsBuffering(false);
|
|
207
217
|
onEndedCallback();
|
|
208
218
|
},
|
|
209
219
|
onError: () => {
|
|
210
220
|
setReady(false);
|
|
211
221
|
onError(new Error('Failed to load audio element source'));
|
|
222
|
+
},
|
|
223
|
+
onWaiting: () => {
|
|
224
|
+
setIsBuffering(true);
|
|
225
|
+
onWaiting();
|
|
226
|
+
},
|
|
227
|
+
onPlaying: () => {
|
|
228
|
+
setIsBuffering(false);
|
|
229
|
+
onPlaying();
|
|
212
230
|
}
|
|
213
231
|
}), children]
|
|
214
232
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","View","AudioComponentContext","useStableAudioProps","jsx","_jsx","jsxs","_jsxs","Audio","memo","forwardRef","props","ref","children","autoPlay","controls","loop","muted","preload","source","playbackRate","preservesPitch","volume","onLoadStart","onLoad","onError","onPositionChange","onEnded","onEndedCallback","onPlay","onPause","onVolumeChange","audioRef","volumeState","setVolumeState","mutedState","setMutedState","ready","setReady","playbackState","setPlaybackState","currentTime","setCurrentTime","duration","setDuration","lastElementVolumeRef","effectiveMutedState","effectiveVolumeState","reportedVolumeState","path","Error","uri","el","current","handleTimeUpdate","handleVolumeChange","nextMuted","nextVolume","addEventListener","removeEventListener","play","pause","seekToTime","seconds","nextTime","Math","max","min","setVolume","next","setMuted","setPlaybackRate","nextPlaybackRate","ctxValue","audioContext","Provider","value","style","alignSelf","width","src","onLoadedData","state"],"sourceRoot":"../../../src","sources":["Audio/Audio.web.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IACVC,WAAW,EACXC,SAAS,EACTC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,IAAI,QAAQ,cAAc;AAOnC,SAASC,qBAAqB,QAAQ,sBAAmB;AACzD,SAASC,mBAAmB,QAAQ,YAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE9C,MAAMC,KAAK,gBAAGd,KAAK,CAACe,IAAI,cACtBf,KAAK,CAACgB,UAAU,CAA6B,CAACC,KAAK,EAAEC,GAAG,KAAK;EAC3D,MAAM;IAAEC;EAAS,CAAC,GAAGF,KAAK;EAC1B,MAAM;IACJG,QAAQ;IACRC,QAAQ;IACRC,IAAI;IACJC,KAAK;IACLC,OAAO;IACPC,MAAM;IACNC,YAAY;IACZC,cAAc;IACdC,MAAM;IACNC,WAAW;IACXC,MAAM;IACNC,OAAO;IACPC,gBAAgB;IAChBC,OAAO,EAAEC,eAAe;IACxBC,MAAM;IACNC,OAAO;IACPC;EACF,CAAC,
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","View","AudioComponentContext","useStableAudioProps","jsx","_jsx","jsxs","_jsxs","Audio","memo","forwardRef","props","ref","children","autoPlay","controls","loop","muted","preload","source","playbackRate","preservesPitch","volume","onLoadStart","onLoad","onError","onPositionChange","onEnded","onEndedCallback","onPlay","onPause","onVolumeChange","onWaiting","onPlaying","audioRef","volumeState","setVolumeState","mutedState","setMutedState","ready","setReady","playbackState","setPlaybackState","isBuffering","setIsBuffering","currentTime","setCurrentTime","duration","setDuration","publicPlaybackState","lastElementVolumeRef","effectiveMutedState","effectiveVolumeState","reportedVolumeState","path","Error","uri","el","current","handleTimeUpdate","handleVolumeChange","nextMuted","nextVolume","addEventListener","removeEventListener","play","pause","seekToTime","seconds","nextTime","Math","max","min","setVolume","next","setMuted","setPlaybackRate","nextPlaybackRate","ctxValue","audioContext","Provider","value","style","alignSelf","width","src","onLoadedData","state"],"sourceRoot":"../../../src","sources":["Audio/Audio.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,6 +19,10 @@ export class AudioFileSourceNode extends AudioScheduledSourceNode {
|
|
|
19
19
|
this.resetNodeAndSubscriptions();
|
|
20
20
|
}
|
|
21
21
|
play() {
|
|
22
|
+
if (!this.node.routedThroughMediaElement) {
|
|
23
|
+
this.connect(this.context.destination);
|
|
24
|
+
}
|
|
25
|
+
// copied from audioscheduledsourcenode, so it can bypass requirement of being started only once
|
|
22
26
|
this.node.start(this.context.currentTime);
|
|
23
27
|
}
|
|
24
28
|
pause() {
|
|
@@ -66,9 +70,25 @@ export class AudioFileSourceNode extends AudioScheduledSourceNode {
|
|
|
66
70
|
this.node.onPositionChanged = '0';
|
|
67
71
|
}
|
|
68
72
|
}
|
|
73
|
+
startBufferingTracking(onBufferingChange) {
|
|
74
|
+
if (!this.node) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
this.stopBufferingTracking();
|
|
78
|
+
const sub = this.emitter.addAudioEventListener('bufferingStateChanged', event => {
|
|
79
|
+
onBufferingChange(event.value);
|
|
80
|
+
});
|
|
81
|
+
this.node.onBufferingStateChanged = sub.subscriptionId;
|
|
82
|
+
}
|
|
83
|
+
stopBufferingTracking() {
|
|
84
|
+
if (this.node) {
|
|
85
|
+
this.node.onBufferingStateChanged = '0';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
69
88
|
resetNodeAndSubscriptions() {
|
|
70
89
|
if (this.node) {
|
|
71
90
|
this.node.onPositionChanged = '0';
|
|
91
|
+
this.node.onBufferingStateChanged = '0';
|
|
72
92
|
this.node.onEnded = '0';
|
|
73
93
|
this.node.disconnect(undefined);
|
|
74
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AudioEventEmitter","AudioScheduledSourceNode","MAX_PLAYBACK_RATE","AudioFileSourceNode","emitter","globalThis","attach","options","resetNodeAndSubscriptions","sub","addAudioEventListener","_event","onEnded","node","subscriptionId","duration","dispose","play","
|
|
1
|
+
{"version":3,"names":["AudioEventEmitter","AudioScheduledSourceNode","MAX_PLAYBACK_RATE","AudioFileSourceNode","emitter","globalThis","attach","options","resetNodeAndSubscriptions","sub","addAudioEventListener","_event","onEnded","node","subscriptionId","duration","dispose","play","routedThroughMediaElement","connect","context","destination","start","currentTime","pause","seekToTime","seconds","setVolume","value","volume","setLoop","loop","setPlaybackRate","Number","isFinite","Error","playbackRate","setPreservesPitch","preservesPitch","getFileSourceNode","getDuration","getCurrentTime","startPositionTracking","onTime","stopPositionTracking","event","onPositionChanged","startBufferingTracking","onBufferingChange","stopBufferingTracking","onBufferingStateChanged","disconnect","undefined"],"sourceRoot":"../../../src","sources":["Audio/AudioFileSourceNode.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
4
|
-
import { ActivityIndicator, Image, Platform, Pressable, StyleSheet, Text, View } from 'react-native';
|
|
5
|
-
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
6
|
-
import Animated, { useAnimatedRef, useSharedValue } from 'react-native-reanimated';
|
|
4
|
+
import { ActivityIndicator, Animated, Image, PanResponder, Platform, Pressable, StyleSheet, Text, View } from 'react-native';
|
|
7
5
|
import { useAudioTagContext } from "../AudioTagContext.js";
|
|
8
|
-
import {
|
|
6
|
+
import { isPlaybackActive } from "../utils.js";
|
|
7
|
+
import { formatTime, timeFromLocationX, useBufferingSweep, useExpandableTrackHeight } from "./audioControlUtils.js";
|
|
9
8
|
import PlayIcon from './icons/play.png';
|
|
10
9
|
import PauseIcon from './icons/pause.png';
|
|
11
10
|
import VolumeIcon from './icons/speaker.png';
|
|
@@ -14,7 +13,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
14
13
|
const TRACK_BAR_HEIGHT = 12;
|
|
15
14
|
const TRACK_BAR_HEIGHT_PRESSED = 18;
|
|
16
15
|
const TRACK_BAR_ANIM_MS = 150;
|
|
17
|
-
const
|
|
16
|
+
const BUFFERING_SWEEP_MS = 1100;
|
|
17
|
+
const BUFFERING_SWEEP_WIDTH_RATIO = 0.35;
|
|
18
|
+
const BUFFERING_SWEEP_SLICE_OPACITIES = [0.04, 0.18, 0.45, 0.6, 0.45, 0.18, 0.04];
|
|
18
19
|
const AudioControls = () => {
|
|
19
20
|
const {
|
|
20
21
|
ready,
|
|
@@ -29,72 +30,60 @@ const AudioControls = () => {
|
|
|
29
30
|
} = useAudioTagContext();
|
|
30
31
|
const progressTrackAnim = useExpandableTrackHeight(TRACK_BAR_HEIGHT, TRACK_BAR_HEIGHT_PRESSED, TRACK_BAR_ANIM_MS);
|
|
31
32
|
const [scrubTime, setScrubTime] = useState(null);
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
}).onEnd(e => {
|
|
73
|
-
onEnd(e.x);
|
|
74
|
-
}).onFinalize((_e, success) => {
|
|
75
|
-
if (!success) {
|
|
76
|
-
onCancel();
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
const tapGesture = Gesture.Tap().runOnJS(true).maxDistance(14).onEnd((e, success) => {
|
|
80
|
-
if (success) {
|
|
81
|
-
onTapSeek(e.x);
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
return Gesture.Race(panGesture, tapGesture);
|
|
85
|
-
}, [onStart, onUpdate, onEnd, onCancel, onTapSeek]);
|
|
33
|
+
const [trackWidth, setTrackWidth] = useState(0);
|
|
34
|
+
const isBuffering = playbackState === 'buffering';
|
|
35
|
+
const bufferingSweepStyle = useBufferingSweep(isBuffering, trackWidth, BUFFERING_SWEEP_WIDTH_RATIO, BUFFERING_SWEEP_MS);
|
|
36
|
+
const scrub = useRef({
|
|
37
|
+
startX: 0,
|
|
38
|
+
trackWidth: 0,
|
|
39
|
+
duration,
|
|
40
|
+
seekToTime,
|
|
41
|
+
expand: progressTrackAnim.expand,
|
|
42
|
+
collapse: progressTrackAnim.collapse
|
|
43
|
+
});
|
|
44
|
+
scrub.current.duration = duration;
|
|
45
|
+
scrub.current.seekToTime = seekToTime;
|
|
46
|
+
scrub.current.expand = progressTrackAnim.expand;
|
|
47
|
+
scrub.current.collapse = progressTrackAnim.collapse;
|
|
48
|
+
const panResponder = useMemo(() => PanResponder.create({
|
|
49
|
+
onStartShouldSetPanResponder: () => true,
|
|
50
|
+
onMoveShouldSetPanResponder: () => true,
|
|
51
|
+
onPanResponderTerminationRequest: () => false,
|
|
52
|
+
onPanResponderGrant: event => {
|
|
53
|
+
const s = scrub.current;
|
|
54
|
+
s.startX = event.nativeEvent.locationX;
|
|
55
|
+
s.expand();
|
|
56
|
+
setScrubTime(timeFromLocationX(s.startX, s.trackWidth, s.duration));
|
|
57
|
+
},
|
|
58
|
+
onPanResponderMove: (_event, gestureState) => {
|
|
59
|
+
const s = scrub.current;
|
|
60
|
+
setScrubTime(timeFromLocationX(s.startX + gestureState.dx, s.trackWidth, s.duration));
|
|
61
|
+
},
|
|
62
|
+
onPanResponderRelease: (_event, gestureState) => {
|
|
63
|
+
const s = scrub.current;
|
|
64
|
+
s.seekToTime(timeFromLocationX(s.startX + gestureState.dx, s.trackWidth, s.duration));
|
|
65
|
+
s.collapse();
|
|
66
|
+
setScrubTime(null);
|
|
67
|
+
},
|
|
68
|
+
onPanResponderTerminate: () => {
|
|
69
|
+
scrub.current.collapse();
|
|
70
|
+
setScrubTime(null);
|
|
71
|
+
}
|
|
72
|
+
}), []);
|
|
86
73
|
const onPlayPausePress = useCallback(() => {
|
|
87
|
-
if (playbackState
|
|
74
|
+
if (isPlaybackActive(playbackState)) {
|
|
88
75
|
pause();
|
|
89
76
|
} else {
|
|
90
77
|
play();
|
|
91
78
|
}
|
|
92
79
|
}, [playbackState, pause, play]);
|
|
93
|
-
const onProgressTrackLayout = useCallback(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
80
|
+
const onProgressTrackLayout = useCallback(event => {
|
|
81
|
+
const {
|
|
82
|
+
width
|
|
83
|
+
} = event.nativeEvent.layout;
|
|
84
|
+
scrub.current.trackWidth = width;
|
|
85
|
+
setTrackWidth(width);
|
|
86
|
+
}, []);
|
|
98
87
|
if (!ready) {
|
|
99
88
|
return /*#__PURE__*/_jsx(View, {
|
|
100
89
|
style: styles.container,
|
|
@@ -113,53 +102,45 @@ const AudioControls = () => {
|
|
|
113
102
|
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
114
103
|
style: styles.playPause,
|
|
115
104
|
onPress: onPlayPausePress,
|
|
116
|
-
children: playbackState
|
|
105
|
+
children: isPlaybackActive(playbackState) ? /*#__PURE__*/_jsx(Image, {
|
|
117
106
|
source: PauseIcon,
|
|
118
|
-
style:
|
|
119
|
-
width: 24,
|
|
120
|
-
height: 24
|
|
121
|
-
}
|
|
107
|
+
style: styles.icon
|
|
122
108
|
}) : /*#__PURE__*/_jsx(Image, {
|
|
123
109
|
source: PlayIcon,
|
|
124
|
-
style:
|
|
125
|
-
width: 24,
|
|
126
|
-
height: 24
|
|
127
|
-
}
|
|
110
|
+
style: styles.icon
|
|
128
111
|
})
|
|
129
112
|
}), /*#__PURE__*/_jsxs(Text, {
|
|
130
113
|
style: styles.timeText,
|
|
131
114
|
children: [formatTime(displayTime), " / ", formatTime(duration)]
|
|
132
|
-
}), /*#__PURE__*/_jsx(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
style: styles.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
115
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
116
|
+
onLayout: onProgressTrackLayout,
|
|
117
|
+
style: styles.progressTrack,
|
|
118
|
+
...panResponder.panHandlers,
|
|
119
|
+
children: /*#__PURE__*/_jsxs(Animated.View, {
|
|
120
|
+
style: [styles.trackInner, progressTrackAnim.animatedStyle],
|
|
121
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
122
|
+
style: [styles.trackFill, {
|
|
123
|
+
width: `${progress * 100}%`
|
|
124
|
+
}]
|
|
125
|
+
}), isBuffering && /*#__PURE__*/_jsx(Animated.View, {
|
|
126
|
+
pointerEvents: "none",
|
|
127
|
+
style: [styles.bufferingSweep, bufferingSweepStyle],
|
|
128
|
+
children: BUFFERING_SWEEP_SLICE_OPACITIES.map((opacity, index) => /*#__PURE__*/_jsx(View, {
|
|
129
|
+
style: [styles.bufferingSweepSlice, {
|
|
130
|
+
opacity
|
|
144
131
|
}]
|
|
145
|
-
})
|
|
146
|
-
})
|
|
132
|
+
}, index))
|
|
133
|
+
})]
|
|
147
134
|
})
|
|
148
135
|
}), /*#__PURE__*/_jsx(Pressable, {
|
|
149
136
|
style: styles.volumeIcon,
|
|
150
137
|
onPress: () => setMuted(!muted),
|
|
151
138
|
children: muted ? /*#__PURE__*/_jsx(Image, {
|
|
152
139
|
source: MuteIcon,
|
|
153
|
-
style:
|
|
154
|
-
width: 24,
|
|
155
|
-
height: 24
|
|
156
|
-
}
|
|
140
|
+
style: styles.icon
|
|
157
141
|
}) : /*#__PURE__*/_jsx(Image, {
|
|
158
142
|
source: VolumeIcon,
|
|
159
|
-
style:
|
|
160
|
-
width: 24,
|
|
161
|
-
height: 24
|
|
162
|
-
}
|
|
143
|
+
style: styles.icon
|
|
163
144
|
})
|
|
164
145
|
})]
|
|
165
146
|
})
|
|
@@ -195,6 +176,10 @@ const styles = StyleSheet.create({
|
|
|
195
176
|
flexDirection: 'row',
|
|
196
177
|
alignItems: 'center'
|
|
197
178
|
},
|
|
179
|
+
icon: {
|
|
180
|
+
width: 24,
|
|
181
|
+
height: 24
|
|
182
|
+
},
|
|
198
183
|
playPause: {
|
|
199
184
|
padding: 4,
|
|
200
185
|
marginRight: 12
|
|
@@ -220,6 +205,17 @@ const styles = StyleSheet.create({
|
|
|
220
205
|
height: '100%',
|
|
221
206
|
backgroundColor: '#000'
|
|
222
207
|
},
|
|
208
|
+
bufferingSweep: {
|
|
209
|
+
position: 'absolute',
|
|
210
|
+
top: 0,
|
|
211
|
+
bottom: 0,
|
|
212
|
+
left: 0,
|
|
213
|
+
flexDirection: 'row'
|
|
214
|
+
},
|
|
215
|
+
bufferingSweepSlice: {
|
|
216
|
+
flex: 1,
|
|
217
|
+
backgroundColor: '#000'
|
|
218
|
+
},
|
|
223
219
|
volumeIcon: {
|
|
224
220
|
padding: 4,
|
|
225
221
|
marginRight: 12
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useMemo","useRef","useState","ActivityIndicator","Image","Platform","Pressable","StyleSheet","Text","View","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useMemo","useRef","useState","ActivityIndicator","Animated","Image","PanResponder","Platform","Pressable","StyleSheet","Text","View","useAudioTagContext","isPlaybackActive","formatTime","timeFromLocationX","useBufferingSweep","useExpandableTrackHeight","PlayIcon","PauseIcon","VolumeIcon","MuteIcon","jsx","_jsx","jsxs","_jsxs","TRACK_BAR_HEIGHT","TRACK_BAR_HEIGHT_PRESSED","TRACK_BAR_ANIM_MS","BUFFERING_SWEEP_MS","BUFFERING_SWEEP_WIDTH_RATIO","BUFFERING_SWEEP_SLICE_OPACITIES","AudioControls","ready","play","pause","seekToTime","playbackState","muted","setMuted","currentTime","duration","progressTrackAnim","scrubTime","setScrubTime","trackWidth","setTrackWidth","isBuffering","bufferingSweepStyle","scrub","startX","expand","collapse","current","panResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderTerminationRequest","onPanResponderGrant","event","s","nativeEvent","locationX","onPanResponderMove","_event","gestureState","dx","onPanResponderRelease","onPanResponderTerminate","onPlayPausePress","onProgressTrackLayout","width","layout","style","styles","container","children","color","size","displayTime","progress","topRow","playPause","onPress","source","icon","timeText","onLayout","progressTrack","panHandlers","trackInner","animatedStyle","trackFill","pointerEvents","bufferingSweep","map","opacity","index","bufferingSweepSlice","volumeIcon","flexDirection","alignSelf","minWidth","paddingVertical","paddingHorizontal","backgroundColor","borderRadius","borderWidth","borderColor","select","ios","shadowColor","shadowOffset","height","shadowOpacity","shadowRadius","android","elevation","alignItems","padding","marginRight","fontSize","flex","justifyContent","overflow","position","top","bottom","left","loadingRow","loadingText"],"sourceRoot":"../../../../src","sources":["Audio/controls/AudioControls.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useMemo } from 'react';
|
|
4
|
-
import {
|
|
3
|
+
import { useEffect, useMemo, useRef } from 'react';
|
|
4
|
+
import { Animated, Easing } from 'react-native';
|
|
5
5
|
export function formatTime(seconds) {
|
|
6
6
|
if (!Number.isFinite(seconds) || seconds < 0) {
|
|
7
7
|
return '0:00';
|
|
@@ -23,23 +23,52 @@ export function timeFromLocationX(locationX, trackWidth, durationSeconds) {
|
|
|
23
23
|
return pct * durationSeconds;
|
|
24
24
|
}
|
|
25
25
|
export function useExpandableTrackHeight(trackBarHeight, trackBarHeightPressed, trackBarAnimMs) {
|
|
26
|
-
const height =
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
26
|
+
const height = useRef(new Animated.Value(trackBarHeight)).current;
|
|
27
|
+
return useMemo(() => {
|
|
28
|
+
const animateTo = toValue => {
|
|
29
|
+
Animated.timing(height, {
|
|
30
|
+
toValue,
|
|
31
|
+
duration: trackBarAnimMs,
|
|
32
|
+
useNativeDriver: false
|
|
33
|
+
}).start();
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
animatedStyle: {
|
|
37
|
+
height,
|
|
38
|
+
borderRadius: Animated.divide(height, 2)
|
|
39
|
+
},
|
|
40
|
+
expand: () => animateTo(trackBarHeightPressed),
|
|
41
|
+
collapse: () => animateTo(trackBarHeight)
|
|
42
|
+
};
|
|
43
|
+
}, [height, trackBarHeight, trackBarHeightPressed, trackBarAnimMs]);
|
|
44
|
+
}
|
|
45
|
+
export function useBufferingSweep(isBuffering, trackWidth, sweepWidthRatio, sweepDurationMs) {
|
|
46
|
+
const sweepProgress = useRef(new Animated.Value(0)).current;
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (!isBuffering) {
|
|
49
|
+
return;
|
|
42
50
|
}
|
|
43
|
-
|
|
51
|
+
const sweep = Animated.loop(Animated.timing(sweepProgress, {
|
|
52
|
+
toValue: 1,
|
|
53
|
+
duration: sweepDurationMs,
|
|
54
|
+
easing: Easing.inOut(t => Easing.quad(t)),
|
|
55
|
+
useNativeDriver: true
|
|
56
|
+
}));
|
|
57
|
+
sweep.start();
|
|
58
|
+
return () => {
|
|
59
|
+
sweep.stop();
|
|
60
|
+
sweepProgress.setValue(0);
|
|
61
|
+
};
|
|
62
|
+
}, [isBuffering, sweepDurationMs, sweepProgress]);
|
|
63
|
+
const sweepWidth = trackWidth * sweepWidthRatio;
|
|
64
|
+
return {
|
|
65
|
+
width: sweepWidth,
|
|
66
|
+
transform: [{
|
|
67
|
+
translateX: sweepProgress.interpolate({
|
|
68
|
+
inputRange: [0, 1],
|
|
69
|
+
outputRange: [-sweepWidth, trackWidth]
|
|
70
|
+
})
|
|
71
|
+
}]
|
|
72
|
+
};
|
|
44
73
|
}
|
|
45
74
|
//# sourceMappingURL=audioControlUtils.js.map
|