app/ItemView/PreviewPlayer.tsx (43 lines of code) (raw):
import React, { useState, useEffect } from "react";
import { Paper } from "@material-ui/core";
interface PreviewPlayerProps {
proxyUri?: string;
mediaType: string;
autoplay?: boolean;
}
const PreviewPlayer: React.FC<PreviewPlayerProps> = (props) => {
const playerForMediaType = () => {
if (props.mediaType.startsWith("video")) {
return (
<video
className="media-player video-player"
src={props.proxyUri}
controls={true}
autoPlay={props.autoplay ?? true}
style={{ maxWidth: "95vw" }}
/>
);
} else if (props.mediaType.startsWith("audio")) {
return (
<audio
className="media-player audio-player"
src={props.proxyUri}
controls={true}
autoPlay={props.autoplay ?? true}
style={{ maxWidth: "95vw" }}
/>
);
} else if (props.mediaType.startsWith("image")) {
return (
<Paper elevation={5}>
<img
className="media-player image-view"
src={props.proxyUri}
alt="Image preview"
style={{ maxWidth: "95vw" }}
/>
</Paper>
);
}
};
return <div className="player-container">{playerForMediaType()}</div>;
};
export default PreviewPlayer;