|
|
@@ -4,12 +4,14 @@ import React, {
|
|
|
|
|
|
import type { IPagePopulatedToShowRevision } from '@growi/core';
|
|
|
import { isUsersHomepage } from '@growi/core/dist/utils/page-path-utils';
|
|
|
+import { parseSlideFrontmatterInMarkdown } from '@growi/presentation';
|
|
|
import dynamic from 'next/dynamic';
|
|
|
|
|
|
import { useShouldExpandContent } from '~/client/services/layout';
|
|
|
import type { RendererConfig } from '~/interfaces/services/renderer';
|
|
|
import { generateSSRViewOptions } from '~/services/renderer/renderer';
|
|
|
import {
|
|
|
+ useIsEnabledMarp,
|
|
|
useIsForbidden, useIsIdenticalPath, useIsNotCreatable,
|
|
|
} from '~/stores/context';
|
|
|
import { useSWRxCurrentPage, useIsNotFound } from '~/stores/page';
|
|
|
@@ -23,6 +25,7 @@ import { PageViewLayout } from '../Common/PageViewLayout';
|
|
|
import { PageAlerts } from '../PageAlert/PageAlerts';
|
|
|
import { PageContentFooter } from '../PageContentFooter';
|
|
|
import type { PageSideContentsProps } from '../PageSideContents';
|
|
|
+import { SlideViewer } from '../ReactMarkdownComponents/SlideViewer';
|
|
|
import { UserInfo } from '../User/UserInfo';
|
|
|
import type { UsersHomepageFooterProps } from '../UsersHomepageFooter';
|
|
|
|
|
|
@@ -73,6 +76,8 @@ export const PageView = (props: Props): JSX.Element => {
|
|
|
|
|
|
const shouldExpandContent = useShouldExpandContent(page);
|
|
|
|
|
|
+ const { data: enabledMarp } = useIsEnabledMarp();
|
|
|
+
|
|
|
|
|
|
// *************************** Auto Scroll ***************************
|
|
|
useEffect(() => {
|
|
|
@@ -131,12 +136,19 @@ export const PageView = (props: Props): JSX.Element => {
|
|
|
const rendererOptions = viewOptions ?? generateSSRViewOptions(rendererConfig, pagePath);
|
|
|
const markdown = page.revision.body;
|
|
|
|
|
|
+ const [marp, useSlide] = parseSlideFrontmatterInMarkdown(markdown);
|
|
|
+ const useMarp = enabledMarp && marp;
|
|
|
+
|
|
|
return (
|
|
|
<>
|
|
|
<PageContentsUtilities />
|
|
|
|
|
|
<div className="flex-expand-vert justify-content-between">
|
|
|
- <RevisionRenderer rendererOptions={rendererOptions} markdown={markdown} />
|
|
|
+ {
|
|
|
+ (viewOptions && (useMarp || useSlide))
|
|
|
+ ? (<SlideViewer marp={useMarp}>{markdown}</SlideViewer>)
|
|
|
+ : (<RevisionRenderer rendererOptions={rendererOptions} markdown={markdown} />)
|
|
|
+ }
|
|
|
|
|
|
{ !isIdenticalPathPage && !isNotFound && (
|
|
|
<div id="comments-container" ref={commentsContainerRef}>
|