mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-12-14 08:06:22 +00:00
Update script-terminal-modal.tsx
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user