/** * Copyright (c) 2017-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ const React = require("react"); const classNames = require("classnames"); const Marked = require("./Marked.js"); class GridBlock extends React.Component { renderBlock(block) { const blockClasses = classNames("blockElement", this.props.className, { alignCenter: this.props.align === "center", alignRight: this.props.align === "right", fourByGridBlock: this.props.layout === "fourColumn", imageAlignBottom: block.image && block.imageAlign === "bottom", imageAlignSide: block.image && (block.imageAlign === "left" || block.imageAlign === "right"), imageAlignTop: block.image && block.imageAlign === "top", threeByGridBlock: this.props.layout === "threeColumn", twoByGridBlock: this.props.layout === "twoColumn" }); const topLeftImage = (block.imageAlign === "top" || block.imageAlign === "left") && this.renderBlockImage(block.image); const bottomRightImage = (block.imageAlign === "bottom" || block.imageAlign === "right") && this.renderBlockImage(block.image); return (
{topLeftImage}
{this.renderBlockTitle(block.title)} {block.content}
{bottomRightImage}
); } renderBlockImage(image) { if (image) { return (
); } else { return null; } } renderBlockTitle(title) { if (title) { return (

{title}

); } else { return null; } } render() { return (
{this.props.contents.map(this.renderBlock, this)}
); } } GridBlock.defaultProps = { align: "left", contents: [], imagealign: "top", layout: "twoColumn" }; module.exports = GridBlock;