fix: editor sync changes (#8306)

* chore: upate function declarations

* chore: formatted files
This commit is contained in:
sriram veeraghanta
2025-12-11 13:01:25 +05:30
committed by GitHub
parent f1761c65b5
commit 5e621cf620
8 changed files with 86 additions and 79 deletions

View File

@@ -6,7 +6,8 @@ type Props = {
onDismiss?: () => void; onDismiss?: () => void;
}; };
export const ContentLimitBanner: React.FC<Props> = ({ className, onDismiss }) => ( export function ContentLimitBanner({ className, onDismiss }: Props) {
return (
<div <div
className={cn( className={cn(
"flex items-center gap-2 bg-custom-background-80 border-b border-custom-border-200 px-4 py-2.5 text-sm", "flex items-center gap-2 bg-custom-background-80 border-b border-custom-border-200 px-4 py-2.5 text-sm",
@@ -32,4 +33,5 @@ export const ContentLimitBanner: React.FC<Props> = ({ className, onDismiss }) =>
</button> </button>
)} )}
</div> </div>
); );
}

View File

@@ -254,6 +254,7 @@ export const PageEditorBody = observer(function PageEditorBody(props: Props) {
</div> </div>
</div> </div>
)} )}
<div>
<div className="page-header-container group/page-header"> <div className="page-header-container group/page-header">
<div className={blockWidthClassName}> <div className={blockWidthClassName}>
<PageEditorHeaderRoot page={page} projectId={projectId} /> <PageEditorHeaderRoot page={page} projectId={projectId} />
@@ -292,6 +293,7 @@ export const PageEditorBody = observer(function PageEditorBody(props: Props) {
isFetchingFallbackBinary={isFetchingFallbackBinary} isFetchingFallbackBinary={isFetchingFallbackBinary}
/> />
</div> </div>
</div>
</Row> </Row>
); );
}); });

View File

@@ -43,7 +43,7 @@ type TPageRootProps = {
customRealtimeEventHandlers?: TCustomEventHandlers; customRealtimeEventHandlers?: TCustomEventHandlers;
}; };
export const PageRoot = observer((props: TPageRootProps) => { export const PageRoot = observer(function PageRoot(props: TPageRootProps) {
const { const {
config, config,
handlers, handlers,

View File

@@ -6,7 +6,7 @@ type Props = {
syncStatus: "syncing" | "synced" | "error"; syncStatus: "syncing" | "synced" | "error";
}; };
export const PageSyncingBadge = ({ syncStatus }: Props) => { export function PageSyncingBadge({ syncStatus }: Props) {
const [prevSyncStatus, setPrevSyncStatus] = useState<"syncing" | "synced" | "error" | null>(null); const [prevSyncStatus, setPrevSyncStatus] = useState<"syncing" | "synced" | "error" | null>(null);
const [isVisible, setIsVisible] = useState(syncStatus !== "synced"); const [isVisible, setIsVisible] = useState(syncStatus !== "synced");
@@ -69,4 +69,4 @@ export const PageSyncingBadge = ({ syncStatus }: Props) => {
</div> </div>
</Tooltip> </Tooltip>
); );
}; }

View File

@@ -15,7 +15,7 @@ import { useCollaborativeEditor } from "@/hooks/use-collaborative-editor";
import type { EditorRefApi, ICollaborativeDocumentEditorProps } from "@/types"; import type { EditorRefApi, ICollaborativeDocumentEditorProps } from "@/types";
// Inner component that has access to collaboration context // Inner component that has access to collaboration context
const CollaborativeDocumentEditorInner: React.FC<ICollaborativeDocumentEditorProps> = (props) => { function CollaborativeDocumentEditorInner(props: ICollaborativeDocumentEditorProps) {
const { const {
aiHandler, aiHandler,
bubbleMenuEnabled = true, bubbleMenuEnabled = true,
@@ -129,10 +129,10 @@ const CollaborativeDocumentEditorInner: React.FC<ICollaborativeDocumentEditorPro
</div> </div>
</> </>
); );
}; }
// Outer component that provides collaboration context // Outer component that provides collaboration context
const CollaborativeDocumentEditor: React.FC<ICollaborativeDocumentEditorProps> = (props) => { function CollaborativeDocumentEditor(props: ICollaborativeDocumentEditorProps) {
const { id, realtimeConfig, serverHandler, user } = props; const { id, realtimeConfig, serverHandler, user } = props;
const token = useMemo(() => JSON.stringify(user), [user]); const token = useMemo(() => JSON.stringify(user), [user]);
@@ -147,13 +147,16 @@ const CollaborativeDocumentEditor: React.FC<ICollaborativeDocumentEditorProps> =
<CollaborativeDocumentEditorInner {...props} /> <CollaborativeDocumentEditorInner {...props} />
</CollaborationProvider> </CollaborationProvider>
); );
}; }
const CollaborativeDocumentEditorWithRef = React.forwardRef<EditorRefApi, ICollaborativeDocumentEditorProps>( const CollaborativeDocumentEditorWithRef = React.forwardRef(function CollaborativeDocumentEditorWithRef(
(props, ref) => ( props: ICollaborativeDocumentEditorProps,
ref: React.ForwardedRef<EditorRefApi>
) {
return (
<CollaborativeDocumentEditor key={props.id} {...props} forwardedRef={ref as React.MutableRefObject<EditorRefApi>} /> <CollaborativeDocumentEditor key={props.id} {...props} forwardedRef={ref as React.MutableRefObject<EditorRefApi>} />
) );
); });
CollaborativeDocumentEditorWithRef.displayName = "CollaborativeDocumentEditorWithRef"; CollaborativeDocumentEditorWithRef.displayName = "CollaborativeDocumentEditorWithRef";

View File

@@ -26,7 +26,7 @@ type Props = {
state?: TCollabValue["state"]; state?: TCollabValue["state"];
}; };
export const EditorContainer: FC<Props> = (props) => { export function EditorContainer(props: Props) {
const { children, displayConfig, editor, editorContainerClassName, id, isTouchDevice, provider, state } = props; const { children, displayConfig, editor, editorContainerClassName, id, isTouchDevice, provider, state } = props;
// refs // refs
const containerRef = useRef<HTMLDivElement>(null); const containerRef = useRef<HTMLDivElement>(null);
@@ -176,4 +176,4 @@ export const EditorContainer: FC<Props> = (props) => {
</div> </div>
</> </>
); );
}; }

