"use client"; import React, { useMemo, useState, type FormEvent } from "react"; import SlideErrorBoundary from "../components/SlideErrorBoundary"; import { ArrowUp, PenLine } from "lucide-react"; import { type TemplateV2Layout, } from "@/components/slide-editor/importing/template-v2-import"; import { TemplateV2KonvaSlide } from "@/components/slide-editor/surface/TemplateV2KonvaSlide"; import { TemplateV2HtmlSlidePreview } from "./TemplateV2HtmlSlidePreview"; import { BLANK_TEMPLATE_V2_LAYOUT, isBlankPresentationSlide } from "../_shared/blank-slide"; import { PRESENTON_BLANK_SLIDE_PROMPT_EVENT, type BlankSlidePromptEventDetail, } from "../_shared/blank-slide-prompt-event"; const TEMPLATE_V2_PREVIEW_SCALE = 0.085; function createTemplateV2PromptPreviewSlide( layout: TemplateV2Layout, slideIndex: number, ) { return { id: `template-v2-prompt-preview-${slideIndex}`, content: {}, ui: layout, layout: typeof layout.id === "string" ? layout.id : `slide-${slideIndex}`, layout_group: "template-v2", }; } function TemplateV2PromptOverlay({ layout, slideIndex, showLayoutPreview, onDismiss, }: { layout: TemplateV2Layout; slideIndex: number; showLayoutPreview: boolean; onDismiss?: () => void; }) { const [prompt, setPrompt] = useState(""); const [isPromptVisible, setIsPromptVisible] = useState(true); const dismissPrompt = () => { setIsPromptVisible(false); onDismiss?.(); }; const submitPrompt = (event: FormEvent) => { event.preventDefault(); const trimmedPrompt = prompt.trim(); if (!trimmedPrompt || typeof window === "undefined") return; window.dispatchEvent( new CustomEvent( PRESENTON_BLANK_SLIDE_PROMPT_EVENT, { detail: { prompt: trimmedPrompt, slideIndex, layoutId: typeof layout.id === "string" ? layout.id : null, promptKind: showLayoutPreview ? "layout" : "blank", layout: showLayoutPreview ? layout : null, }, }, ), ); setPrompt(""); dismissPrompt(); }; if (!isPromptVisible) return null; return (