/* eslint-disable react/prop-types */ import { h, Fragment } from 'preact' import { useState, useEffect } from 'preact/hooks' import { isFuture, isPast } from 'date-fns' import { H1 } from '../Text' import Markdown from '../Markdown' import translations from '../../data/strings' import InfoLayout from '../InfoLayout' import VideoEmbed from '../VideoEmbed' import { VideoCard, Title, InfoContent, PositionedCross as CrossSvg, Row, ActionButton as Button, Img, Trailer, } from './styles' import intro from '../../data/intro.md' import credits from '../../data/credits.md' import { colours } from '../../assets/theme' import config from '../../data/config' import trailerThumb from '../../assets/img/main_thumb.png' const Info = ({ data, loading, infoActive, setInfoActive, currentVideo }) => { const trailerUrl = `https://www.youtube-nocookie.com/embed/${config.seriesTrailerId}?autoplay=1&vq=hd1080` const [embedURL, setEmbedUrl] = useState('') const onClickTrailerButton = () => { setEmbedUrl(trailerUrl) } const deactivateEmbed = () => { setEmbedUrl('') } const pastStreams = data && data.length ? data.filter(feeditem => isPast(new Date(feeditem.end))) : [] const futureStreams = data && data.length ? data .filter( feeditem => feeditem.id !== (currentVideo && currentVideo.id) && isFuture(new Date(feeditem.start)) ) .sort( (a, b) => // Turn your strings into dates, and then subtract them // to get a value that is either negative, positive, or zero. new Date(a.start) - new Date(b.start) ) : [] const dateString = `${new Date()}` let tzShort = // Works for the majority of modern browsers dateString.match(/\(([^\)]+)\)$/) || // IE outputs date strings in a different format: dateString.match(/([A-Z]+) [\d]{4}$/) if (tzShort) { // Old Firefox uses the long timezone name (e.g., "Central // Daylight Time" instead of "CDT") tzShort = tzShort[1].match(/[A-Z]/g).join('') } return ( {embedURL ? ( ) : null} {infoActive && ( setInfoActive(false)} /> )} {!loading && (

The Para-Real:

Finding the Future in Unexpected Places

{intro}
{currentVideo && ( {translations.en.nowPlaying}: )} {futureStreams.length ? ( {translations.en.nextStream}: {futureStreams.map(feeditem => ( ))} ) : null} {pastStreams.length ? ( {translations.en.pastStream}: {pastStreams.map(feeditem => ( setEmbedUrl(`${config.peertube_root}${feeditem.embedPath}`) } {...feeditem} /> ))} ) : null} {credits}
)}
) } export default Info