import React from 'react'; import type { IRevisionHasPageId } from '@growi/core'; import { returnPathForURL } from '@growi/core/dist/utils/path-utils'; import { createPatch } from 'diff'; import { html, Diff2HtmlConfig } from 'diff2html'; import { useTranslation } from 'next-i18next'; import Link from 'next/link'; import urljoin from 'url-join'; import UserDate from '../User/UserDate'; import styles from './RevisionDiff.module.scss'; import 'diff2html/bundles/css/diff2html.min.css'; type RevisioinDiffProps = { currentRevision: IRevisionHasPageId, previousRevision: IRevisionHasPageId, revisionDiffOpened: boolean, currentPageId: string, currentPagePath: string, onClose: () => void, } export const RevisionDiff = (props: RevisioinDiffProps): JSX.Element => { const { t } = useTranslation(); const { currentRevision, previousRevision, revisionDiffOpened, currentPageId, currentPagePath, onClose, } = props; const previousText = (currentRevision._id === previousRevision._id) ? '' : previousRevision.body; const patch = createPatch( currentRevision.pageId, // currentRevision.path is DEPRECATED previousText, currentRevision.body, ); const option: Diff2HtmlConfig = { outputFormat: 'side-by-side', drawFileList: false, }; const diffViewHTML = (currentRevision.body && previousRevision.body && revisionDiffOpened) ? html(patch, option) : ''; const diffView = { __html: diffViewHTML }; return (