import { useMemo } from 'react';
import type { IPagePopulatedToShowRevision } from '@growi/core';
import { useSlidesByFrontmatter } from '@growi/presentation/dist/services';
import dynamic from 'next/dynamic';
import { PagePathNavTitle } from '~/components-universal/Common/PagePathNavTitle';
import type { RendererConfig } from '~/interfaces/services/renderer';
import type { IShareLinkHasId } from '~/interfaces/share-link';
import { useShouldExpandContent } from '~/services/layout/use-should-expand-content';
import { generateSSRViewOptions } from '~/services/renderer/renderer';
import { useIsNotFound } from '~/stores/page';
import { useViewOptions } from '~/stores/renderer';
import loggerFactory from '~/utils/logger';
import { PageContentFooter } from '../PageView/PageContentFooter';
import { PageViewLayout } from '../PageView/PageViewLayout';
import RevisionRenderer from '../PageView/RevisionRenderer';
import ShareLinkAlert from './ShareLinkAlert';
const logger = loggerFactory('growi:Page');
const PageSideContents = dynamic(() => import('../../components/PageSideContents').then(mod => mod.PageSideContents), { ssr: false });
const ForbiddenPage = dynamic(() => import('../../components/ForbiddenPage'), { ssr: false });
const SlideRenderer = dynamic(() => import('../../components/Page/SlideRenderer').then(mod => mod.SlideRenderer), { ssr: false });
type Props = {
pagePath: string,
rendererConfig: RendererConfig,
page?: IPagePopulatedToShowRevision,
shareLink?: IShareLinkHasId,
isExpired: boolean,
disableLinkSharing: boolean,
}
export const ShareLinkPageView = (props: Props): JSX.Element => {
const {
pagePath, rendererConfig,
page, shareLink,
isExpired, disableLinkSharing,
} = props;
const { data: isNotFoundMeta } = useIsNotFound();
const { data: viewOptions } = useViewOptions();
const shouldExpandContent = useShouldExpandContent(page);
const markdown = page?.revision?.body;
const isSlide = useSlidesByFrontmatter(markdown, rendererConfig.isEnabledMarp);
const isNotFound = isNotFoundMeta || page == null || shareLink == null;
const specialContents = useMemo(() => {
if (disableLinkSharing) {
return