import React from 'react'; import PropTypes from 'prop-types'; import { useMediaItem } from '../../utils/hooks/'; import { PositiveIntegerOrZero } from '../../utils/helpers/'; import { MediaDurationInfo } from '../../utils/classes/'; import { MediaPlaylistOptions } from '../media-playlist-options/MediaPlaylistOptions'; import { MediaItemDuration, MediaItemPlaylistIndex, itemClassname } from './includes/items/'; import { MediaItem } from './MediaItem'; export function MediaItemAudio(props) { const type = props.type; const [titleComponent, descriptionComponent, thumbnailUrl, UnderThumbWrapper, editMediaComponent, metaComponents] = useMediaItem({ ...props, type }); const _MediaDurationInfo = new MediaDurationInfo(); _MediaDurationInfo.update(props.duration); const duration = _MediaDurationInfo.ariaLabel(); const durationStr = _MediaDurationInfo.toString(); const durationISO8601 = _MediaDurationInfo.ISO8601(); function thumbnailComponent() { const attr = { key: 'item-thumb', href: props.link, title: props.title, tabIndex: '-1', 'aria-hidden': true, className: 'item-thumb' + (!thumbnailUrl ? ' no-thumb' : ''), style: !thumbnailUrl ? null : { backgroundImage: "url('" + thumbnailUrl + "')" }, }; return ( {props.inPlaylistView ? null : ( )} ); } function playlistOrderNumberComponent() { return props.hidePlaylistOrderNumber ? null : ( ); } function playlistOptionsComponent() { let mediaId = props.link.split('=')[1]; mediaId = mediaId.split('&')[0]; return props.hidePlaylistOptions ? null : ( ); } const containerClassname = itemClassname( 'item ' + type + '-item', props.class_name.trim(), props.playlistOrder === props.playlistActiveItem ); return (
{playlistOrderNumberComponent()}
{editMediaComponent()} {thumbnailComponent()} {titleComponent()} {metaComponents()} {descriptionComponent()} {playlistOptionsComponent()}
); } MediaItemAudio.propTypes = { ...MediaItem.propTypes, type: PropTypes.string.isRequired, duration: PositiveIntegerOrZero, hidePlaylistOptions: PropTypes.bool, hasMediaViewer: PropTypes.bool, hasMediaViewerDescr: PropTypes.bool, playlist_id: PropTypes.string, }; MediaItemAudio.defaultProps = { ...MediaItem.defaultProps, type: 'audio', duration: 0, hidePlaylistOptions: true, hasMediaViewer: false, hasMediaViewerDescr: false, };