"use client"; import { ChevronLeft, ChevronRight, X } from "lucide-react"; import { useEffect, useState } from "react"; import type { PlaitElement } from "@plait/core"; import { getTopicEntries, getTopicTitle } from "@/lib/flow-board/topic-details"; export function XmindPresentation({ elements, title, onClose }: { elements: PlaitElement[]; title: string; onClose: () => void }) { const slides = getTopicEntries(elements).filter(({ element, depth }) => depth === 0 || element.children?.length); const [index,setIndex] = useState(0); const entry = slides[Math.min(index,slides.length - 1)]; const next = () => setIndex(value => Math.min(slides.length - 1,value + 1)); const previous = () => setIndex(value => Math.max(0,value - 1)); useEffect(() => { const onKey = (event: KeyboardEvent) => { if (event.key === "Escape") { event.preventDefault(); onClose(); } if (["ArrowRight","ArrowDown"," ","PageDown"].includes(event.key)) { event.preventDefault(); next(); } if (["ArrowLeft","ArrowUp","PageUp"].includes(event.key)) { event.preventDefault(); previous(); } }; window.addEventListener("keydown",onKey); return () => window.removeEventListener("keydown",onKey); }, [onClose,slides.length]); return
{title}

{entry?.title || title}

; }