RevisionRenderer.tsx 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. import React from 'react';
  2. import ReactMarkdown from 'react-markdown';
  3. import { RendererOptions } from '~/services/renderer/renderer';
  4. import loggerFactory from '~/utils/logger';
  5. const logger = loggerFactory('components:Page:RevisionRenderer');
  6. type Props = {
  7. rendererOptions: RendererOptions,
  8. markdown: string,
  9. additionalClassName?: string,
  10. }
  11. const RevisionRenderer = React.memo((props: Props): JSX.Element => {
  12. const {
  13. rendererOptions, markdown, additionalClassName,
  14. } = props;
  15. return (
  16. <ReactMarkdown
  17. data-testid="wiki"
  18. {...rendererOptions}
  19. className={`wiki ${additionalClassName ?? ''}`}
  20. >
  21. {markdown}
  22. </ReactMarkdown>
  23. );
  24. // const [html, setHtml] = useState('');
  25. // const { data: interceptorManager } = useInterceptorManager();
  26. // const { data: editorSettings } = useEditorSettings();
  27. // const { data: currentPathname } = useCurrentPathname();
  28. // const currentRenderingContext = useMemo(() => {
  29. // return {
  30. // markdown,
  31. // parsedHTML: '',
  32. // pagePath,
  33. // renderDrawioInRealtime: editorSettings?.renderDrawioInRealtime,
  34. // currentPathname: decodeURIComponent(currentPathname ?? '/'),
  35. // };
  36. // }, [editorSettings?.renderDrawioInRealtime, markdown, pagePath]);
  37. // const renderHtml = useCallback(async() => {
  38. // if (interceptorManager == null) {
  39. // return;
  40. // }
  41. // const context = currentRenderingContext;
  42. // await interceptorManager.process('preRender', context);
  43. // await interceptorManager.process('prePreProcess', context);
  44. // context.markdown = growiRenderer.preProcess(context.markdown, context);
  45. // await interceptorManager.process('postPreProcess', context);
  46. // context.parsedHTML = growiRenderer.process(context.markdown, context);
  47. // await interceptorManager.process('prePostProcess', context);
  48. // context.parsedHTML = growiRenderer.postProcess(context.parsedHTML, context);
  49. // const isMarkdownEmpty = context.markdown.trim().length === 0;
  50. // if (highlightKeywords != null && !isMarkdownEmpty) {
  51. // context.parsedHTML = getHighlightedBody(context.parsedHTML, highlightKeywords);
  52. // }
  53. // await interceptorManager.process('postPostProcess', context);
  54. // await interceptorManager.process('preRenderHtml', context);
  55. // setHtml(context.parsedHTML);
  56. // }, [currentRenderingContext, growiRenderer, highlightKeywords, interceptorManager]);
  57. // useEffect(() => {
  58. // if (interceptorManager == null) {
  59. // return;
  60. // }
  61. // renderHtml()
  62. // .then(() => {
  63. // // const HeaderLink = document.getElementsByClassName('revision-head-link');
  64. // // const HeaderLinkArray = Array.from(HeaderLink);
  65. // // addSmoothScrollEvent(HeaderLinkArray as HTMLAnchorElement[], blinkElem);
  66. // // interceptorManager.process('postRenderHtml', currentRenderingContext);
  67. // });
  68. // }, [currentRenderingContext, interceptorManager, renderHtml]);
  69. // const config = props.appContainer.getConfig();
  70. // const isMathJaxEnabled = !!config.env.MATHJAX;
  71. // return (
  72. // <RevisionBody
  73. // html={html}
  74. // isMathJaxEnabled={isMathJaxEnabled}
  75. // additionalClassName={props.additionalClassName}
  76. // renderMathJaxOnInit
  77. // />
  78. // );
  79. // const [html, setHtml] = useState('');
  80. // const { data: interceptorManager } = useInterceptorManager();
  81. // const { data: editorSettings } = useEditorSettings();
  82. // const { data: currentPathname } = useCurrentPathname();
  83. // const currentRenderingContext = useMemo(() => {
  84. // return {
  85. // markdown,
  86. // parsedHTML: '',
  87. // pagePath,
  88. // renderDrawioInRealtime: editorSettings?.renderDrawioInRealtime,
  89. // currentPathname: decodeURIComponent(currentPathname ?? '/'),
  90. // };
  91. // }, [editorSettings?.renderDrawioInRealtime, markdown, pagePath]);
  92. // const renderHtml = useCallback(async() => {
  93. // if (interceptorManager == null) {
  94. // return;
  95. // }
  96. // const context = currentRenderingContext;
  97. // await interceptorManager.process('preRender', context);
  98. // await interceptorManager.process('prePreProcess', context);
  99. // context.markdown = growiRenderer.preProcess(context.markdown, context);
  100. // await interceptorManager.process('postPreProcess', context);
  101. // context.parsedHTML = growiRenderer.process(context.markdown, context);
  102. // await interceptorManager.process('prePostProcess', context);
  103. // context.parsedHTML = growiRenderer.postProcess(context.parsedHTML, context);
  104. // const isMarkdownEmpty = context.markdown.trim().length === 0;
  105. // if (highlightKeywords != null && !isMarkdownEmpty) {
  106. // context.parsedHTML = getHighlightedBody(context.parsedHTML, highlightKeywords);
  107. // }
  108. // await interceptorManager.process('postPostProcess', context);
  109. // await interceptorManager.process('preRenderHtml', context);
  110. // setHtml(context.parsedHTML);
  111. // }, [currentRenderingContext, growiRenderer, highlightKeywords, interceptorManager]);
  112. // useEffect(() => {
  113. // if (interceptorManager == null) {
  114. // return;
  115. // }
  116. // renderHtml()
  117. // .then(() => {
  118. // // const HeaderLink = document.getElementsByClassName('revision-head-link');
  119. // // const HeaderLinkArray = Array.from(HeaderLink);
  120. // // addSmoothScrollEvent(HeaderLinkArray as HTMLAnchorElement[], blinkElem);
  121. // // interceptorManager.process('postRenderHtml', currentRenderingContext);
  122. // });
  123. // }, [currentRenderingContext, interceptorManager, renderHtml]);
  124. // return (
  125. // <RevisionBody
  126. // html={html}
  127. // additionalClassName={props.additionalClassName}
  128. // renderMathJaxOnInit
  129. // />
  130. // );
  131. });
  132. RevisionRenderer.displayName = 'RevisionRenderer';
  133. export default RevisionRenderer;