import type { NodeViewProps } from "@tiptap/react";
import { NodeViewWrapper } from "@tiptap/react";
import { Loader2 } from "lucide-react";
import { PageMentionContent } from "@/shared/editor/presentation/page-mention";
import { getPageMentionViewState } from "../../lib/page-mention/view-state";
import { usePageMentionEntry, usePageMentionNavigate } from "@/client/components/page-mention/context";
export function PageMentionView({ node }: NodeViewProps) {
const pageId = node.attrs.pageId as string | null;
const entry = usePageMentionEntry(pageId);
const navigate = usePageMentionNavigate();
if (!pageId) {
return (
);
}
const viewState = getPageMentionViewState(entry);
const canNavigate = viewState.kind === "accessible";
const handleClick = (e: React.MouseEvent) => {
if (viewState.kind !== "accessible") return;
e.preventDefault();
navigate(pageId);
};
const handleKeyDown = (e: React.KeyboardEvent) => {
if (viewState.kind !== "accessible") return;
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
navigate(pageId);
}
};
if (viewState.kind === "restricted") {
return (
);
}
if (viewState.kind === "pending") {
return (
} label={viewState.label} />
);
}
return (
);
}