Rev 3694 | Ir a la última revisión | 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,PlayArrowRounded,VolumeOff,VolumeUp} from '@mui/icons-material'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 (<ReelContainerpreview={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