4 changed files with 71 additions and 8 deletions
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
import { useVideoPlayerState } from "../VideoContext"; |
||||
|
||||
export function LoadingControl() { |
||||
const { videoState } = useVideoPlayerState(); |
||||
|
||||
if (!videoState.isLoading) return null; |
||||
|
||||
return <p>Loading...</p>; |
||||
} |
||||
@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
|
||||
import { useVideoPlayerState } from "../VideoContext"; |
||||
|
||||
function durationExceedsHour(secs: number): boolean { |
||||
return secs > 60 * 60; |
||||
} |
||||
|
||||
function formatSeconds(secs: number, showHours = false): string { |
||||
let time = secs; |
||||
const seconds = time % 60; |
||||
|
||||
time /= 60; |
||||
const minutes = time % 60; |
||||
|
||||
time /= 60; |
||||
const hours = minutes % 60; |
||||
|
||||
const minuteString = `${Math.round(minutes) |
||||
.toString() |
||||
.padStart(2)}:${Math.round(seconds).toString().padStart(2, "0")}`;
|
||||
|
||||
if (!showHours) return minuteString; |
||||
return `${Math.round(hours).toString()}:${minuteString}`; |
||||
} |
||||
|
||||
export function TimeControl() { |
||||
const { videoState } = useVideoPlayerState(); |
||||
const hasHours = durationExceedsHour(videoState.duration); |
||||
const time = formatSeconds(videoState.time, hasHours); |
||||
const duration = formatSeconds(videoState.duration, hasHours); |
||||
|
||||
return ( |
||||
<p> |
||||
{time} / {duration} |
||||
</p> |
||||
); |
||||
} |
||||
Loading…
Reference in new issue