import React from 'react'; import PropTypes from 'prop-types'; import { CartIcon, DownloadIcon, LyricsIcon, RefreshIcon } from './Icons'; import events, { EVENT, normalizePlayerId } from '../services/events'; const propTypes = { buyButtonsTarget: PropTypes.bool, buyUrl: PropTypes.string, downloadUrl: PropTypes.string, downloadFilename: PropTypes.string, onTrackLoop: PropTypes.func, isLooping: PropTypes.bool, displayBuyButtons: PropTypes.bool, onOpenTrackLyrics: PropTypes.func, playbackRate: PropTypes.number, setPlaybackRate: PropTypes.func, allowPlaybackRate: PropTypes.bool, isPlaying: PropTypes.bool, track: PropTypes.shape({ audio: PropTypes.string.isRequired, }).isRequired, playerId: PropTypes.string, }; const TrackButtons = ({ buyButtonsTarget, buyUrl, downloadUrl, downloadFilename, onTrackLoop, isLooping, displayBuyButtons, onOpenTrackLyrics, setPlaybackRate, playbackRate, allowPlaybackRate, isPlaying, track, playerId, }) => { if ( buyUrl == null && downloadUrl == null && !onTrackLoop && !onOpenTrackLyrics ) { return null; } return (
{buyUrl && displayBuyButtons && ( // eslint-disable-next-line react/jsx-no-target-blank )} {downloadUrl && downloadFilename && displayBuyButtons && ( { events.eventTrack({ event: EVENT.DOWNLOAD, trackUrl: track.audio, playerId: normalizePlayerId(playerId), }); }} aria-label={aiStrings.download_track} title={aiStrings.download_track} > )} {onOpenTrackLyrics && ( // eslint-disable-next-line { event.preventDefault(); onOpenTrackLyrics(); }} > )} {allowPlaybackRate && isPlaying && ( { event.preventDefault(); setPlaybackRate(); }} > ×{playbackRate} )} {onTrackLoop && ( // eslint-disable-next-line { event.preventDefault(); onTrackLoop(); }} > )}
); }; TrackButtons.propTypes = propTypes; export default TrackButtons;