"use client";
import { Button } from "@/components/ui/button";
import Tab from "@/components/ui/tab";
import { closeTerminal } from "@/lib/terminal";
import { Terminal } from "@xterm/xterm";
import { Loader2, Plus, SquareTerminal, TerminalSquare } from "lucide-react";
import { toast } from "sonner";
import EditorTerminal from "./terminal";
import { useState } from "react";
import { useTerminal } from "@/context/TerminalContext";
export default function Terminals() {
const { terminals, setTerminals, socket, createNewTerminal } = useTerminal();
const [activeTerminalId, setActiveTerminalId] = useState("");
const [creatingTerminal, setCreatingTerminal] = useState(false);
const [closingTerminal, setClosingTerminal] = useState("");
const activeTerminal = terminals.find((t) => t.id === activeTerminalId);
return (
<>
{terminals.map((term) => (
setActiveTerminalId(term.id)}
onClose={() =>
closeTerminal({
term,
terminals,
setTerminals,
setActiveTerminalId,
setClosingTerminal,
socket: socket!,
activeTerminalId,
})
}
closing={closingTerminal === term.id}
selected={activeTerminalId === term.id}
>
Shell
))}
{socket && activeTerminal ? (
{terminals.map((term) => (
{
setTerminals((prev) =>
prev.map((term) =>
term.id === activeTerminalId
? { ...term, terminal: t }
: term
)
);
}}
visible={activeTerminalId === term.id}
/>
))}
) : (
No terminals open.
)}
>
);
}