diff --git a/src/main/Thumbnail.tsx b/src/main/Thumbnail.tsx index 7d42a781b..6fb8c90af 100644 --- a/src/main/Thumbnail.tsx +++ b/src/main/Thumbnail.tsx @@ -91,6 +91,7 @@ const Thumbnail : React.FC = () => { const bottomStyle = css({ display: 'flex', + width: '100%', flexDirection: 'column', alignItems: 'center', }) @@ -100,13 +101,15 @@ const Thumbnail : React.FC = () => {
{t('thumbnail.title')}
- + {/* use maxHeightInPixel to make video players the same size*/} +
{ */ const ThumbnailTable : React.FC<{ inputRefs: any, + generateRefs: React.MutableRefObject, generate: any, upload: any, uploadCallback: any, discard: any, -}> = ({inputRefs, generate, upload, uploadCallback, discard}) => { +}> = ({inputRefs, generateRefs, generate, upload, uploadCallback, discard}) => { const videoTracks = useSelector(selectVideos) const thumbnailTableStyle = css({ display: 'flex', + width: '100%', flexDirection: 'row', justifyContent: 'center', ...(flexGapReplacementStyle(10, false)), @@ -184,6 +189,7 @@ const ThumbnailTable : React.FC<{ track={track} index={index} inputRefs={inputRefs} + generateRef={generateRefs.current[index]} generate={generate} upload={upload} uploadCallback={uploadCallback} @@ -209,15 +215,19 @@ const ThumbnailTableRow: React.FC<{ track: Track, index: number, inputRefs: any, + generateRef: any, generate: any, upload: any, uploadCallback: any, discard: any, -}> = ({track, index, inputRefs, generate, upload, uploadCallback, discard}) => { +}> = ({track, index, inputRefs, generateRef, generate, upload, uploadCallback, discard}) => { const { t } = useTranslation() const theme = useTheme(); + // The "+40" comes from padding that is not included in the "getWidth" function + const videoWidth = generateRef ? generateRef.getWidth() + 40 : undefined + const renderPriority = (thumbnailPriority: number) => { if (isNaN(thumbnailPriority)) { return "" @@ -233,7 +243,7 @@ const ThumbnailTableRow: React.FC<{ } return ( -
+
{track.flavor.type + renderPriority(track.thumbnailPriority)}
@@ -503,7 +513,7 @@ const ThumbnailTableSingleRow: React.FC<{ const theme = useTheme(); return ( -
+
{t("thumbnailSimple.rowTitle")}
@@ -586,9 +596,11 @@ const ThumbnailButtonsSimple : React.FC<{ /** * CSS shared between multi and simple display mode */ -const thumbnailTableRowStyle = css({ +const thumbnailTableRowStyle = (maxWidth: number) => css({ display: 'flex', flexDirection: 'column', + width: '100%', + maxWidth: `${maxWidth}px`, }) const thumbnailTableRowTitleStyle = css({ diff --git a/src/main/VideoPlayers.tsx b/src/main/VideoPlayers.tsx index 367c770ca..1375f67b9 100644 --- a/src/main/VideoPlayers.tsx +++ b/src/main/VideoPlayers.tsx @@ -24,7 +24,7 @@ import { useTheme } from "../themes"; import { backgroundBoxStyle, flexGapReplacementStyle } from '../cssStyles' -const VideoPlayers: React.FC<{refs: any, widthInPercent?: number}> = ({refs, widthInPercent = 100}) => { +const VideoPlayers: React.FC<{refs: any, widthInPercent?: number, maxHeightInPixel?: number}> = ({refs, widthInPercent = 100, maxHeightInPixel = 300}) => { const videoURLs = useSelector(selectVideoURL) const videoCount = useSelector(selectVideoCount) @@ -37,7 +37,7 @@ const VideoPlayers: React.FC<{refs: any, widthInPercent?: number}> = ({refs, wid borderRadius: '5px', ...(flexGapReplacementStyle(10, false)), - maxHeight: '300px', + maxHeight: maxHeightInPixel + 'px', }); // Initialize video players @@ -325,6 +325,9 @@ export const VideoPlayer = React.forwardRef( canvasContext.drawImage(video, 0, 0); return canvas.toDataURL('image/png') } + }, + getWidth() { + return (ref.current?.getInternalPlayer() as HTMLVideoElement).clientWidth } }));