import { h } from 'preact'; import PropTypes from 'prop-types'; import { articlePropTypes } from '../common-prop-types/article-prop-types'; import { ArticleCoverImage, CommentsCount, CommentsList, ContentTitle, Meta, SaveButton, SearchSnippet, TagList, ReactionsCount, ReadingTime, Video, } from './components'; import { PodcastArticle } from './PodcastArticle'; export const Article = ({ article, isFeatured, isBookmarked, bookmarkClick, feedStyle, }) => { if (article && article.type_of === 'podcast_episodes') { return ; } const clickableClassList = [ 'crayons-story', 'crayons-story__top', 'crayons-story__body', 'crayons-story__indention', 'crayons-story__title', 'crayons-story__tags', 'crayons-story__bottom', 'crayons-story__tertiary', ]; const showCover = (isFeatured || (feedStyle === 'rich' && article.main_image)) && !article.cloudinary_video_url; return (
{ const { classList } = event.target; if (clickableClassList.includes(...classList)) { if (event.which > 1 || event.metaKey || event.ctrlKey) { // Indicates should open in _blank window.open(article.path, '_blank'); } else { const fullUrl = window.location.origin + article.path; // InstantClick deals with full urls InstantClick.preload(fullUrl); InstantClick.display(fullUrl); } } }} > {article.cloudinary_video_url &&
); }; Article.defaultProps = { isBookmarked: false, isFeatured: false, feedStyle: 'basic', }; Article.propTypes = { article: articlePropTypes.isRequired, isBookmarked: PropTypes.bool, isFeatured: PropTypes.bool, feedStyle: PropTypes.string, bookmarkClick: PropTypes.func.isRequired, };