CommentHtml.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. /**
  4. *
  5. * @author Yuki Takei <yuki@weseek.co.jp>
  6. *
  7. * @export
  8. * @class Comment
  9. * @extends {React.Component}
  10. */
  11. export default class CommentHtml extends React.Component {
  12. constructor(props) {
  13. super(props);
  14. this.state = {
  15. html: 'HTML',
  16. };
  17. this.setCommentHtml = this.setCommentHtml.bind(this);
  18. this.renderHtml = this.renderHtml.bind(this);
  19. }
  20. setCommentHtml() {
  21. this.renderHtml(this.props.comment);
  22. }
  23. renderHtml(markdown) {
  24. var context = {
  25. markdown,
  26. dom: this.revisionBodyElement,
  27. };
  28. const crowiRenderer = this.props.crowiRenderer;
  29. const interceptorManager = this.props.crowi.interceptorManager;
  30. interceptorManager.process('prePreviewRender', context)
  31. .then(() => interceptorManager.process('prePreviewPreProcess', context))
  32. .then(() => {
  33. context.markdown = crowiRenderer.preProcess(context.markdown);
  34. })
  35. .then(() => interceptorManager.process('postPreviewPreProcess', context))
  36. .then(() => {
  37. var parsedHTML = crowiRenderer.process(context.markdown);
  38. context['parsedHTML'] = parsedHTML;
  39. })
  40. .then(() => interceptorManager.process('prePreviewPostProcess', context))
  41. .then(() => {
  42. context.parsedHTML = crowiRenderer.postProcess(context.parsedHTML, context.dom);
  43. })
  44. .then(() => interceptorManager.process('postPreviewPostProcess', context))
  45. .then(() => interceptorManager.process('prePreviewRenderHtml', context))
  46. .then(() => {
  47. // this.setState({ html: context.parsedHTML });
  48. })
  49. // process interceptors for post rendering
  50. .then(() => interceptorManager.process('postPreviewRenderHtml', context));
  51. }
  52. render() {
  53. console.log(`write`)
  54. this.setCommentHtml()
  55. return (
  56. <div>
  57. html
  58. </div>
  59. )
  60. }
  61. }
  62. CommentHtml.propTypes = {
  63. crowi: PropTypes.object.isRequired,
  64. crowiRenderer: PropTypes.object.isRequired,
  65. comment: PropTypes.string.isRequired,
  66. };