diff --git a/package.json b/package.json index fbace873b..8e1790d11 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "vite": "6.2.6" }, "dependencies": { + "@xterm/addon-canvas": "^0.7.0", "@xterm/addon-fit": "^0.10.0", "@xterm/addon-search": "^0.15.0", "@xterm/addon-web-links": "^0.11.0", diff --git a/resources/js/console.js b/resources/js/console.js index 9a5c0cfc8..11ea6ab77 100644 --- a/resources/js/console.js +++ b/resources/js/console.js @@ -3,9 +3,11 @@ import { FitAddon } from '@xterm/addon-fit'; import { WebLinksAddon } from '@xterm/addon-web-links'; import { SearchAddon } from '@xterm/addon-search'; import { SearchBarAddon } from 'xterm-addon-search-bar'; +import { CanvasAddon } from '@xterm/addon-canvas'; window.Xterm = { Terminal, + CanvasAddon, FitAddon, WebLinksAddon, SearchAddon, diff --git a/resources/views/filament/components/server-console.blade.php b/resources/views/filament/components/server-console.blade.php index 9bebfa357..ede21e698 100644 --- a/resources/views/filament/components/server-console.blade.php +++ b/resources/views/filament/components/server-console.blade.php @@ -76,17 +76,19 @@ theme: theme }; - const { Terminal, FitAddon, WebLinksAddon, SearchAddon, SearchBarAddon } = window.Xterm; + const { Terminal, FitAddon, WebLinksAddon, SearchAddon, SearchBarAddon, CanvasAddon } = window.Xterm; const terminal = new Terminal(options); const fitAddon = new FitAddon(); const webLinksAddon = new WebLinksAddon(); const searchAddon = new SearchAddon(); const searchAddonBar = new SearchBarAddon({ searchAddon }); + const canvasAddon = new CanvasAddon(); terminal.loadAddon(fitAddon); terminal.loadAddon(webLinksAddon); terminal.loadAddon(searchAddon); terminal.loadAddon(searchAddonBar); + terminal.loadAddon(canvasAddon); terminal.open(document.getElementById('terminal')); @@ -102,7 +104,7 @@ terminal.attachCustomKeyEventHandler((event) => { if ((event.ctrlKey || event.metaKey) && event.key === 'c') { - navigator.clipboard.writeText(terminal.getSelection()) + navigator.clipboard.writeText(terminal.getSelection()); return false; } else if ((event.ctrlKey || event.metaKey) && event.key === 'f') { event.preventDefault(); diff --git a/yarn.lock b/yarn.lock index a68d6570c..f921f5fa8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -415,6 +415,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== +"@xterm/addon-canvas@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@xterm/addon-canvas/-/addon-canvas-0.7.0.tgz#d3a3835f3634e0106e108661315ae14da23e8dd7" + integrity sha512-LF5LYcfvefJuJ7QotNRdRSPc9YASAVDeoT5uyXS/nZshZXjYplGXRECBGiznwvhNL2I8bq1Lf5MzRwstsYQ2Iw== + "@xterm/addon-fit@^0.10.0": version "0.10.0" resolved "https://registry.yarnpkg.com/@xterm/addon-fit/-/addon-fit-0.10.0.tgz#bebf87fadd74e3af30fdcdeef47030e2592c6f55"