Preview.tsx 1.1 KB

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