Preview.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React, {
  2. SyntheticEvent, RefObject,
  3. } from 'react';
  4. import ReactMarkdown from 'react-markdown';
  5. import { RendererOptions } from '~/services/renderer/renderer';
  6. import { useEditorSettings } from '~/stores/editor';
  7. import RevisionBody from '../Page/RevisionBody';
  8. type Props = {
  9. rendererOptions: RendererOptions,
  10. markdown?: string,
  11. pagePath?: string,
  12. renderMathJaxOnInit?: boolean,
  13. onScroll?: (scrollTop: number) => void,
  14. }
  15. const Preview = React.forwardRef((props: Props, ref: RefObject<HTMLDivElement>): JSX.Element => {
  16. const {
  17. rendererOptions,
  18. markdown, pagePath,
  19. } = props;
  20. const { data: editorSettings } = useEditorSettings();
  21. return (
  22. <div
  23. className="page-editor-preview-body"
  24. ref={ref}
  25. onScroll={(event: SyntheticEvent<HTMLDivElement>) => {
  26. if (props.onScroll != null) {
  27. props.onScroll(event.currentTarget.scrollTop);
  28. }
  29. }}
  30. >
  31. <ReactMarkdown {...rendererOptions} >{markdown || ''}</ReactMarkdown>
  32. </div>
  33. );
  34. });
  35. Preview.displayName = 'Preview';
  36. export default Preview;