Preview.tsx 1.0 KB

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