"use client"; import { usePipelinePreview } from "@/hooks/use-pipeline-preview"; import type { RenderPreviewInput } from "@/lib/canvas-render-preview"; const EMPTY_STEPS: RenderPreviewInput["steps"] = []; type CompareSurfaceProps = { finalUrl?: string; label?: string; previewInput?: RenderPreviewInput; nodeWidth: number; clipWidthPercent?: number; preferPreview?: boolean; }; export default function CompareSurface({ finalUrl, label, previewInput, nodeWidth, clipWidthPercent, preferPreview, }: CompareSurfaceProps) { const usePreview = Boolean(previewInput && (preferPreview || !finalUrl)); const previewSourceUrl = usePreview ? previewInput?.sourceUrl ?? null : null; const previewSteps = usePreview ? previewInput?.steps ?? EMPTY_STEPS : EMPTY_STEPS; const visibleFinalUrl = usePreview ? undefined : finalUrl; const { canvasRef, isRendering, error } = usePipelinePreview({ sourceUrl: previewSourceUrl, steps: previewSteps, nodeWidth, previewScale: 0.7, maxPreviewWidth: 960, }); const hasPreview = Boolean(usePreview && previewInput); const clipStyle = typeof clipWidthPercent === "number" ? { clipPath: `inset(0 ${100 - clipWidthPercent}% 0 0)`, WebkitClipPath: `inset(0 ${100 - clipWidthPercent}% 0 0)`, } : undefined; return (