UNPKG

@randy.tarampi/jsx

Version:

Some common JSX components for www.randytarampi.ca

122 lines (120 loc) 4.38 kB
import { LinkPost } from "@randy.tarampi/js"; import SchemaJsonLdComponent from "@randy.tarampi/schema-dot-org-json-ld-components"; import isHtml from "is-html"; import PropTypes from "prop-types"; import React, { Fragment } from "react"; import { Col, Row } from "react-materialize"; import { CampaignLink } from "./link"; import { PostBodyAsArrayComponent, PostBodyAsStringComponent, PostComponent, PostDateCreatedComponent, PostDatePublishedComponent, PostLocationComponent, PostTagsComponent, PostTitleComponent } from "./post"; export class LinkPostComponent extends PostComponent { get title() { return this.props.post.title || "🔗"; } render() { var { post } = this.props; return /*#__PURE__*/React.createElement(Row, { className: "post post--link", id: post.uid }, /*#__PURE__*/React.createElement(SchemaJsonLdComponent, { markup: post.toSchema() }), /*#__PURE__*/React.createElement(Col, { className: "post-metadata", s: 12, l: 4 }, /*#__PURE__*/React.createElement(PostTitleComponent, { post: post, title: this.title }), /*#__PURE__*/React.createElement(PostDatePublishedComponent, { post: post, label: "Shared:" }), /*#__PURE__*/React.createElement(PostDateCreatedComponent, { post: post }), /*#__PURE__*/React.createElement(PostLocationComponent, { post: post }), /*#__PURE__*/React.createElement(PostTagsComponent, { post: post })), /*#__PURE__*/React.createElement(Col, { className: "post-content", s: 12, l: 8 }, /*#__PURE__*/React.createElement(LinkPostTitleComponent, { post: post }), /*#__PURE__*/React.createElement(LinkPostBodyAsStringComponent, { post: post }), /*#__PURE__*/React.createElement(LinkPostBodyAsArrayComponent, { post: post }), /*#__PURE__*/React.createElement(PostBodyAsStringComponent, { post: post }), /*#__PURE__*/React.createElement(PostBodyAsArrayComponent, { post: post }))); } } LinkPostComponent.propTypes = { post: PropTypes.oneOfType([LinkPost].map(PropTypes.instanceOf)).isRequired }; export var LinkPostTitleComponent = (_ref) => { var { post } = _ref; return /*#__PURE__*/React.createElement("h3", { className: "post-link-title" }, /*#__PURE__*/React.createElement(CampaignLink, { className: "post-link-title__link", href: post.linkSourceUrl, text: post.linkTitle })); }; LinkPostTitleComponent.propTypes = { post: PropTypes.oneOfType([LinkPost].map(PropTypes.instanceOf)).isRequired }; export var LinkPostBodyAsStringComponent = (_ref2) => { var { post } = _ref2; return typeof post.linkBody === "string" && post.linkBody !== "" ? /*#__PURE__*/React.createElement("div", { className: "post-link-body" }, isHtml(post.linkBody) ? /*#__PURE__*/React.createElement("div", { className: "post-link-body__html" }, /*#__PURE__*/React.createElement("div", { dangerouslySetInnerHTML: { __html: post.linkBody } })) : /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement("span", { className: "post-link-body__text", dangerouslySetInnerHTML: { __html: post.linkBody } }))) : null; }; LinkPostBodyAsStringComponent.propTypes = { post: PropTypes.oneOfType([LinkPost].map(PropTypes.instanceOf)).isRequired }; export var LinkPostBodyAsArrayComponent = (_ref3) => { var { post } = _ref3; return Array.isArray(post.linkBody) ? /*#__PURE__*/React.createElement(Fragment, null, post.linkBody.map((htmlString, index) => { return /*#__PURE__*/React.createElement("div", { className: "post-link-body", key: "".concat(post.id, ":").concat(post.type, ":body:").concat(index) }, isHtml(htmlString) ? /*#__PURE__*/React.createElement("div", { className: "post-link-body__html" }, /*#__PURE__*/React.createElement("div", { dangerouslySetInnerHTML: { __html: htmlString } })) : /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement("span", { className: "post-link-body__text", dangerouslySetInnerHTML: { __html: htmlString } }))); })) : null; }; LinkPostBodyAsArrayComponent.propTypes = { post: PropTypes.oneOfType([LinkPost].map(PropTypes.instanceOf)).isRequired }; export default LinkPostComponent;