react-native-video-player
Version:
A <VideoPlayer /> component for React Native with controls
47 lines (46 loc) • 1.69 kB
JavaScript
;
import { forwardRef, memo, useImperativeHandle, useState } from 'react';
import { StyleSheet, Text } from 'react-native';
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
const getDurationTime = duration => {
const padTimeValueString = value => value.toString().padStart(2, '0');
if (!Number.isFinite(duration)) return '';
const seconds = Math.floor(duration % 60);
const minutes = Math.floor(duration / 60 % 60);
const hours = Math.floor(duration / 3600 % 24);
return hours ? `${padTimeValueString(hours)}:${padTimeValueString(minutes)}:${padTimeValueString(seconds)}` : `${padTimeValueString(minutes)}:${padTimeValueString(seconds)}`;
};
const ProgressingDuration = /*#__PURE__*/forwardRef(({
duration,
durationTextCustomStyles
}, ref) => {
const [progress, setProgress] = useState(0);
useImperativeHandle(ref, () => ({
onProgress: setProgress
}));
return /*#__PURE__*/_jsx(Text, {
style: [styles.durationText, durationTextCustomStyles],
children: getDurationTime(progress * duration)
});
});
export const DurationText = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(({
duration,
durationTextCustomStyles
}, ref) => {
return /*#__PURE__*/_jsxs(_Fragment, {
children: [/*#__PURE__*/_jsx(ProgressingDuration, {
ref: ref,
duration: duration,
durationTextCustomStyles: durationTextCustomStyles
}), /*#__PURE__*/_jsx(Text, {
style: [styles.durationText, durationTextCustomStyles],
children: ` / ${getDurationTime(duration)}`
})]
});
}));
const styles = StyleSheet.create({
durationText: {
color: 'white'
}
});
//# sourceMappingURL=Duration.js.map