diff --git a/package-lock.json b/package-lock.json index 8cf3892..6a5aa67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-jsonschema-form": "^1.8.1", + "react-new-window": "^1.0.1", "react-router-dom": "^6.19.0", "react-routes": "^0.2.6", "react-scripts": "5.0.1", @@ -14325,6 +14326,19 @@ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, + "node_modules/react-new-window": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-new-window/-/react-new-window-1.0.1.tgz", + "integrity": "sha512-pLQlq5NzMxNocXKPIwkXfAxSOZmbpWSbP8QrxCbunpHcx4k249YChkk7l/7P4jjwxq3dI/xwL3nVHLp6h5zM3w==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^16.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^18.0.0" + } + }, "node_modules/react-refresh": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", diff --git a/package.json b/package.json index bb3c5b5..e5456f4 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-jsonschema-form": "^1.8.1", + "react-new-window": "^1.0.1", "react-router-dom": "^6.19.0", "react-routes": "^0.2.6", "react-scripts": "5.0.1", diff --git a/src/terminal.tsx b/src/terminal.tsx index eaaeaad..bebaad4 100644 --- a/src/terminal.tsx +++ b/src/terminal.tsx @@ -1,5 +1,6 @@ // src/components/Terminal.tsx import React, { useEffect, useRef } from 'react'; +import NewWindow from 'react-new-window'; import { Terminal } from 'xterm'; import { FitAddon } from 'xterm-addon-fit'; import 'xterm/css/xterm.css'; @@ -77,7 +78,7 @@ function TerminalComponent (p: {websocket: string|null}) { useTerminalResize(terminalRef, fitAddon.current!) - return
; + return