UNPKG

react-native-audio-api

Version:

react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification

45 lines (44 loc) 1.47 kB
"use strict"; import { useMemo } from 'react'; import { useSharedValue, useAnimatedStyle, withTiming } from 'react-native-reanimated'; export function formatTime(seconds) { if (!Number.isFinite(seconds) || seconds < 0) { return '0:00'; } const h = Math.floor(seconds / 3600); const m = Math.floor(seconds % 3600 / 60); const s = Math.floor(seconds % 60); if (h > 0) { return `${h}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`; } else { return `${m}:${s.toString().padStart(2, '0')}`; } } export function timeFromLocationX(locationX, trackWidth, durationSeconds) { if (trackWidth <= 0 || durationSeconds <= 0) { return 0; } const pct = Math.max(0, Math.min(1, locationX / trackWidth)); return pct * durationSeconds; } export function useExpandableTrackHeight(trackBarHeight, trackBarHeightPressed, trackBarAnimMs) { const height = useSharedValue(trackBarHeight); const animatedStyle = useAnimatedStyle(() => ({ height: height.value, borderRadius: height.value / 2 })); return useMemo(() => ({ animatedStyle, expand: () => { height.value = withTiming(trackBarHeightPressed, { duration: trackBarAnimMs }); }, collapse: () => { height.value = withTiming(trackBarHeight, { duration: trackBarAnimMs }); } }), [animatedStyle, height, trackBarHeight, trackBarHeightPressed, trackBarAnimMs]); } //# sourceMappingURL=audioControlUtils.js.map