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
P
{asset.name || 'PowerPoint'}{slides.length ? tt('ppt.pages', { count: slides.length }) : 'PPTX'}
{tt('ppt.downloadDeck')} {onExpand ? : null}
{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}
}
}