import { observer } from "mobx-react"; import { useParams } from "next/navigation"; // plane editor import { DocumentReadOnlyEditorWithRef, TDisplayConfig } from "@plane/editor"; // plane types import { IUserLite, TPageVersion } from "@plane/types"; // plane ui import { Loader } from "@plane/ui"; // hooks import { useMember, useMention, usePage, useUser } from "@/hooks/store"; import { usePageFilters } from "@/hooks/use-page-filters"; // plane web hooks import { useIssueEmbed } from "@/plane-web/hooks/use-issue-embed"; type Props = { activeVersion: string | null; isCurrentVersionActive: boolean; versionDetails: TPageVersion | undefined; }; export const PagesVersionEditor: React.FC = observer((props) => { const { activeVersion, isCurrentVersionActive, versionDetails } = props; // params const { workspaceSlug, projectId, pageId } = useParams(); // store hooks const { data: currentUser } = useUser(); const { getUserDetails, project: { getProjectMemberIds }, } = useMember(); const { description_html } = usePage(pageId.toString() ?? ""); // derived values const projectMemberIds = projectId ? getProjectMemberIds(projectId.toString()) : []; const projectMemberDetails = projectMemberIds?.map((id) => getUserDetails(id) as IUserLite); // issue-embed const { issueEmbedProps } = useIssueEmbed(workspaceSlug?.toString() ?? "", projectId?.toString() ?? ""); // use-mention const { mentionHighlights } = useMention({ workspaceSlug: workspaceSlug?.toString() ?? "", projectId: projectId?.toString() ?? "", members: projectMemberDetails, user: currentUser ?? undefined, }); // page filters const { fontSize, fontStyle } = usePageFilters(); const displayConfig: TDisplayConfig = { fontSize, fontStyle, }; if (!isCurrentVersionActive && !versionDetails) return (
); return (

"} containerClassName="p-0 pb-64 border-none" displayConfig={displayConfig} editorClassName="pl-10" mentionHandler={{ highlights: mentionHighlights, }} embedHandler={{ issue: { widgetCallback: issueEmbedProps.widgetCallback, }, }} /> ); });