Preview.jsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { Subscribe } from 'unstated';
  4. import RevisionBody from '../Page/RevisionBody';
  5. import EditorContainer from '../../services/EditorContainer';
  6. /**
  7. * Wrapper component for Page/RevisionBody
  8. */
  9. export default class Preview extends React.PureComponent {
  10. render() {
  11. return (
  12. <Subscribe to={[EditorContainer]}>
  13. { editorContainer => (
  14. // eslint-disable-next-line arrow-body-style
  15. <div
  16. className="page-editor-preview-body"
  17. ref={(elm) => {
  18. this.previewElement = elm;
  19. this.props.inputRef(elm);
  20. }}
  21. onScroll={(event) => {
  22. if (this.props.onScroll != null) {
  23. this.props.onScroll(event.target.scrollTop);
  24. }
  25. }}
  26. >
  27. <RevisionBody
  28. {...this.props}
  29. renderMathJaxInRealtime={editorContainer.state.previewOptions.renderMathJaxInRealtime}
  30. />
  31. </div>
  32. )}
  33. </Subscribe>
  34. );
  35. }
  36. }
  37. Preview.propTypes = {
  38. html: PropTypes.string,
  39. inputRef: PropTypes.func.isRequired, // for getting div element
  40. isMathJaxEnabled: PropTypes.bool,
  41. renderMathJaxOnInit: PropTypes.bool,
  42. onScroll: PropTypes.func,
  43. };