View File

@@ -1,6 +1,6 @@
import { EditorContent } from "@tiptap/react"; import { EditorContent } from "@tiptap/react";
import type { Editor } from "@tiptap/react"; import type { Editor } from "@tiptap/react";
import type { FC, ReactNode } from "react"; import type { ReactNode } from "react";
type Props = { type Props = {
className?: string; className?: string;
@@ -10,7 +10,7 @@ type Props = {
tabIndex?: number; tabIndex?: number;
}; };
export const EditorContentWrapper: FC<Props> = (props) => { export function EditorContentWrapper(props: Props) {
const { editor, className, children, tabIndex, id } = props; const { editor, className, children, tabIndex, id } = props;
return ( return (
@@ -23,4 +23,4 @@ export const EditorContentWrapper: FC<Props> = (props) => {
{children} {children}
</div> </div>
); );
}; }

View File

@@ -13,7 +13,7 @@ import { getEditorRefHelpers } from "@/helpers/editor-ref";
import type { IEditorPropsExtended, IEditorProps } from "@/types"; import type { IEditorPropsExtended, IEditorProps } from "@/types";
import type { EditorTitleRefApi, ICollaborativeDocumentEditorProps } from "@/types/editor"; import type { EditorTitleRefApi, ICollaborativeDocumentEditorProps } from "@/types/editor";
type Props = { type TUseTitleEditorProps = {
editable?: boolean; editable?: boolean;
provider: HocuspocusProvider; provider: HocuspocusProvider;
titleRef?: React.MutableRefObject<EditorTitleRefApi | null>; titleRef?: React.MutableRefObject<EditorTitleRefApi | null>;
@@ -31,7 +31,7 @@ type Props = {
* A hook that creates a title editor with collaboration features * A hook that creates a title editor with collaboration features
* Uses the same Y.Doc as the main editor but a different field * Uses the same Y.Doc as the main editor but a different field
*/ */
export const useTitleEditor = (props: Props) => { export const useTitleEditor = (props: TUseTitleEditorProps) => {
const { const {
editable = true, editable = true,
id, id,