Update script-terminal-modal.tsx

This commit is contained in:
MacRimi
2025-12-10 16:56:56 +01:00
parent 4dd4f045aa
commit cbb44ae253

View File

@@ -2,17 +2,14 @@
import type React from "react" import type React from "react"
import { useState, useEffect, useRef, useCallback } from "react" import { useState, useEffect, useRef, useCallback } from "react"
import { Dialog, DialogContent, DialogTitle } from "@/components/ui/dialog" import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input" import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label" import { Label } from "@/components/ui/label"
import { Loader2, GripHorizontal } from "lucide-react" import { Loader2, GripHorizontal, X } from "lucide-react"
import { API_PORT } from "../lib/api-config" import { API_PORT } from "@/lib/api-config"
import { useIsMobile } from "@/hooks/use-mobile" import { useIsMobile } from "@/hooks/use-mobile"
import { Terminal } from "@xterm/xterm" import WebLinksAddon from "xterm-addon-web-links"
import { FitAddon } from "@xterm/addon-fit"
import { WebLinksAddon } from "@xterm/addon-web-links"
import "@xterm/xterm/css/xterm.css"
interface WebInteraction { interface WebInteraction {
type: "yesno" | "menu" | "msgbox" | "input" | "inputbox" type: "yesno" | "menu" | "msgbox" | "input" | "inputbox"
@@ -89,6 +86,12 @@ export default function ScriptTerminalModal({
console.log("[v0] Creating terminal instance...") console.log("[v0] Creating terminal instance...")
const fontSize = window.innerWidth < 768 ? 12 : 16 const fontSize = window.innerWidth < 768 ? 12 : 16
const [Terminal, FitAddon] = await Promise.all([
import("xterm").then((mod) => mod.Terminal),
import("xterm-addon-fit").then((mod) => mod.FitAddon),
import("xterm/css/xterm.css"),
]).then(([Terminal, FitAddon]) => [Terminal, FitAddon])
const term = new Terminal({ const term = new Terminal({
rendererType: "dom", rendererType: "dom",
fontFamily: '"Courier", "Courier New", "Liberation Mono", "DejaVu Sans Mono", monospace', fontFamily: '"Courier", "Courier New", "Liberation Mono", "DejaVu Sans Mono", monospace',
@@ -453,14 +456,12 @@ export default function ScriptTerminalModal({
onInteractOutside={(e) => e.preventDefault()} onInteractOutside={(e) => e.preventDefault()}
onEscapeKeyDown={(e) => e.preventDefault()} onEscapeKeyDown={(e) => e.preventDefault()}
> >
<div className="flex items-center justify-between border-b px-6 py-4"> <DialogHeader className="flex items-center justify-between border-b px-6 py-4">
<div className="flex items-center gap-3">
<DialogTitle className="text-xl font-semibold">{scriptName}</DialogTitle> <DialogTitle className="text-xl font-semibold">{scriptName}</DialogTitle>
</div>
<Button variant="ghost" size="icon" onClick={onClose}> <Button variant="ghost" size="icon" onClick={onClose}>
<GripHorizontal className="h-4 w-4" /> <X className="h-4 w-4" />
</Button> </Button>
</div> </DialogHeader>
<div className="overflow-hidden relative flex-1"> <div className="overflow-hidden relative flex-1">
<div ref={terminalContainerRef} className="w-full h-full" /> <div ref={terminalContainerRef} className="w-full h-full" />