import { NodeViewProps, NodeViewWrapper } from "@tiptap/react"; import { Group, Loader, Text } from "@mantine/core"; import { useMemo } from "react"; import { getFileUrl } from "@/lib/config.ts"; import clsx from "clsx"; import classes from "./video-view.module.css"; import { useTranslation } from "react-i18next"; export default function VideoView(props: NodeViewProps) { const { t } = useTranslation(); const { editor, node, selected } = props; const { src, width, align, aspectRatio, placeholder } = node.attrs; const alignClass = useMemo(() => { if (align === "left") return "alignLeft"; if (align === "right") return "alignRight"; if (align === "center") return "alignCenter"; return "alignCenter"; }, [align]); const previewSrc = useMemo(() => { editor.storage.shared.videoPreviews = editor.storage.shared.videoPreviews || {}; if (placeholder?.id) { return editor.storage.shared.videoPreviews[placeholder.id]; } return null; }, [placeholder, editor]); return (
{src && (
); }