import { useEffect, useState } from 'react'
import { Maximize2 } from 'lucide-react'
import type { CanvasAssetRef, CanvasSlidePreview } from '../protocol.ts'
import type { ImageGenApi } from './api.ts'
import { useFilePreview } from './CanvasFilePreview.tsx'
import { tt } from './helpers.ts'
import css from './ppt-workspace.module.css'
function SlideContent({ slide, compact = false }: { slide: CanvasSlidePreview; compact?: boolean }) {
return
{slide.title ?
{slide.title}
: null}
{slide.images.length ?
{slide.images.map((image, index) =>

)}
: null}
{(compact ? slide.lines.slice(0, 4) : slide.lines).map((line, index) =>
{line}
)}
}
/** Read the generated PPTX itself, never use its input images as slide previews. */
export function PptDeckPreview({ api, asset, onExpand }: { api: ImageGenApi; asset: CanvasAssetRef; onExpand?: () => void }) {
const { preview, error, reload } = useFilePreview(api, asset, true)
const [page, setPage] = useState(0)
const slides = preview?.kind === 'slides' ? preview.slides : []
const index = Math.min(page, Math.max(0, slides.length - 1))
const slide = slides[index]
useEffect(() => { setPage(0) }, [asset.assetId])
return
{slide ? <>
{preview?.kind === 'slides' && preview.truncated ?
{tt('canvas.preview.slidesTruncated', { count: slides.length })}
: null}
> :
PPTX{error ? tt('canvas.preview.failed', { message: error }) : preview ? tt('canvas.preview.empty') : tt('canvas.skills.filePreviewLoading')}
{error ?
: null}
}
}