import {guessPlayerProvider} from '@common/player/utils/guess-player-provider'; import {VideoPlayer} from '@common/player/ui/video-player/video-player'; import {VideoThumbnail} from '@app/videos/video-thumbnail'; import {IconButton} from '@common/ui/buttons/icon-button'; import {MediaPlayIcon} from '@common/icons/media/media-play'; import React, {memo, useEffect, useRef} from 'react'; import {Video} from '@app/titles/models/video'; import {Title} from '@app/titles/models/title'; import {Episode} from '@app/titles/models/episode'; import {VideoPlayerSkeleton} from '@app/videos/video-player-skeleton'; import {MediaItem} from '@common/player/media-item'; import {useLogVideoPlay} from '@app/videos/requests/use-log-video-play'; import {PlayerActions} from '@common/player/hooks/use-player-actions'; import {getWatchLink} from '@app/videos/watch-page/get-watch-link'; import {useNavigate} from '@common/utils/hooks/use-navigate'; import {isSameMedia} from '@common/player/utils/is-same-media'; import {Trans} from '@common/i18n/trans'; import {EpisodeSelector} from '@app/videos/watch-page/episode-selector'; interface Props { video: Video; relatedVideos?: Video[]; autoPlay?: boolean; title?: Title; episode?: Episode; mediaItemId?: string; logPlays?: boolean; showEpisodeSelector?: boolean; } export const SiteVideoPlayer = memo((props: Props) => { const {video, autoPlay, title, episode} = props; if ( video.type === 'video' || video.type === 'stream' || (video.type === 'embed' && video.src.includes('youtube')) ) { return ; } if (video.type === 'embed') { return ; } if (video.type === 'external') { return (
} />
window.open(video.src, '_blank')} >
); } return ; }); interface EmberPlayerProps { src: string; autoPlay?: boolean; } const EmbedPlayer = memo(({src, autoPlay}: EmberPlayerProps) => { let finalSrc = ''; try { const url = src.includes('
); } return (