* tidy * Add title to HTML export * fix: Add compatability for documents without collab state * Add HTML download option to UI * docs * fix nodes that required document to render * Refactor to allow for styling of HTML export * div>article for easier programatic content extraction * Allow DocumentHelper to be used with Revisions * Add revisions.diff endpoint, first version * Allow arbitrary revisions to be compared * test * HTML driven revision viewer * fix: Dark mode styles for document diffs * Add revision restore button to header * test * Support RTL languages in revision history viewer * fix: RTL support Remove unneccessary API requests * Prefetch revision data * Animate history sidebar * fix: Cannot toggle history from timestamp fix: Animation on each revision click * Clarify currently editing history item
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import { observer } from "mobx-react";
|
|
import * as React from "react";
|
|
import EditorContainer from "@shared/editor/components/Styles";
|
|
import Document from "~/models/Document";
|
|
import Revision from "~/models/Revision";
|
|
import DocumentMetaWithViews from "~/components/DocumentMetaWithViews";
|
|
import { Props as EditorProps } from "~/components/Editor";
|
|
import Flex from "~/components/Flex";
|
|
import { documentUrl } from "~/utils/routeHelpers";
|
|
|
|
type Props = Omit<EditorProps, "extensions"> & {
|
|
id: string;
|
|
document: Document;
|
|
revision: Revision;
|
|
isDraft: boolean;
|
|
children?: React.ReactNode;
|
|
};
|
|
|
|
/**
|
|
* Displays revision HTML pre-rendered on the server.
|
|
*/
|
|
function RevisionViewer(props: Props) {
|
|
const { document, isDraft, shareId, children, revision } = props;
|
|
|
|
return (
|
|
<Flex auto column>
|
|
<h1 dir={revision.dir}>{revision.title}</h1>
|
|
{!shareId && (
|
|
<DocumentMetaWithViews
|
|
isDraft={isDraft}
|
|
document={document}
|
|
to={documentUrl(document)}
|
|
rtl={revision.rtl}
|
|
/>
|
|
)}
|
|
<EditorContainer
|
|
dangerouslySetInnerHTML={{ __html: revision.html }}
|
|
dir={revision.dir}
|
|
rtl={revision.rtl}
|
|
/>
|
|
{children}
|
|
</Flex>
|
|
);
|
|
}
|
|
|
|
export default observer(RevisionViewer);
|