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

51 lines (50 loc) 1.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatTime = formatTime; exports.timeFromLocationX = timeFromLocationX; exports.useExpandableTrackHeight = useExpandableTrackHeight; var _react = require("react"); var _reactNativeReanimated = require("react-native-reanimated"); 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')}`; } } 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; } function useExpandableTrackHeight(trackBarHeight, trackBarHeightPressed, trackBarAnimMs) { const height = (0, _reactNativeReanimated.useSharedValue)(trackBarHeight); const animatedStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({ height: height.value, borderRadius: height.value / 2 })); return (0, _react.useMemo)(() => ({ animatedStyle, expand: () => { height.value = (0, _reactNativeReanimated.withTiming)(trackBarHeightPressed, { duration: trackBarAnimMs }); }, collapse: () => { height.value = (0, _reactNativeReanimated.withTiming)(trackBarHeight, { duration: trackBarAnimMs }); } }), [animatedStyle, height, trackBarHeight, trackBarHeightPressed, trackBarAnimMs]); } //# sourceMappingURL=audioControlUtils.js.map