Update script-terminal-modal.tsx

This commit is contained in:
MacRimi
2025-12-10 17:01:17 +01:00
parent cbb44ae253
commit cbf510cfd1

View File

@@ -9,7 +9,8 @@ import { Label } from "@/components/ui/label"
import { Loader2, GripHorizontal, X } 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 WebLinksAddon from "xterm-addon-web-links" import { Terminal as XTerm, FitAddon } from "xterm"
import "xterm/css/xterm.css"
interface WebInteraction { interface WebInteraction {
type: "yesno" | "menu" | "msgbox" | "input" | "inputbox" type: "yesno" | "menu" | "msgbox" | "input" | "inputbox"
@@ -46,10 +47,9 @@ export default function ScriptTerminalModal({
title, title,
description, description,
}: ScriptTerminalModalProps) { }: ScriptTerminalModalProps) {
const termRef = useRef<any>(null) const termRef = useRef<XTerm | null>(null)
const fitAddonRef = useRef<FitAddon | null>(null)
const wsRef = useRef<WebSocket | null>(null) const wsRef = useRef<WebSocket | null>(null)
const fitAddonRef = useRef<any>(null)
const webLinksAddonRef = useRef<any>(null)
const sessionIdRef = useRef<string>(Math.random().toString(36).substring(2, 8)) const sessionIdRef = useRef<string>(Math.random().toString(36).substring(2, 8))
const [exitCode, setExitCode] = useState<number | null>(null) const [exitCode, setExitCode] = useState<number | null>(null)
@@ -86,13 +86,7 @@ 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([ const term = new XTerm({
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({
rendererType: "dom", rendererType: "dom",
fontFamily: '"Courier", "Courier New", "Liberation Mono", "DejaVu Sans Mono", monospace', fontFamily: '"Courier", "Courier New", "Liberation Mono", "DejaVu Sans Mono", monospace',
fontSize: fontSize, fontSize: fontSize,
@@ -128,15 +122,12 @@ export default function ScriptTerminalModal({
}) })
const fitAddon = new FitAddon() const fitAddon = new FitAddon()
const webLinksAddon = new WebLinksAddon()
term.loadAddon(fitAddon) term.loadAddon(fitAddon)
term.loadAddon(webLinksAddon)
console.log("[v0] Opening terminal in container...") console.log("[v0] Opening terminal in container...")
term.open(node) term.open(node)
termRef.current = term termRef.current = term
fitAddonRef.current = fitAddon fitAddonRef.current = fitAddon
webLinksAddonRef.current = webLinksAddon
setTimeout(() => { setTimeout(() => {
try { try {