Rev 3694 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useRef, useState } from 'react';import { IconButton } from '@mui/material';import Pause from '@mui/icons-material/Pause';import PlayArrowRounded from '@mui/icons-material/PlayArrowRounded';import VolumeOff from '@mui/icons-material/VolumeOff';import VolumeUp from '@mui/icons-material/VolumeUp';import styled, { css } from 'styled-components';import { REEL_SIZES } from '../../../constants/feed';const ReelContainer = styled.div`border-radius: 20px;background-color: #000;position: relative;overflow: hidden;cursor: pointer;video {width: 100%;height: 100%;object-fit: ${({ preview }) => (preview ? 'cover' : 'contain')};}${({ size }) =>size === REEL_SIZES.sm &&css`height: 150px;width: 50px;`}${({ size }) =>size === REEL_SIZES.md &&css`height: 250px;width: 150px;`}${({ size }) =>size === REEL_SIZES.lg &&css`height: 350px;width: 250px;`}`;const PlayButton = styled(IconButton)`position: absolute !important;top: 0.5rem;right: 0.5rem;`;const MuteButton = styled(PlayButton)`bottom: 0.5rem;top: inherit;`;const ReelItem = ({reel = {},autoPlay = false,controls = false,onSelect = () => {},onEnded = () => {},preview = false,size = REEL_SIZES.md}) => {const [isPlaying, setIsPlaying] = useState(autoPlay);const [isMuted, setIsMuted] = useState(false);const videoRef = useRef(null);const handleMute = () => {setIsMuted(!isMuted);};const handlePlay = () => {isPlaying ? videoRef.current.pause() : videoRef.current?.play();setIsPlaying(!isPlaying);};useEffect(() => {!reel.url && videoRef.current.pause();}, [reel]);return (<ReelContainer preview={preview} size={size} onClickCapture={() => onSelect(reel)}><videosrc={reel.url}autoPlay={autoPlay}muted={isMuted}controls={false}ref={videoRef}onEnded={onEnded}/>{controls ? (<><PlayButton onClickCapture={handlePlay}>{isPlaying ? <Pause /> : <PlayArrowRounded />}</PlayButton><MuteButton onClickCapture={handleMute}>{isMuted ? <VolumeOff /> : <VolumeUp />}</MuteButton></>) : null}</ReelContainer>);};export default ReelItem;