From c6532968219417baaa6a59ea7299179332894e79 Mon Sep 17 00:00:00 2001 From: Andrea Giammarchi Date: Fri, 12 Apr 2024 16:25:12 +0200 Subject: [PATCH] Added @xterm/addon-web-links to the terminal (#2027) * Added @xterm/addon-web-links to the terminal * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- pyscript.core/package-lock.json | 14 ++++++++++++-- pyscript.core/package.json | 3 ++- pyscript.core/rollup/3rd-party.cjs | 3 +++ pyscript.core/src/plugins/py-terminal.js | 15 ++++++++++----- .../types/3rd-party/xterm_addon-web-links.d.ts | 4 ++++ 5 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 pyscript.core/types/3rd-party/xterm_addon-web-links.d.ts diff --git a/pyscript.core/package-lock.json b/pyscript.core/package-lock.json index 1e8c9fd3209..2e4b208c4f6 100644 --- a/pyscript.core/package-lock.json +++ b/pyscript.core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@pyscript/core", - "version": "0.4.20", + "version": "0.4.21", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@pyscript/core", - "version": "0.4.20", + "version": "0.4.21", "license": "APACHE-2.0", "dependencies": { "@ungap/with-resolvers": "^0.1.0", @@ -28,6 +28,7 @@ "@rollup/plugin-terser": "^0.4.4", "@webreflection/toml-j0.4": "^1.1.3", "@xterm/addon-fit": "^0.10.0", + "@xterm/addon-web-links": "^0.11.0", "chokidar": "^3.6.0", "codemirror": "^6.0.1", "eslint": "^9.0.0", @@ -717,6 +718,15 @@ "@xterm/xterm": "^5.0.0" } }, + "node_modules/@xterm/addon-web-links": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-web-links/-/addon-web-links-0.11.0.tgz", + "integrity": "sha512-nIHQ38pQI+a5kXnRaTgwqSHnX7KE6+4SVoceompgHL26unAxdfP6IPqUTSYPQgSwM56hsElfoNrrW5V7BUED/Q==", + "dev": true, + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, "node_modules/@xterm/xterm": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.4.0.tgz", diff --git a/pyscript.core/package.json b/pyscript.core/package.json index 17d6ab8aefe..b9c229f054a 100644 --- a/pyscript.core/package.json +++ b/pyscript.core/package.json @@ -1,6 +1,6 @@ { "name": "@pyscript/core", - "version": "0.4.20", + "version": "0.4.21", "type": "module", "description": "PyScript", "module": "./index.js", @@ -59,6 +59,7 @@ "@rollup/plugin-terser": "^0.4.4", "@webreflection/toml-j0.4": "^1.1.3", "@xterm/addon-fit": "^0.10.0", + "@xterm/addon-web-links": "^0.11.0", "chokidar": "^3.6.0", "codemirror": "^6.0.1", "eslint": "^9.0.0", diff --git a/pyscript.core/rollup/3rd-party.cjs b/pyscript.core/rollup/3rd-party.cjs index 28c34beb9c1..44ffd16b1ea 100644 --- a/pyscript.core/rollup/3rd-party.cjs +++ b/pyscript.core/rollup/3rd-party.cjs @@ -51,6 +51,9 @@ const modules = { "xterm_addon-fit.js": fetch(`${CDN}/@xterm/addon-fit/+esm`).then((b) => b.text(), ), + "xterm_addon-web-links.js": fetch( + `${CDN}/@xterm/addon-web-links/+esm`, + ).then((b) => b.text()), "xterm.css": fetch(`${CDN}/xterm@${v("xterm")}/css/xterm.min.css`).then( (b) => b.text(), ), diff --git a/pyscript.core/src/plugins/py-terminal.js b/pyscript.core/src/plugins/py-terminal.js index 6bc26a4830b..54f1cdad382 100644 --- a/pyscript.core/src/plugins/py-terminal.js +++ b/pyscript.core/src/plugins/py-terminal.js @@ -134,11 +134,15 @@ const workerReady = ({ interpreter, io, run, type }, { sync }) => { const pyTerminal = async (element) => { // lazy load these only when a valid terminal is found - const [{ Terminal }, { Readline }, { FitAddon }] = await Promise.all([ - import(/* webpackIgnore: true */ "../3rd-party/xterm.js"), - import(/* webpackIgnore: true */ "../3rd-party/xterm-readline.js"), - import(/* webpackIgnore: true */ "../3rd-party/xterm_addon-fit.js"), - ]); + const [{ Terminal }, { Readline }, { FitAddon }, { WebLinksAddon }] = + await Promise.all([ + import(/* webpackIgnore: true */ "../3rd-party/xterm.js"), + import(/* webpackIgnore: true */ "../3rd-party/xterm-readline.js"), + import(/* webpackIgnore: true */ "../3rd-party/xterm_addon-fit.js"), + import( + /* webpackIgnore: true */ "../3rd-party/xterm_addon-web-links.js" + ), + ]); const readline = new Readline(); @@ -167,6 +171,7 @@ const pyTerminal = async (element) => { const fitAddon = new FitAddon(); terminal.loadAddon(fitAddon); terminal.loadAddon(readline); + terminal.loadAddon(new WebLinksAddon()); terminal.open(target); fitAddon.fit(); terminal.focus(); diff --git a/pyscript.core/types/3rd-party/xterm_addon-web-links.d.ts b/pyscript.core/types/3rd-party/xterm_addon-web-links.d.ts new file mode 100644 index 00000000000..5d1e051502b --- /dev/null +++ b/pyscript.core/types/3rd-party/xterm_addon-web-links.d.ts @@ -0,0 +1,4 @@ +declare var r: any; +declare var n: any; +declare var t: {}; +export { r as WebLinksAddon, n as __esModule, t as default };