import React, { useCallback } from 'react'; import type { PresentationProps } from '@growi/presentation'; import dynamic from 'next/dynamic'; import type { ReactMarkdownOptions } from 'react-markdown/lib/react-markdown'; import { Modal, ModalBody, } from 'reactstrap'; import { usePagePresentationModal } from '~/stores/modal'; import { useSWRxCurrentPage } from '~/stores/page'; import { usePresentationViewOptions } from '~/stores/renderer'; import { useNextThemes } from '~/stores/use-next-themes'; import styles from './PagePresentationModal.module.scss'; const Presentation = dynamic(() => import('@growi/presentation').then(mod => mod.Presentation), { ssr: false, loading: () => ( ), }); const PagePresentationModal = (): JSX.Element => { const { data: presentationModalData, close: closePresentationModal } = usePagePresentationModal(); const { isDarkMode } = useNextThemes(); const { data: currentPage } = useSWRxCurrentPage(); const { data: rendererOptions } = usePresentationViewOptions(); const requestFullscreen = useCallback(() => { document.documentElement.requestFullscreen(); }, []); const isOpen = presentationModalData?.isOpened ?? false; if (!isOpen) { return <>; } const markdown = currentPage?.revision.body; return (
{ rendererOptions != null && ( {markdown} ) }
); }; export default PagePresentationModal;