import { h } from 'preact';
import PropTypes from 'prop-types';
function getCoverImage(imageSrc) {
return (
);
}
function titleArea(previewResponse, version, articleState) {
if (version === 'help') {
// possibly something different here in future.
return '';
}
const tagArray = previewResponse.tags || articleState.tagList.split(', ');
let tags = '';
if (tagArray.length > 0 && tagArray[0].length > 0) {
tags = tagArray.map(tag => {
return (
{tag.length > 0 ? {tag}
: ''}
);
});
}
let coverImage = '';
if (previewResponse.cover_image && previewResponse.cover_image.length > 0) {
coverImage = getCoverImage(previewResponse.cover_image);
} else if (articleState.mainImage) {
coverImage = getCoverImage(articleState.mainImage);
}
const previewTitle = previewResponse.title || articleState.title || '';
return (
{coverImage}
44 ? 'articleform_titlepreviewsmall' : ''
}
>
{previewTitle}
{window.currentUser.name}
{tags}
);
}
const BodyPreview = ({ previewResponse, version, articleState }) => (
{titleArea(previewResponse, version, articleState)}
);
const previewResponsePropTypes = PropTypes.shape({
processed_html: PropTypes.string.isRequired,
title: PropTypes.string,
tags: PropTypes.array,
cover_image: PropTypes.string,
});
BodyPreview.propTypes = {
previewResponse: previewResponsePropTypes.isRequired,
version: PropTypes.string.isRequired,
articleState: PropTypes.shape({
id: PropTypes.number,
title: PropTypes.string,
tagList: PropTypes.string,
description: PropTypes.string,
canonicalUrl: PropTypes.string,
series: PropTypes.string,
allSeries: PropTypes.arrayOf(PropTypes.string),
bodyMarkdown: PropTypes.string,
published: PropTypes.bool,
previewShowing: PropTypes.bool,
helpShowing: PropTypes.bool,
previewResponse: previewResponsePropTypes,
helpHTML: PropTypes.string,
submitting: PropTypes.bool,
editing: PropTypes.bool,
imageManagementShowing: PropTypes.bool,
moreConfigShowing: PropTypes.bool,
mainImage: PropTypes.string,
organization: PropTypes.shape({
name: PropTypes.string.isRequired,
bg_color_hex: PropTypes.string.isRequired,
text_color_hex: PropTypes.string.isRequired,
profile_image_90: PropTypes.string.isRequired,
}),
postUnderOrg: PropTypes.bool,
errors: PropTypes.any,
edited: PropTypes.bool,
version: PropTypes.string,
}).isRequired,
};
export default BodyPreview;