/** * Copyright (c) 2017-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import React from 'react'; import Link from '@docusaurus/Link'; import Head from '@docusaurus/Head'; import classnames from 'classnames'; import Layout from '@theme/Layout'; // eslint-disable-line import DocusaurusContext from '@docusaurus/context'; import styles from './styles.module.css'; class BlogPost extends React.Component { renderPostHeader() { const {metadata} = this.context; if (!metadata) { return null; } const { date, author, authorURL, authorTitle, authorFBID, permalink, title, } = metadata; const blogPostDate = new Date(date); const month = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', ]; const authorImageURL = authorFBID ? `https://graph.facebook.com/${authorFBID}/picture/?height=200&width=200` : metadata.authorImageURL; return ( <header className={styles.postHeader}> <h1 className={styles.postHeaderTitle}> <Link to={permalink}>{title}</Link> </h1> <p className={styles.postMeta}> {month[blogPostDate.getMonth()]} {blogPostDate.getDay()},{' '} {blogPostDate.getFullYear()} </p> <div className={styles.authorBlock}> {author ? ( <p className={styles.authorName}> <a href={authorURL} target="_blank" rel="noreferrer noopener"> {author} </a> {authorTitle} </p> ) : null} {authorImageURL && ( <div className={classnames(styles.authorPhoto, { [styles.authorPhotoBig]: author && authorTitle, })}> <a href={authorURL} target="_blank" rel="noreferrer noopener"> <img src={authorImageURL} alt={author} /> </a> </div> )}{' '} </div> </header> ); } render() { const {metadata = {}, siteConfig = {}} = this.context; const {baseUrl, favicon} = siteConfig; const {language, title} = metadata; return ( <Layout> <Head defaultTitle={siteConfig.title}> {title && <title>{title}</title>} {favicon && <link rel="shortcut icon" href={baseUrl + favicon} />} {language && <html lang={language} />} </Head> {this.renderPostHeader()} {this.props.children} </Layout> ); } } BlogPost.contextType = DocusaurusContext; export default BlogPost;