@randy.tarampi/jsx
Version:
Some common JSX components for www.randytarampi.ca
122 lines (120 loc) • 4.38 kB
JavaScript
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;