PageBody.js 898 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. export default class PageBody extends React.Component {
  4. constructor(props) {
  5. super(props);
  6. this.crowiRenderer = window.crowiRenderer; // FIXME
  7. this.getMarkupHTML = this.getMarkupHTML.bind(this);
  8. }
  9. getMarkupHTML() {
  10. let body = this.props.pageBody;
  11. if (body === '') {
  12. body = this.props.page.revision.body;
  13. }
  14. return { __html: this.crowiRenderer.render(body, this.props.rendererOptions) };
  15. }
  16. render() {
  17. const parsedBody = this.getMarkupHTML();
  18. return (
  19. <div
  20. className="content"
  21. dangerouslySetInnerHTML={parsedBody}
  22. />
  23. );
  24. }
  25. }
  26. PageBody.propTypes = {
  27. page: PropTypes.object.isRequired,
  28. pageBody: PropTypes.string,
  29. rendererOptions: React.PropTypes.object,
  30. };
  31. PageBody.defaultProps = {
  32. page: {},
  33. pageBody: '',
  34. rendererOptions: {},
  35. };